- •1. Метод структурного проектирования
- •2.Основные концепции ооп
- •3.Методика объектно-ориентированного проектирования
- •4. Обзор языков объектно-ориентированного программирования.
- •5. Методика объектно-ориентированного проектирования. Унифицированный язык моделирования uml
- •6. Диаграммы. Диаграммы классов
- •8. Определение класса. Объявление объектов класса. Обращение к объектам
- •Называется определением класса, потому что она определяет новый тип.
- •9.Инициализация полей объектов. Конструкторы. Конструктор по умолчанию
- •Конструктор по умолчанию
- •10.Копирующий конструктор
- •11. Конструктор с параметром
- •15. Множественное наследование.
- •16. Виртуальные функции.
- •18 . Наследование классов, полей и методов. Поведение производных классов.
- •19. Виртуальные методы класса
- •20. Статические методы класса
- •22. Абстрактное наследование
- •23.24.Полиморфизм. Простой полиморфизм. Сложный полиморфизм
- •26.Перегрузка функций.
- •28.Виртуальные функция
- •Void friend Bar(Foo & foo);
- •Int data;
- •Void Bar(Foo & foo)
- •30. Дружественные классы.
- •31. Работа динамической памятью. Особенности работы конструкторов и деструкторов.
- •32. Шаблоны функций. Описание и использование
- •33.Шаблоны классов
- •34. Стандартные шаблонные контейнерные классы. Основные методы.
- •35. Итераторы
- •36. Основные понятия о потоках ооп
- •37. Стандартные классы потоков ввода вывода
- •38. Файловые потоки
- •Методы файловых потоков
- •39. Строковые потоки Особой разновидностью потоков являются строковые потоки, представленные классом strstream:
- •40.Организация ввода-вывода для пользовательских классов.
- •41. Использование файлов и буферов в памяти для ввода-вывода.
- •42. Средства форматного вывода, манипуляторы.
- •43.Средства возбуждения исключительных ситуаций
- •44. Обработка исключительных ситуаций
- •45. Обработка иерархии классов исключительных ситуаций.
- •46. Единицы компиляции программы, файлы заголовков и реализации
- •47. Директивы препроцессора, макросы и условная компиляция.
- •48. Организация пространств имен.
- •49. Пространство имен для стандартной библиотеки.
- •50. Контейнерные классы.
47. Директивы препроцессора, макросы и условная компиляция.
Препроцессором называется первая фаза компилятора. Инструкции препроцессора
называются директивами. Они должны начинаться с символа #, перед которым
в строке могут находиться только пробельные символы.
Директива #include <имя_файла> вставляет содержимое указанного файла в ту точку
исходного файла, где она записана. Включаемый файл также может содержать
директивы #include. Поиск файла, если не указан полный путь, ведется в стандартных
каталогах включаемых файлов. Вместо угловых скобок могут использоваться
кавычки (" ") — в этом случае поиск файла ведется в каталоге, содержащем
исходный файл, а затем уже в стандартных каталогах.
Директива #def 1 пе определяет подстановку в тексте программы. Она используется
для определения:
• символических констант:
#def1ne имя текст_подстановки
(все вхождения имени заменяются на текст подстановки);
• макросов, которые выглядят как функции, но реализуются подстановкой их
текста в текст программы:
#define имя( параметры ) текст_подстановки
• символов^ управляющих условной компиляцией. Они используются вместе с директивами
#1 fdef и #1 f ndef
48. Организация пространств имен.
Пространство имён (англ. namespace) — некоторое множество, под которым подразумевается модель, абстрактное хранилище или окружение, созданное для логической группировки уникальных идентификаторов (то есть имён). Идентификатор, определенный в пространстве имён, ассоциируется с этим пространством. Один и тот же идентификатор может быть независимо определён в нескольких пространствах. Таким образом, значение, связанное с идентификатором, определённым в одном пространстве имён, может иметь (или не иметь) такое же значение, как и такой же идентификатор, определённый в другом пространстве. Языки с поддержкой пространств имён определяют правила, указывающие, к какому пространству имён принадлежит идентификатор (то есть его определение).
49. Пространство имен для стандартной библиотеки.
Эта тема достойна отдельного длинного разговора, но я уделю ей совсем немного времени - лишь бы вы понимали, о чем идет речь, когда придется с ними столкнуться.
Пространства имен помогают избегать конфликтов имен (функций, переменных и так далее). Думаю, сама проблема очевидна, но тем не меннее поясню на простом примере. Если вы попытаетесь сравнить random() из стандартной библиотеки со своим генератором случайных чисел, то в программе на С вам придется изобретать для своего генератора другое имя.
До того, как был принят стандарт, довольно долго в С++ не было пространств имен, а стандартные файлы заголовков так же, как и в С, заканчивались суффиксом .h - например <iostream.h>.
50. Контейнерные классы.
Контейнерные классы — это классы, предназначенные для хранения данных, организованных определенным образом. Примерами контейнеров могут служить массивы, линейные списки или стеки. Для каждого типа контейнера определены методы для работы с его элементами, не зависящие от конкретного типа данных, которые хранятся в контейнере, поэтому один и тот же вид контейнера можно
использовать для хранения данных различных типов. Эта возможность реализована с помощью шаблонов классов, поэтому часть библиотеки C++, в которую входят контейнерные классы, а также алгоритмы и итераторы, о которых будет рассказано в следующих разделах, называют стандартной библиотекой шаблонов (STL — Standard Template Library). Использование контейнеров позволяет значительно повысить надежность программ,