- •1 Базовые принципы объектно-ориентированного программирования.
- •2 Базовые блоки ооп, объект и класс.
- •3 Реализация механизма сокрытия информации.
- •4 Основные свойства и правила использования конструкторов.
- •5 Правила использования деструкторов.
- •6 Директивы процессору.
- •8 Декларация, инициализация указателя. Операции над указателями.
- •9 Операторы для динамического выделения и освобождения памяти.
- •11 Указатели и динамические массивы.
- •12 Механизм «функции-друга».
- •13 Свойства и правила использования структур и объединений.
- •14 Перегрузка операторов.
- •15 Наследование. Производные классы.
- •1 Дублирование (числа, температура)
- •2 Миним и макси (произведение, количество)
- •3 Поиск столбцов (нулевой элемент, оценка)
- •4 Функция div() (искл ситуация)
- •5 Дружественная функция (класс)
- •Int isneg(myclass ob)
- •Int isneg(myclass ob)
- •6 Вычисление выражения
3 Реализация механизма сокрытия информации.
Сокрытие данных - важная компонента ООП, позволяющая создавать легче отлаживаемый и сопровождаемый код, так как ошибки и модификации локализованы в нем. Для реализации этого компоненты-данные желательно помещать в private-секцию.
в С++ обеспечивается механизмом, позволяющим содержать
-публичные (public),
-частные (private) и
-защищенные (protected) части.
Смысл атрибутов доступа таков:
public - член класса может использоваться любой функцией;
private - член класса может использоваться только функциями-членами и функциями-"друзьями" того класса, где он описан; по умолчанию все члены класса имеют атрибут private;
protected - то же, что и private, но дополнительно член может использоваться функциями-членами и функциями-"друзьями" класса, для которого данный класс является базовым.
В C++ элементы структуры или объединения по умолчанию принимаются как public; для ключевого слова struct атрибут public может явно переопределяться на private или protected; для ключевого слова union явное переопределение атрибута доступа невозможно;
4 Основные свойства и правила использования конструкторов.
Конструктор представляет собой обычную функцию, имя которой совпадает с именем класса, в котором он объявлен и используется.
Конструктор с параметрами.
- конструктор предназначен для создания объекта (массива объектов) и инициализации его компонент-данных;
- конструктор вызывается, если в описании используется связанный с ним тип
- конструктор не должен возвращать никаких значений.
- в программе может быть несколько конструкторов. (конструкторы с перекрытием, работает механизм перегрузки функций.)
Конструктор, либо не имеющий параметров, либо все аргументы которого заданы по умолчанию – конструктор по умолчанию:
- каждый класс может только один конструктор по умолчанию.
- конструктор по умолчанию используется при создании объекта без инициализации его.
- Конструктор по умолчанию незаменим при создании массива объектов. Если при этом конструкторы с параметрами в классе есть, а конструктора по умолчанию нет, то компилятор зафиксирует синтаксическую ошибку.
- конструктор копий вызывается только для инициализации. (Когда один объект используется для инициализации другого. )
- конструктор вызывается, когда объект создается.
- если конструктор в private-секции, то он не может быть явно вызван (из main функции) для создания объекта класса.
5 Правила использования деструкторов.
Деструктор –функция, приводящая к разрушению объекта соответствующего класса и возвращающая системе область памяти, выделенную компилятором.
- имя деструктора совпадает с именем класса, перед которым ставится символ «тильда»
- деструктор не возвращает значения (даже типа void);
- деструктор не наследуется в производных классах;
- деструктор не имеет параметров (аргументов);
- в классе может быть только один деструктор;
- деструктор может быть виртуальным (виртуальной функцией);
- невозможно получить указатель на деструктор (его адрес);
- если деструктор отсутствует в описании класса, то он автоматически генерируется компилятором (с атрибутом public);
- если элементы-данные класса имеют известный размер в байтах, например: int (2 байта), double (4 байта), компилятор при создании объектов выделит соответствующие участки памяти, и в этом случае деструктор не нужен, т.к. он будет иметь пустое определение.
- если объект создается в динамической области памяти, например, с помощью операции захвата памяти new, то деструктор необходимо задавать явно, т.к. он должен уничтожить объект после его использования с помощью операции delete.
