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);