- •Вопрос №2 Алгоритм. Основные алгоритмические структуры и конструкции
- •Вопрос №3 Этапы построения алгоритма. Технологическая цепочка решения задачи на эвм
- •Вопрос №6 Трансляция. Виды трансляторов
- •Типы данных
- •Вопрос №9 Организация ввода-вывода. Оператор присваивания. Стандартные функции языка Pascal
- •Вопрос №10 Условный оператор. Оператор выбора. Логические выражения и операции
- •Вопрос №11 Операторы циклов в языке Pascal
- •Вопрос №12 Массивы. Одномерные и двухмерные массивы. Описание массивов. Принципы работы с массивами
- •Вопрос №13 Массивы данных. Алгоритмы обработки массивов данных
- •Вопрос №14 Принципы и алгоритмы сортировки. Оценка алгоритмов сортировки. Характеристики алгоритмов сортировки
- •Вопрос №15 Алгоритм быстрой сортировки
- •Вопрос №16 Записи. Описание записей. Принципы работы с записями
- •Вопрос №17 Процедуры в языке Pascal. Описание и вызов процедур.
- •Описание и вызов процедур и функций
- •Вопрос №19 Формальные и фактические параметры подпрограммы. Способы передачи параметров
- •Вопрос №20 Глобальные и локальные переменные. Область действия описаний
- •Вопрос №21 Рекурсия. Рекурсивные алгоритмы и подпрограммы
- •Вопрос №22 Строковый тип данных. Основные операции для работы со строками
- •Вопрос №23 Множественный тип данных. Основные операции над множествами.
- •Вопрос №24 Типизированные и нетипизированные файлы. Основные операции для работы с ними
- •Вопрос №25 Текстовые файлы. Операции для работы с ним
- •Вопрос №26 Структурный подход к программированию. Основные принципы
- •Вопрос №27 Нисходящая и восходящая разработка. Достоинства и недостатки. Принципы нисходящего структурного программирования
- •1)Метод нисходящей разработки пс
- •2)Метод восходящей разработки пс
- •Вопрос №28 Принцип модульного программирования. Структура модуля
- •Вопрос №29 Объектно-ориентированный подход к программированию. Основные принципы
- •Вопрос №30 Понятия класса и объекта. Описание классов и Object Pascal. Создание и уничтожение объектов
- •Вопрос №31 Инкапсуляция. Примеры реализации
- •Вопрос №32 Свойства как механизм доступа к данным
- •Вопрос №33 Наследование. Примеры реализации принципа наследования
- •Вопрос №34 Полиморфизм. Примеры реализации
- •Вопрос №35 Методы. Виртуальные и динамические методы
Вопрос №30 Понятия класса и объекта. Описание классов и Object Pascal. Создание и уничтожение объектов
Класс является описываемой на языке терминологии (пространства имён) исходного кода моделью ещё не существующей сущности (объекта). Фактически он описывает устройство объекта, являясь своего рода чертежом. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.( Класс — описание (абстракция), которое показывает, как построить существующую во времени и пространстве переменную этого класса, называемую объектом.)
Объект - особый опознаваемый предмет, блок или сущность (реальная или абстрактная), имеющая важное функциональное назначение в данной предметной области.
Для объявления конструктора используется зарезервированное слово constructor, после которого идет имя конструктора и параметры, если необходимо. Конструктор возвращает указатель на экземпляр класса. У конструктора Tobject имя Create, поэтому у всех потомков этого класса есть конструктор Create, хотя, у некоторых классов есть и другие конструкторы с другими именами, например у обработчиков исключений. В теле конструктора Вы можете вызвать конструктор предка для инициализации закрытой части предка значениями по умолчанию, например:
unit MyUnit;
interface
Type TmyClass = class(TComponent) … public constructor Create(AOwner: TComponent); override; // перегружаем конструктор предка … end;
implementation
Constructor TmyClass.Create(AOwner: TComponent); Begin Inherited Create(Aowner); // Вызов конструктора предка … // Дальнейшая инициализация объекта End;
Для уничтожения объекта служит деструктор. Деструктор объявляется с помощью зарезервированного слова destructor, после которого идет имя деструктора. Деструктор ничего не возвращает и не имеет параметров. Я советую Вам вместо прямого вызова деструктора использовать метод Free. Этот метод есть у всех классов в Delphi, т.к. наследуется от Tobject. Этот метод сначала проверяет неравенство указателя на класс nil, а затем только вызывает Destroy. Это более безопасный способ уничтожить объект.
unit MyUnit;
interface
Type TmyClass = class(TComponent) … public constructor Create(AOwner: TComponent); override; // перегружаем конструктор предка destructor Destroy; override // Перегружаем деструктор предка … end;
implementation … destructor TmyClass.Destroy; Begin
… // Уничтожение объекта Inherited Destroy; // Вызов деструктора предка, для уничтожение закрытых полей предка End;
Вопрос №31 Инкапсуляция. Примеры реализации
Для более надежной работы программы, Вы не должны напрямую обращаться к полям объекта. Вместо этого, Вы должны обращаться через специальные методы, которые могут проверить, например, на допустимость значения в заданном интервале или одновременно выполнить дополнительную работу по изменению состояния объекта, в зависимости от изменения значения поля - это и есть инкапсуляция.( Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя.)
Type TmyClass = class(TObject) Private AmyField: Integer; // Объявление поля целого типа Protected Procedure SetMyField(Val: Integer); virtual; // Объявление процедуры для записи значения свойства Public Property MyField: Integer read AmyField write SetMyField; // объявление свойства End;