- •14. Разветвляющиеся программы.
- •14.1. Условный оператор if.
- •If Условие then Оператор1 else Оператор2;
- •If Условие then Оператор;
- •If Условие then if ПодУсловие then ... Else ...
- •14.2. Случайные величины.
- •14.3. Логические операции и выражения.
- •Логические операции и таблицы истинности
- •15. Циклические программы.
- •15.1. Оператор перехода Go To.
- •15.2. Операторы цикла Do.
- •1. Бесконечный цикл
- •2. Со счетчиком
- •3. C предусловием
- •15.3. Оператор цикла For.
- •16. Массивы данных.
- •16.1. Использование массивов при программировании.
- •16.2. Рекурсия.
- •16.3. Сортировка.
- •17. Элементы управления.
- •17.5. Списки (ListBox, ComboBox, CheckedListBox).
- •18. Объектное программирование.
- •18.1. Статические и динамические компоненты объектов.
- •18.2. Поля и свойства объектов.
- •18.3. Конструкторы.
- •Конструктор по умолчанию
- •Конструктор копирования
- •Конструктор преобразования
- •18.4. Наследование.
- •Простое наследование
- •Множественное наследование
- •18.5. Полиморфизм.
- •10. Организация поточных процессов.
- •10.1. Особенности поточной формы организации процессов.
- •10.2. Основные параметры поточных линий.
- •10.3. Виды поточных линий.
- •5. По характеру движения конвейера.
- •6. По уровню механизации процессов различают автоматические и полуавтоматические поточные линии.
- •7. По степени охвата производства.
- •9.1. Структура и длительность цикла процесса
- •9.5. Длительность производственного цикла сложного процесса
- •7. Основы организации процессов.
- •7.1. Принципы организации процессов.
- •7.2. Типы операционных систем.
Конструктор по умолчанию
Конструктор не имеющий обязательных аргументов. Используется при создании массивов объектов, вызываясь для создания каждого экземпляра. В отсутствие явно заданного конструктора по умолчанию его код генерируется компилятором (что на исходном тексте, естественно, не отражается).
Конструктор копирования
Конструктор, аргументом которого является ссылка на объект того же класса. Применяется в C++ для передачи объектов в функции по значению.
Конструктор копирования в основном необходим, когда объект имеет указатели на объекты выделенные в куче. Если программист не создаёт конструктор копирования, то компилятор создаст неявный конструктор копирования, который копирует указатели как есть, то есть фактическое копирование данных не происходит и два объекта ссылаются на одни и те же данные в куче. Соответственно попытка изменения «копии» повредит оригинал, а вызов деструктора для одного из этих объектов при последующем использовании другого приведёт к обращению в область памяти, уже не принадлежащую программе.
Аргумент должен передаваться именно по ссылке, а не по значению. Это вытекает из коллизии: при передаче объекта по значению (в частности, для вызова конструктора) требуется скопировать объект. Но для того, чтобы скопировать объект, необходимо вызвать конструктор копирования.
Конструктор преобразования
Конструктор, принимающий один аргумент. Задаёт преобразование типа своего аргумента в тип конструктора. Такое преобразование типа неявно применяется только если оно уникально.
Также выделяют виртуальный конструктор и конструктор с псевдокодом (упрощенный).
18.4. Наследование.
Насле́дование — механизм объектно-ориентированного программирования (наряду с инкапсуляцией, полиморфизмом и абстракцией), позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом.
Другими словами, класс-наследник реализует спецификацию уже существующего класса (базовый класс). Это позволяет обращаться с объектами класса-наследника точно так же, как с объектами базового класса.
Типы наследования:
Простое наследование
Класс, от которого произошло наследование, называется базовым или родительским (англ. base class). Классы, которые произошли от базового, называются потомками, наследниками или производными классами (англ. derived class).
В некоторых языках используются абстрактные классы. Абстрактный класс — это класс, содержащий хотя бы один абстрактный метод, он описан в программе, имеет поля, методы и не может использоваться для непосредственного создания объекта. То есть от абстрактного класса можно только наследовать. Объекты создаются только на основе производных классов, наследованных от абстрактного.
Множественное наследование
При множественном наследовании у класса может быть более одного предка. В этом случае класс наследует методы всех предков. Достоинства такого подхода в большей гибкости.
Большинство современных объектно-ориентированных языков программирования (C#, Java, Delphi и др.) поддерживают возможность одновременно наследоваться от класса-предка и реализовать методы нескольких интерфейсов одним и тем же классом. Этот механизм позволяет во многом заменить множественное наследование — методы интерфейсов необходимо переопределять явно, что исключает ошибки при наследовании функциональности одинаковых методов различных классов-предков.