💀
Второй курс РПО
Разработка программных модулей
Разработка программных модулей
  • Модели разработки
  • Ошибки и отладка программ
  • Средства разработки алгоритмов
    • Основные принципы и стадии тестирования
  • Сложностные классы
  • Эмуляторы операционных систем
  • Сложность сортировки
  • Уровни тестирования
  • Задание №1
  • Регрессионное тестирование
  • Тестирование «белым ящиком»
  • Как делать оценку сложности?
  • Алгоритмы и сложность
  • Тестирование "белым ящиком" №2
  • Сложность алгоритмов
  • Тестирование "белым ящиком" №3
  • Тестирование "Чёрным ящиком»" №1
  • Тестирование "Черным ящиком" №2
  • Оценка сложности эвристических алгоритмов
  • Принципы ООП
  • Тестирование "Черным ящиком" №3
  • КТ - В3
  • Модульное тестирование
    • С кодами
  • Модульное тестирование
  • Абстрактные классы и интерфейсы в Python
  • Структуры в Python по аналогии с C++
    • Диалоги гениев
  • Делегаты в Python
    • Ещё более не смешные диалоги
  • Регулярные выражения в Python от простого к сложному
  • Python: Коллекции
  • Параметризованные классы (шаблоны)
  • Указатели и операции со списками в Python
  • Интеграционное тестирование
  • Работа с классами. Перегрузка методов
  • Определение операций в классе.
  • Создание наследованных классов
  • Интеграционное тестирование
  • Работа с объектами через интерфейсы
  • Использование стандартных интерфейсов
  • Работа с типом данных "Структура"
  • Коллекции. Параметризованные классы
  • Использование регулярных выражений
  • Операции со списками
  • Что такое паттерны проектирования?
  • Шпаргалка по шаблонам проектирования
    • [Habr] Шпаргалка
  • UML-диаграммы проектирования
  • Использование основных шаблонов.
  • Использование каких то там шаблонов
  • 15-я Практическая
  • 16-я Практическая
  • Graphviz Online
  • 17-я Практическая
  • Введение в теорию программирования: Объектно-ориентированный подход
  • Документирование софта и стандарты
  • C# Ввод и вывод
  • Оптимизация кода: просто о главном
  • Автоматизация разработки технической документации
  • Автоматизированное документирование и первичные данные
  • ADO.NET что это?
Powered by GitBook
On this page
  • Что такое ООП?
  • Ключевые понятия
  • Основные принципы ООП
  • 1. Инкапсуляция
  • 2. Наследование
  • 3. Полиморфизм
  • Преимущества и недостатки ООП
  • Сравнение с процедурным подходом
  • Где используется ООП?

Введение в теорию программирования: Объектно-ориентированный подход

07.03.2025

Что такое ООП?

Объектно-ориентированное программирование — это способ организации кода, где основное внимание уделяется объектам. Объекты объединяют данные и действия, которые с ними можно выполнять.

Ключевые понятия

  • Объект: экземпляр класса, содержащий свойства и поведение. Пример: объект "Машина" с цветом "красный" и методом "ехать".

  • Класс: шаблон для создания объектов, задающий их структуру и возможности. Пример: класс "Машина" описывает, что у каждой машины есть скорость и метод "тормозить".

"ООП — это как строительство из LEGO: классы — это чертежи, а объекты — готовые фигурки." — Неизвестный разработчик


Основные принципы ООП

ООП базируется на трех столпах, которые делают его таким мощным инструментом.

1. Инкапсуляция

Инкапсуляция прячет внутренности объекта, предоставляя доступ только через специальные методы.

  • Данные скрыты (приватные свойства).

  • Доступ через публичные методы, например:

    class Car {
    private:
        string color;
    public:
        string getColor() { return color; }
        void setColor(string c) { color = c; }
    };

2. Наследование

Классы могут "перенимать" свойства и методы других классов.

  • Базовый класс: "Транспорт".

  • Производный класс: "Автомобиль".

  • Пример:

    class Vehicle {
    public:
        void move() { cout << "Движение\n"; }
    };
    class Car : public Vehicle {
    public:
        void honk() { cout << "Бип-бип!\n"; }
    };

3. Полиморфизм

Один интерфейс — разные реализации.

  • Метод "двигаться" у машины и велосипеда работает по-разному, но вызывается одинаково.

  • Пример кода с виртуальной функцией:

    class Vehicle {
    public:
        virtual void move() { cout << "Движение\n"; }
        virtual ~Vehicle() {}
    };
    class Car : public Vehicle {
    public:
        void move() override { cout << "Едет на колесах\n"; }
    };

Преимущества и недостатки ООП

Аспект

Преимущества

Недостатки

Модульность

Код разбит на объекты

Может быть избыточным для простых задач

Поддержка

Легко вносить изменения

Сложнее для новичков

Производительность

Гибкость и масштабируемость

Больше накладных расходов


Сравнение с процедурным подходом

Процедурное программирование фокусируется на функциях и последовательности шагов. ООП же смотрит на мир через призму объектов и их взаимодействий.

  • Процедурное: "Сначала вычисли это, потом сделай то."

  • ООП: "Вот объект, он сам знает, что делать."


Где используется ООП?

ООП идеально подходит для сложных систем:

  • Игры: персонажи, оружие, уровни — все это объекты.

  • Бизнес-приложения: пользователи, счета, транзакции.

Пример: в игре класс "Персонаж" может иметь свойства здоровье и методы атаковать.

class Character {
private:
    int health;
public:
    Character() : health(100) {}
    void attack() { cout << "Атака!\n"; }
    int getHealth() { return health; }
};
Previous17-я ПрактическаяNextДокументирование софта и стандарты

Last updated 2 months ago