N Пример.

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;

constructorCreate (Name: TName);

procedure Show;

functionGetName: TName;

functionGetAddress: TAddress;

procedureSetAddress (NewAddress: TAddress);

property Name: TName

readGetName;

property Address: TAddress

readGetAddresswriteSetAddress;

 

Свойство Name доступно только для чтения. Свойство Addressдоступно для чтения и для записи.

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

конструктор объекта TPerson:

constructorTPerson.Create (Name: TName);

fname := Name;

end;

метод получения значения свойства Name:

functionTPerson.GetName;

result := fname;

end;

метод получения значения свойства Address:

functionTPerson.GetAddress;

result := faddress;

end;

метод изменения значения свойства Address:

procedureTPerson.SetAddress(NewAddress:TAddress);

iffaddress = ‘’

thenfaddress := NewAddress;

end;

 

Чтобы присвоить значение свойству Address объекта student, в программе достаточно использовать инструкцию

student.Address := ‘г. Тюмень, ул. Мельникайте, 75, кв. 6’

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

student.SetAddress(‘г. Тюмень, ул. Мельникайте, 75, кв. 6’)

Таким образом, инструкции, обеспечивающие создание объекта класса TPerson и установку его свойств, могут выглядеть так:

student := TPerson.Create(‘ИвановА.А.’);

student.Address := ‘г. Тюмень, ул. Мельникайте, 75, кв. 6’

 

2.Наследование

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

Такой механизм получения новых классов называется порождением.

При этом новый, порожденный класс (потомок) наследует свойства и методы своего базового, родительского класса

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

Реализация конструктора класса TProfessor:

constructorTProfessor.Create(Name: TName; dep: string);