- •Билет 1. Время жизни объектов. Связь с типами памяти и областями видимости
- •Билет 2. Области видимости. Связь с временем жизни и типами памяти.
- •Билет №3. Принципы ооп: абстрагирование, инкапсуляция, иерархичность, модульность
- •Билет №4.Классы и объекты, Члены классов. Статические члены классов.
- •Класс - принципиально новый тип данных, который создается программистом
- •Билет №5. Интерфейс и реализация. Чисто абстрактные классы. Интерфейс как ответственность (контракт)
- •Билет №6. Иерархии в объектно-ориентированной системе
- •Билет №7. Полиморфизм
- •Билет №9. Конструкторы – типы, использование. Деструкторы
- •Билет №10.Наследование. Область видимости. Разрешение имен.
- •Билет 11. Виртуальные методы, конструкторы, деструкторы и наследование
- •Билет 12. Инкапсуляция. Модификаторы доступа. Друзья класса
- •Билет №13. Перегрузка операторов. Общие правила.
- •Билет №14. Перегрузка операторов. Арифметические операторы
- •Билет №17. Шаблоны
- •Билет №18.Контейнеры и итераторы. Контейнеры и итераторы stl
- •Vector – поддерживает эффективный случайный доступ к элементам, добавление и удаление из хвоста последовательности
- •Билет №19. Обработка ошибок: исключения. Захват и освобождение ресурса. Когда нужно использовать механизм исключений.
- •Билет №20.Сигнатура методов: передача и возврат объектов.
- •Билет №23. Диаграмма последовательности uml
- •Объекты
- •Линия жизни объекта
- •Фокус управления
- •Сообщения
- •Билет №24. Модульность, связность и связанность в оо системах
- •Interface Segregation Principle (принцип разделения (сегрегация) интерфейсов)
- •Ничего лишнего всё в своё время
Билет №4.Классы и объекты, Члены классов. Статические члены классов.
Класс - принципиально новый тип данных, который создается программистом
Класс определяет собой множество объектов
имеющих общую структуру
обладающих одинаковым поведением.
Объект является представителем (экземпляром) какого-либо класса.
Объект обладает
состоянием
поведением
идентичностью.
Состояние объекта характеризуется
набором его свойств (атрибутов)
текущими значениями каждого из этих свойств.
Поведение объекта - выполнения определенной последовательности характерных для него действий (методов).
Идентичность объекта – это свойство (или набор свойств) объекта, которое позволяет отличить его от всех прочих объектов того же типа (класса).
Класс – это шаблон который определяет атрибуты и методы объектов.
Пример: форма для печенья в виде буквы «А» - это не буква А, она лишь определяет , как буква А выглядит. Если вам необходим объект, представляемый классом, создаете экземпляр. Каждый экземпляр содержит те же самые атрибуты и методы, которые определены в классе. У каждого экземпляра свое собственное состояние - своя копия атрибутов. Поведение объекта определяется его методами
Связи между объектами
Классы и объекты в рамках модели не существуют сами по себе, они связаны с другими объектами
Для более наглядного изложения структуры классов и объектов и взаимосвязей между ними используется язык UML – унифицированный язык моделирования
(Unified Modelling Language)
Сам класс в итоге определяется как список своих членов, а именно полей (свойств) и методов/функций/процедур. В зависимости от языка программирования к этому списку могут добавиться константы, атрибуты и внешние определения.
Статические члены класса
Вы можете определить член класса как статический (static member) или член экземпляра (instance member). По умолчанию каждый член определен как член экземпляра. Это значит, что для каждого экземпляра класса делается своя копия этого члена. Когда член объявлен как статический, имеется лишь одна его копия. Статический член создается при загрузке содержащего класс приложения и существует в течение жизни приложения. Поэтому вы можете обращаться к члену, даже если экземпляр класса еще не создан. Статический метод или поле - общий для всех объектов класса.Статические методы объявляются с модификатором static. Обращение к статическим методам и полям осуществляется с помощью оператора разрешения области видимости. Внутри статических методов недоступны не-статические члены (а также this). Статические поля необходимо явно инициализировать в файле .cpp
Константые поля встроенных типов можно инициализировать в .h файле
Билет №5. Интерфейс и реализация. Чисто абстрактные классы. Интерфейс как ответственность (контракт)
Поведение, доступное пользователям класса (программистам) - интерфейс
Класс рассматривается как «черный ящик», работать с которым можно исключительно через его интерфейс
Суть «черного ящика» в том, что программисту-пользователю не нужно заботиться о реализации классов, которые он использует, достаточно знать его интерфейс
Интерфейс описывает, как объект взаимодействует с внешним миром. Обратная сторона объекта связана с его реализацией. Пользователю разрешен доступ только к тому, что описано в интерфейсной части. Реализация определяет, как достигается выполнение обязанностей, заявленных в интерфейсной части.
Иногда для эффективного и правильного использования класса недостаточно знать его интерфейс, необходимы также детали реализации. Например, если мы для реализации класса массива используем двусвязный список, то код, часто использующий произвольный доступ к нему будет неэффективен, и об этом нужен соответствующий комментарий, чтобы программист-пользователь не допустил ошибку не поняв семантики класса.
Чисто абстрактные классы
Классы, которые содержат n абстрактные методы называются абстрактными
Классы, которые содержат только абстрактные методы называются чисто абстрактными
Нельзя создать экземпляр абстрактного класса
А указатель на абстрактный класс – можно!
Указывает на экземпляр одного из производных классов
Абстрактные методы должны быть переопределены в производных классах
Имеют собственное название – интерфейс
Интерфейс как ответственность (контракт)
Для ООП подхода характерно «разделение труда» - каждый объект отвечает за узко определенную задачу
Объект может решать несколько задач, например студент может решать задачи, связанные с учебой и внеучебной работой.
В таких случаях говорят, что объект играет несколько ролей
В ООП роли описываются интерфейсами
Чтобы «заставить» объект выполнять его задачи другие объекты используют его поведение (вызывают его методы)
Также говорят, что используя поведение объекты посылают друг другу сообщения или запрашивают услугу
Объекты взаимодействуют друг с другом через интерфейс (который определяется типом (классом) объекта)
Термины «метод», «услуга», «сообщение» - синонимы
