
- •Билет 1
- •3. Замещение методов и принцип подстановки.
- •Билет 2
- •1. Принцип Чёрча. Гипотеза Ворфа. Гипотеза Сапира-Ворфа. Формальные модели вычислений (модели Чёрча, Поста, Маркова, Тьюринга, Клини и другие).
- •2. Итераторы. Объекты-функции. Будущее ооп.
- •Билет 5
- •Билет 8
- •Понятие полиморфной переменной
- •3. Формы наследования. Порождение подкласса для комбинирования.
- •Формы наследования
- •Билет 19
- •Билет 20
- •Билет 21
- •Билет 22
- •3. Программные компоненты. Их разновидность. Основная целевая направленность.
- •Билет 23
- •1. Восстановление памяти. Указатели. Эффективное средство работы с динамической информации. Создание неизменяемого экземпляра объекта.
- •Билет 25
- •1. Наследование и принцип подстановки. Отношения: быть экземпляром и включать как часть.
- •Билет 26
- •3. Издержки наследования.
- •Билет 27
- •1. Противопоставление композиции и наследование. Преимущества и недостатки двух подходов.
- •Билет 28
- •Билет 29
- •Билет 30
- •3. Интерфейс и реализация.
Билет 5
1. Проблема сообщества ОО программистов. Иерархия классов и наследование. Связывание и переопределение методов.
Связывание методов
(Английский термин – Method binding.)
Методы могут быть статическими (static – по умолчанию), виртуальными (virtual) или динамическими (dynamic). Виртуальные и динамические методы могут быть перекрытыми (override) и абстрактными (abstract). Эти спецификаторы (designators) методов играют роль тогда, когда объектом является класс-наследник. Они определяют, какая именно реализация метода будет вызвана в том или ином случае.
Наследование — механизм языка, позволяющий описать новый класс на основе уже существующего (родительского, базового) класса. Класс-потомок может добавить собственные методы и свойства, а также пользоваться родительскими методами и свойствами. Позволяет строить иерархии классов. Является одним из пяти типов ассоциации.
За перелом обратной совместимости, за проблемы портирования и поддержки общего кода для двух мажорных версий.
Переопределение метода (англ. Method overriding) в объектно-ориентированном программировании — одна из возможностей языка программирования, позволяющая подклассу или дочернему классу обеспечивать специфическую реализацию метода, уже реализованного в одном из суперклассов или родительских классов. Реализация метода в подклассе переопределяет (заменяет) его реализацию в суперклассе, описывая метод с тем же названием, что и у метода суперкласса, а также у нового метода подкласса должны быть те же параметры или сигнатура, тип возвращаемого результата, что и у метода родительского класса.
В языке C++ отсутствует ключевое слово super, которое подклассы в языке Java используют для вызова версии метода суперкласса вместо переопределенной. Вместо этого, перед именем родительского или базового класса используется оператор области видимости(public:).
2. Параметризованные классы. Шаблоны в С++.
Шаблоны позволяют создавать параметризованные классы и функции. Параметром может быть любой тип или значение одного из допустимых типов (целое число, enum, указатель на любой объект с глобально доступным именем, ссылка).
Шабло́ны (англ. template) — средство языка C++, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам данных, размерам буферов, значениям по умолчанию).
3. Присваивание в С++.
Операция присваивания в языке программирования C++ обозначается знаком '='. Как и другие операторы в C++, она может бытьперегружена.
Билет 6
1. Основные положения ООП, сформулированные Аланом Кейем.
Объе́ктно-ориенти́рованное программи́рование (ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов. В случае языков спрототипированием вместо классов используются объекты-прототипы.
2. Эффективность и полиморфизм. Чистый полиморфизм.
3. Уточнение методов или механизм внутри переопределяемого метода.
Билет 7
1. Вычисления и моделирование в традиционных и ООЯ.
Вычисления осуществляются путём взаимодействия (обмена данными) между объектами, при котором один объект требует, чтобы другой объект выполнил некоторое действие. Объекты взаимодействуют, посылая и получая сообщения. Сообщение — это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия.
2. Полиморфизм в языке программирования. Полиморфная функция. Абстракции низкого и высокого уровней.
В языках программирования и теории типов полиморфизмом называется единообразная обработка разнотипных данных.
Понятие полиморфной переменной
Одной из наиболее интересных особенностей объектно-ориентированных языков программирования является тот факт, что фактический тип переменной может не совпадать с типом, заявленным при ее описании.
Полиморфная переменная не только хранит данные фактического типа, но и позволяет использовать методы фактического типа.
Для обозначения типа, присвоенного переменной при ее описании, будем использовать термин «статический тип»
Термин «динамический тип» характеризует тип фактического значения.
Переменная, для которой динамический тип не совпадает (точнее, может не совпадать) со статическим, называется полиморфной.
3. Уточнение в С++.