Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
билеты по делфи.docx
Скачиваний:
0
Добавлен:
18.04.2019
Размер:
388.08 Кб
Скачать

Билет 5.

  • КЛАССЫ, ОБЪЕКТЫ.

Классыэто типы специального вида, которые содержат поля, методы и свойства.

Классы, как и любые другие типы, служат образцами для создания конкретных экземпляров.

  • Объявление класса

Конкретные экземпляры класса называются объектами.

Type 

TmyCl=class(Tobject)

Fint:integer;

Fstr:string;

Function Func1(a:real):integer; Procedure Proc1;

End;

Var

MyClass:TmyCl;

Function TmyCl.Func1(a:real):integer;

Begin result:=a* Fint ; end;

Procedure TmyCl.Proc1;

Begin …; end;

Begin

MyClass:=TmyCl.create;

MyClass.Fint:=10;

MyClass. Proc1;

MyClass.Free;

End.

  • ПРИНЦИПЫ ООП.

В основе классовой борьбы лежат три фундаментальных принципа:

  • инкапсуляция

  • наследование

  • полиморфизм.

Инкапсуляция – это объединение в одно целое трех сущностей: полей, методов и свойств.

Поля методы и свойства называются членами классов.

Как мы увидим в дальнейшем, инкапсуляция позволяет создавать обособленные самодостаточные объекты. Выполнение программы представляет обмен сообщениями между объектами.

Наследование. Любой класс может быть порожден от другого класса. Порожденный класс автоматически наследует все члены родителя, но может и пополнять их.

Все классы OBJECT PASCAL являются потомками класса TОbject. Наследование приводит к тому, что создается дерево классов, разрастающееся по мере удаления от потомка.

Программисты создавая новые классы, на основе старых не вникают в подробности программного кода старых. Значительно возрастает преемственность кода.

Полиморфизм – это возможность в классах потомках переопределять (перекрывать) методы родителей.

Поведенческие свойства класса определяются набором методов входящих в класс, изменяя тот или иной метод в потомке, мы изменяем в нем свойства родителя, хотя имя метода остается прежним.

  • ИНКАПСУЛЯЦИЯ Инкапсуляция – это объединение в одно целое трех сущностей: полей, методов и свойств (членов класса).

Поля – это данные.

Методы – это процедуры, обрабатывающие данные.

Свойства – это механизм доступа к данным.

Инкапсуляция позволяет изолировать класс от остальных частей программы, сделать его самодостаточным для решения конкретной задачи.

Инкапсуляция предполагает разграничение доступа разработчиков разного уровня к различным членам класса.(если ты разрабатываешь класс, то тебе доступны все члены класса, если ты используешь класс, то только те, которые определят поведение класса)

Потому что:

1. Пользователи класса не должны видеть подробности, которыми оперируют разработчики.

2. Прямой доступ к полям хотя и возможен, но не всегда желателен, т.К. Бесконтрольность может привести к ошибкам.

Часто поля делают узко доступными, а свойства (именно они проводят контроль корректности) широко.

В Delphi есть четыре модификатора разграничения доступа:

  • public

  • published

  • protected

  • private

Модификатором public объявляют (помечают ) члены класса видимые везде.

А именно, в любой программе и в любом модуле, которые имеют доступ к нашему модулю, (т.е. где наш модуль объявлен в разделе USES).

Модификатором published объявляют члены класса видимые везде, но более того, свойства помещенные в эту секцию видимы еще и в инспекторе объектов.

Секция, не имеющая модификатора доступа, по умолчанию считается published

Модификатором protected объявляют члены класса доступные методам самого класса и их потомкам.

Модификатором private объявляют члены класса видимые только в модуле, где описан класс, т.е. это локальные описания.

Любая секция может объявляться сколько угодно раз, порядок следования секций произвольный. Внутри каждой секции объявляются сначала поля затем методы и свойства.

Билет 6.

  • МЕТОДЫ

Инкапсулированные в классе процедуры и функции называются методами.

Методы объявляются в классе как обычные подпрограммы.

В заголовке описания реализации метода используют составное имя метода (имя класса точка имя метода).

В теле описания реализации метода собствен-ные поля используются без указания имени класса. (этим методы отличаются от прочих процедур)

Type 

TmyCl=class(Tobject)

Fint:integer;

procedure proc1(var m:integer);

End;

Var o1: TmyCl;

procedure TmyCl.proc1(var m:integer); Begin m:= Fint +3;// заметим Fint, а не TmyCl.Fint

End; Begin …… O1.proc1(k);//в основной проге составное имя End.

В ООП различаются следующие виды методов

Методы класса

Конструктор и деструктор

Виртуальные

Динамические

Абстрактные

Перегружаемые

МЕТОДЫ КЛАССА

Некоторые методы (называются методы класса) могут вызываться без создания и инициализации объекта, они характеризуют не объект, а класс. Объявляются с помощью зарезервированного слова class.

Обращения к полям с их помощью запрещаются.

ПРИМЕР

Type TMyCl=class Class Function GetClassName: String; End;

Var s:string;

Class Function GetClassName: String;……

Begin S:=TmyClass.GetClassName; End.

  • КОНСТРУКТОР И ДЕСТРУКТОР

В состав любого класса входят два специальных метода – конструктор и деструктор.

В классе TОbject конструктор называется create деструктор destroy.

Конструктор и деструктор – это функция и процедура, но в виду их важности и единственности они объявляются с помощью зарезервированных слов Constructor Destructor.

Type TmyCl=class(TObject) … end;

Var

Ob1: TmyCl;//выделяет указатель 4 б, cначалa хранит nil

Для разворачивания же объекта в динамической памяти используется метод класса конструктор (для Tobject это Create) в таком виде

Ob1:= TmyCl.Create;

В результате применения метода create:

- выделяется дин память и разворачивается объект;

  • инициализируется объект

  • возвращается ссылка в объектную переменную, (чтобы можно было пользоваться его членами, а в последствии и разрушить.)

Любые действия с объектом возможны после работы конструктора. Деструктор разрушает объект в динамической памяти.

Type

TMyCl=class Fint: integer; End;

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]