|
1
|
Объектно-ориентированное мышление. Популярность ООП. Язык и мышление программиста в направлении объектно-ориентированного подхода.
|
|
2
|
Стандартная библиотека шаблонов. Обобщенные алгоритмы.
|
|
3
|
Замещение методов и принцип подстановки.
|
|
4
|
Принцип Чёрча. Гипотеза Ворфа. Гипотеза Сапира-Ворфа. Формальные модели вычислений (модели Чёрча, Поста, Маркова, Тьюринга, Клини и другие).
|
|
5
|
Итераторы. Объекты-функции. Будущее ООП.
|
|
6
|
Законность понятие относительной мощности языка программирования.
|
|
7
|
Парадигмы программирования. Новая парадигма. Взгляд на мир с позиций ООП.
|
|
8
|
Контейнеры. Использование традиционных подходов. Контейнеры в языках со строгим контролем типа данных.
|
|
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
|
Формы наследования. Порождение подкласса для расширения.
|
|
40
|
Процедуры и функции. Понятия области видимости. Понятие модуля. Два принципа правильного использования модулей.
|
|
41
|
Отложенные(абстрактные) методы. Чисто виртуальные методы в С++.
|
|
42
|
Формы наследования. Порождение подкласса для ограничения.
|
|
43
|
Абстрактные типы данных (АТД). Отличия модуля и АТД. Понятие объект и его основные свойства. Понятие полиморфизма.
|
|
44
|
Переопределение методов как механизм уточнения и замещения.
|
|
45
|
Формы наследования. Порождение подкласса для варьирования.
|
|
46
|
Многократно используемое ПО. Итоговая концепция ООП (его основные положения).
|
|
47
|
Перегрузка. Перегрузка и приведение типа. Пе6регрузка не подразумевает сходство.
|
|
48
|
Формы наследования. Порождение подкласса для комбинирования.
|
|
49
|
Важнейший аспект объектно-ориентированного проектирования (ООПр). Ответственность и невмешательство (независимость). Отличие традиционного проектирования и ООПр.
|
|
50
|
Разновидности полиморфизма(отношение «быть экземпляром»; механизм пересылки сообщений; наследования; принцип подстановки).
|
|
51
|
Перечень форм наследования.
|
|
52
|
Проектирование в малом и проектирование в большом. Начало проектирования в ООП.
|
|
53
|
Множественное наследование в С++. Проблема неоднозначности (двусмысленность имён).
|
|
54
|
Преимущества правильного использования механизма наследования.
|
|
55
|
Проектирование на основе обязанностей. Поведение и состояние компоненты. Работа по сценарию. Идентификация компонент.
|
|
56
|
Добавление, замещение и уточнение. Американская и скандинавская семантики.
|
|
57
|
Повторное использование программ.
|
|
58
|
Поведение и состояние. Экземпляры и классы. Зацепление и связность. Интерфейс и реализация модуля, их важнейшая идея в программировании. Принципы Парнаса.
|
|
59
|
Классы и методы в С++.
|
|
60
|
Использование общего кода.
|
|
61
|
Понятия сообщения, экземпляра и инициализации. Задача компилятора.
|
|
62
|
Преобразование типов. Причины ограничения присваивания(надкласс и подкласс и приведения типа).
|
|
63
|
Согласование интерфейса.
|
|
64
|
Формализация интерфейса. Выбор имен.
|
|
65
|
Способы создания и инициализации. Стек и куча. Автоматические и динамические переменные.
|
|
66
|
Программные компоненты. Их разновидность. Основная целевая направленность.
|
|
67
|
Восстановление памяти. Указатели. Эффективное средство работы с динамической информации. Создание неизменяемого экземпляра объекта.
|
|
68
|
Синтаксис пересылки сообщений в С++. Переменная this.
|
|
69
|
Быстрое макетирование.
|
|
70
|
Интуитивное описание наследования. Подкласс, подтип и принцип подстановки. Подтипы и строгий контроль типов данных.
|
|
71
|
Инкапсуляция в традиционных и ООЯ.
|
|
72
|
Полиморфизм и структура.
|
|
73
|
Наследование и принцип подстановки. Отношения: быть экземпляром и включать как часть.
|
|
74
|
Механизмы создания и инициализации. Создание и инициализация в С++.
|
|
75
|
Маскировка информации.
|
|
76
|
Композиция и наследование: описание. Использование композиции. Применение наследования. Закрытое наследование в языке С++.
|
|
77
|
Неявная инициализация. Конструкторы. Перегруженность конструктора.
|
|
78
|
Издержки наследования.
|
|
79
|
Противопоставление композиции и наследование. Преимущества и недостатки двух подходов.
|
|
80
|
Сложность программы.
|
|
81
|
Накладные расходы на посылку сообщений.
|
|
82
|
Причины, по которым использование наследования и композиции в целом не обеспечили общий прогресс многократного использования кода.
|
|
83
|
Как связывать: статически или динамически(Э и Г).
|
|
84
|
Скорость выполнения и размер программы.
|
|
85
|
Композиция и наследование как возможность создания ПО из взаимозаменяемых компонент общего назначения.
|
|
86
|
Проверка на равенство. Ковариация и контрвариация. Равенство в С++.
|
|
87
|
Разновидности классов.
|
|
88
|
Связывание методов и сообщения: Связывание методов (с точки зрения описания: статически или динамически); Проблема обращения полиморфизма.
|
|
89
|
Связывание в языке С++. Основные цели создания языка программирования С++.
|
|
90
|
Интерфейс и реализация.
|