- •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. Контейнерные классы.
43.Средства возбуждения исключительных ситуаций
Программное возбуждение исключительной ситуации производится с помощью оператора throw, после которого указывается оператор создания объекта-исключения: throw new ТипИсключения();
Если после частичной обработки требуется повторно возбудить исключительную ситуацию e, используется вызов throw e; Для проверяемых исключений всегда требуется явное возбуждение. При возбуждении исключения во время выполнения какого-либо метода прерывается основной ход программы, и идёт процесс обработки исключения.
Исключительная ситуация – это особая, экстремальная ситуация, не планируемая заранее. ^ Не следует использовать исключения в качестве конструкций, на которых основаны часто повторяющиеся в программе действия.
44. Обработка исключительных ситуаций
В Си++ есть встроенный механизм обработки ошибок, который называется обработкой исключительных ситуаций (exception handling). Этот механизм упрощает реализацию реакции на ошибки, которые происходят во время выполнения программ. Обработка исключительных ситуаций (исключений) организуется с помощью трех операторов: try, catch и throw. Правила расположения операторов try и catch можно представить следующим образом: try ( / / блок возбуждения исключительной ситуации } catch (typel arg) { // блок перехвата исключительной ситуации типа type1 } catch (type2 arg) { // блок перехвата исключительной ситуации типа type2 } ... catch (typeN arg) { // блок перехвата исключительной ситуации типа typeN } Блок try должен содержать ту часть программы, в который требуется отслеживать ошибки. Это могут быть как несколько операторов внутри одной функции, так и все операторы внутри функции main() (что ведет к отслеживанию ошибок во всей программе). Возбужденное исключение перехватывается оператором catch, который соответствует этому конкретному типу исключения. Возбуждение исключительной ситуации выполняется оператором throw:
45. Обработка иерархии классов исключительных ситуаций.
В реальных программах на C++ типы классов, представляющих исключения, чаще всего организуются в группы, или иерархии. Как могла бы выглядеть вся иерархия для этих классов?
Мы можем определить базовый класс Excp, которому наследуют оба наши класса исключений. Он инкапсулирует данные и функции-члены, общие для обоих производных:
class Excp { ... };
class popOnEmpty : public Excp { ... };
class pushOnFull : public Excp { ... };
Одной из операцией, которые предоставляет базовый класс, является вывод сообщения об ошибке. Эта возможность используется обоими классами, стоящими ниже в иерархии:
class Excp {
public:
// напечатать сообщение об ошибке
static void print( string msg ) {
cerr << msg << endl;
}
};
46. Единицы компиляции программы, файлы заголовков и реализации
Программа С++ состоит из одной или нескольких единиц компиляции. Каждая единица компиляции представляет собой отдельный файл исходного кода, обычно имеющий расширение .cpp (другими распространенными расширениями являются .cc и .cxx); она обрабатывается компилятором за один шаг. Для каждой единицы компиляции компилятор генерирует объектный файл с расширением .obj (в Windows) или .о (в Unix и Mac OS X). Объектный файл — это бинарный файл, содержащий машинный код для той архитектуры, на которой будет выполняться программа.
После компиляции всех файлов .cpp мы можем собрать все объектные файлы для создания исполняемого модуля, используя специальную программу, называемую компоновщиком (linker). Компоновщик соединяет объектные файлы в единое целое и назначает адреса памяти функциям и другим символическим ссылкам, которые содержатся в единицах компиляции.