Begin
Begin
Begin
Begin
Public
Private
Type
Пример.
Базовые принципы ООП
ООП характеризуется тремя базовыми принципами:
4. Инкапсуляция
5. Наследование
6. Полиморфизм
1.Инкапсуляция
Инкапсуляцией называется скрытие полей объекта с целью обеспечения доступа к ним только посредством методов класса.
Ограничение доступа к полям объекта реализуется в Delphi при помощи свойствобъекта.
Свойство объекта характеризуется
полем, сохраняющим значение свойства;
двумя методами, обеспечивающими доступ к полю свойства.
Методы, обеспечивающие доступ к полю свойства:
Метод установки значения свойства – метод записи свойства (write).
Метод получения значения свойства – метод чтения свойства (read).
Для описания свойства в определении класса указывают:
зарезервированное слово property;
имя свойства;
тип свойства;
имена методов, обеспечивающих доступ к значению свойства.
Оформление данных объекта как свойства позволяет ограничить доступ к соответствующим полям.
Например: разрешить только чтение свойства.
|
|
Чтобы инструкции программы не могли изменить значение свойства, нужно в описании свойства указать только имя метода чтения. В этом случае попытка присвоить значение свойству вызовет ошибку во время компиляции.
Установить значение свойства, защищенного от записи, можно во время инициализации объекта
Описание класса TPerson, содержащего свойства Name и Address:
TName = string [15];
TAddress = string [50];
TPerson = class
fname: TName;
faddress: TAddress;
constructor Create (Name: TName);
procedure Show;
function GetName: TName;
function GetAddress: TAddress;
procedure SetAddress (NewAddress: TAddress);
property Name: TName
read GetName;
property Address: TAddress
read GetAddress write SetAddress;
Свойство Name доступно только для чтения. Свойство Addressдоступно для чтения и для записи.
Методы класса TPerson, обеспечивающие создание объекта этого класса и доступ к его свойствам.
конструктор объекта TPerson:
constructor TPerson.Create (Name: TName);
fname:= Name;
end;
метод получения значения свойства Name:
function TPerson.GetName;
result:= fname;
end;
метод получения значения свойства Address:
function TPerson.GetAddress;
result:= faddress;
end;
метод изменения значения свойства Address:
procedure TPerson.SetAddress(NewAddress:TAddress);
if faddress = ‘’
then faddress:= NewAddress;
end;
Чтобы присвоить значение свойству Address объекта student, в программе достаточно использовать инструкцию
student.Address:= ‘г. Тюмень, ул. Мельникайте, 75, кв. 6’
Компилятор преобразует эту инструкцию в инструкцию вызова метода
student.SetAddress(‘г. Тюмень, ул. Мельникайте, 75, кв. 6’)
Таким образом, инструкции, обеспечивающие создание объекта класса TPerson и установку его свойств, могут выглядеть так:
student:= TPerson.Create(‘ИвановА.А.’);
student.Address:= ‘г. Тюмень, ул. Мельникайте, 75, кв. 6’
2.Наследование
Концепция ООП предполагает возможность определять новые классы посредством добавления полей, свойств и методов к уже существующим классам.
|
|
Такой механизм получения новых классов называется порождением.
При этом новый, порожденный класс (потомок) наследует свойства и методы своего базового, родительского класса
Класс-потомок должен иметь собственный конструктор, обеспечивающий инициализацию класса-родителя и своих полей.
Реализация конструктора класса TProfessor:
constructor TProfessor.Create(Name: TName; dep: string);