$30 off During Our Annual Pro Sale. View Details »

Программирование – 1 курс весна 2022 – 5 занятие

Программирование – 1 курс весна 2022 – 5 занятие

ТиМПИ

March 22, 2022
Tweet

More Decks by ТиМПИ

Other Decks in Programming

Transcript

  1. 22 марта 2022
    [email protected]
    Федор Витальевич Бушмелев
    Введение в ООП
    (часть 2)

    View Slide

  2. 2/31
    2/31
    Повторение: вопрос 1
    1. Дать определение ООП в целом. Чем оно отличается от структурного.
    2. Дать определение «структура».
    3. Что такое классы, объекты?
    4. Что такое представитель и экземпляр классов?
    5. Что такое свойства и поведение?

    View Slide

  3. 3/31
    3/31
    Повторение: класс и объект
    Класс Объект
    — это описание того, какими свойствами и
    поведением будет обладать объект
    — это экземпляр с собственным
    состоянием этих свойств

    View Slide

  4. 4/31
    4/31
    Повторение: представитель и экземпляр
    class Cat {
    int mood, hungry, energy;
    void Meow();
    };
    Cat Barsik;
    Cat* Murzik = new Cat;
    представитель класса
    экземпляр класса
    private — закрытые (по умолчанию)
    public — открытые

    View Slide

  5. 5/31
    5/31
    Повторение: вопрос 2
    1. Дать определения понятиям: полимофизм, наследование и инкапсуляция.
    2. Что такое геттеры, сеттеры?
    3. Сколько может быть конструкторов и деструкторов?
    4. Что будет если описать класс без них?
    5. Могут ли они быть приватными? Где это может использоваться?
    6. Что такое делегирующий конструктор?

    View Slide

  6. 6/31
    6/31
    Повторение: три кита ООП
    Инкапсуляция — это процесс скрытого хранения деталей реализации объекта. Пользователи обращаются к
    объекту через открытый интерфейс (геттеры, сеттеры).
    Наследование – образование новых классов на основе ранее созданных.
    Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе
    и внутренней структуре объекта за счет чего достигается (возможность) использование методов базового класса и
    дочерных.
    Функции доступа обычно бывают двух типов:
    • геттеры — это функции, которые возвращают значения закрытых переменных-членов класса;
    • сеттеры — это функции, которые позволяют присваивать значения закрытым переменным-членам класса.
    Правило: Геттеры должны использовать тип возврата по значению или по константной ссылке.
    Не используйте для геттеров тип возврата по неконстантной ссылке.

    View Slide

  7. 7/31
    7/31
    Конструктор копирования по умолчанию 1/2
    Что выведет?

    View Slide

  8. 8/31
    8/31
    Конструктор копирования по умолчанию 2/2
    Что выведет?
    А вот что!

    View Slide

  9. 9/31
    9/31
    Копирование конструктором
    И по итогу получим:

    View Slide

  10. 10/31
    10/31
    Конструктор копирования 1/2
    Barsik
    myCat

    View Slide

  11. 11/31
    11/31
    Конструктор копирования по умолчанию 2/2
    Barsik
    myCat

    View Slide

  12. 12/31
    12/31
    Статические переменные 1/5

    View Slide

  13. 13/31
    13/31
    Статические переменные 2/5
    Статические переменные
    должны быть
    инициализированы!

    View Slide

  14. 14/31
    14/31
    Статические переменные 3/5
    А что если…

    View Slide

  15. 15/31
    15/31
    Статические переменные 4/5
    …если так…

    View Slide

  16. 16/31
    16/31
    Статические переменные 5/5
    …если еще так…

    View Slide

  17. 17/31
    17/31
    Статические функции 1/4
    Вывод:

    View Slide

  18. 18/31
    18/31
    Статические функции 2/4

    View Slide

  19. 19/31
    19/31
    Статические функции 3/4

    View Slide

  20. 20/31
    20/31
    Статические функции 4/4
    Использование методов без создания объекта

    View Slide

  21. 21/31
    21/31
    Агрегация классов

    View Slide

  22. 22/31
    22/31
    Декомпозиция классов

    View Slide

  23. 23/31
    23/31
    Модификаторы доступа

    View Slide

  24. 24/31
    24/31
    Наследование 1/6
    Базовый класс
    Дочерние/производные
    классы
    Наследование – это
    свойство системы,
    позволяющее описать
    новый класс на основе
    уже существующего с
    частично или полностью
    заимствующейся
    функциональностью.

    View Slide

  25. 25/31
    25/31
    Наследование 2/6

    View Slide

  26. 26/31
    26/31
    Наследование 3/6

    View Slide

  27. 27/31
    27/31
    Наследование 4/6
    class “дочерний класс” : _модификатор_доступа_ “базовый класс”

    View Slide

  28. 28/31
    28/31
    Наследование 5/6

    View Slide

  29. 29/31
    29/31
    Наследование 6/6

    View Slide

  30. 30/31
    30/31
    Модификаторы доступа при наследовании
    Исходный модификатор доступа
    public private protected
    public-
    наследование
    public Недоступен protected
    private-
    наследование
    private Недоступен private
    protected-
    наследование
    protected Недоступен protected

    View Slide

  31. 22 марта 2022
    [email protected]
    Федор Витальевич Бушмелев
    Введение в ООП
    (часть 2)

    View Slide