- •Конспект по "Объектно-ориентированному программированию".
- •1. Что такое объект? Понятия "состояние" и "поведение"?
- •2. Понятия "интерфейс" и "реализация"?
- •3. Понятия "класс" и "абстрактный тип данных"?
- •4. Основные категории классов?
- •5. Объявление класса? Общий вид объявления класса? Включение кода метода внутри объявления класса?
- •6. Особенности локальных классов?
- •7. Понятие inline-метода. Способы создания?
- •9. Константный объект? Константный метод?
- •10. Конструктор. Его назначение и синтаксические конструкции вызова конструктора?
- •11. Конструктор копирования. Общий вид и случаи вызова?
- •12. Что называется конструктором по умолчанию? Конструктором преобразования?
- •13. Основные свойства и правила использования конструкторов.
- •14. Деструктор. Вызов деструкторов (автоматический и явный).
- •15. Основные свойства и правила использования деструкторов.
- •16. Создание и уничтожение объектов.
- •17. Что такое наследование?
- •18. Понятия "базовый класс" и "производный класс"?
- •19. Принцип подстановки. Различие между понятиями "подкласс" и "подтип"?
- •20. Основные формы наследования?
- •21. Преимущества наследования?
- •22. Недостатки наследования?
- •23. Общая форма наследования классов? Спецификаторы доступа при наследовании?
- •24. Конструкторы и деструкторы производных классов? Порядок вызова конструкторов и деструкторов при множественном наследовании?
- •25. Множественное наследование. Общая форма?
- •26. Передача параметров в базовый класс. Назначение. Общая форма?
- •27. Указатели и ссылки на производные классы?
- •28. Виртуальная функция. Объявление виртуальной функции?
- •29. Чисто виртуальная функция. Общая форма чисто виртуальной функции?
- •30. Понятие "абстрактный класс".
- •31. Что такое полиморфизм? в каких формах он может существовать?
- •32. Понятие "перегрузка"?
- •33. Приведение типа. Неопределенность. Причины возникновения неопределенности и способы ее устранения?
- •34. Понятие "параметрическая перегрузка"?
- •35. Понятие "переопределение"? в чем заключается различие между перегрузкой и переопределением?
- •36. В чем заключается процесс уточнения?
- •37. Что такое шаблоны (или обобщенные функции)? Их назначение?
- •38. Функция-шаблон. Назначение функции-шаблона? Общий вид функции-шаблона?
- •39. Класс-шаблон. Общая форма класса-шаблона и экземпляра такого класса?
Конспект по "Объектно-ориентированному программированию".
1. Что такое объект? Понятия "состояние" и "поведение"?
Объект– это самодостаточный программный модуль, который абстрактно описывает физическую или логическую сущность реального мира. Он скрывает (инкапсулирует) детали своей реализации и имеет общедоступный интерфейс.
Состояниеобъекта – это его внутренние, то есть закрытые, данные и скрытые детали его реализации. Состояние объекта объединяет все его поля данных (статический компонент) и текущие значения каждого из этих полей (динамический компонент).
Поведениеобъекта определяет, как объект изменяет свои состояния и взаимодействует с другими объектами.
2. Понятия "интерфейс" и "реализация"?
Объект можно условно разделить на две части:
– интерфейс (interface)– внешний образ, наблюдаемый пользователем объекта, и описывающий, как объект взаимодействует с внешним миром;
– реализацию (implementation)– внутренний образ, определяющий, как достигается выполнение обязанностей, заявленных в интерфейсной части.
Пользователю разрешен доступ только к тому, что описано в интерфейсной части. Интерфейс – это абстрактное понятие, а реализация – механизм его воплощения.
3. Понятия "класс" и "абстрактный тип данных"?
Класс– это абстрактное описание ряда похожих объектов, имеющих общую структуру и поведение, т. е. класс определяет новый тип данных, который называется абстрактным типом данных (АТД).
Абстрактный тип данных (АТД)– это совокупность данных вместе с множеством операций, которые можно выполнять над этими данными.
Однажды определенный АТД может использоваться как тип для одного или нескольких объектов, т. е. каждый объект данного класса (типа) имеет идентичную структуру и функции. Разные представители одного класса отличаются друг от друга только значениями внутренних переменных состояния.
4. Основные категории классов?
Следующие категории охватывают большую часть классов:
1) классы-администраторы данных (Data Manager), часто получающие имена Data или State – это классы, основная обязанность которых – поддержка данных или информации о состоянии чего-либо.
2) классы-источники данных (Data Sources) – это классы, которые генерируют данные, например, случайные числа;
3) классы-посредники в передаче данных (Data Sinks) – служат для приема и дальнейшей передачи данных (например, запись в файл).
В отличие от администраторов данных, источники и посредники не хранят данные внутри себя в течение определенного времени, но генерируют их по запросу (источники) или обрабатывают их при вызове (посредники);
4) классы для просмотра данных (View или Observer) незаменимы практически в любом приложении. Все программы осуществляют вывод информации, как минимум, на экран. Соответствующие программный код нередко оказывается сложным, часто модифицируется и в значительной степени не зависит от выводимых данных.
Поэтому хорошим тоном в программировании считается изоляция внутренних данных от методов, осуществляющих вывод информации.
Полезно отделять собственно объект от его изображения (визуального представления). Благодаря этому принципу системы, обеспечивающие графический вывод информации, могут быть в достаточной степени упрощены. Т.е. в идеальном случае объект не требует и не содержит информации о своем визуальном представлении. Это упрощает многократное использование кода, т.к. один и тот же объект может применяться во многих приложениях. Объект часто имеет более одного визуального представления.
5) вспомогательные или управляющие проектированием классы (Facilitator или Helper) – это классы, которые не содержат полезной информации, но облегчают выполнение сложных заданий.
Большинство объектно-ориентированных приложений включает как вышеперечисленные классы, так и другие.
Если класс "разрывается" между двумя категориями, то часто его можно разбить на два класса.