![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Создание библиотек классов
Одним из достоинств ООП является возможность создания библиотек классов, на базе которых затем конструируют классы для реализации обьектов реальной задачи. Библиотечные классы при этом описывают в интерфейсной части модуля, а тела методов - в разделе реализации. Например: Unit Room; Interface Type TRoom = object length, width: real; {поля: длина и ширина комнаты} finction Square: real; {метод определения площади} procedure Init(l, w: real); {инициализирующий метод} end; Implementation Function TRoom.Square; {метод определения площади} Begin Square: = length* width; End; Procedure TRoom.Init; {инициализирующий метод} Begin length: =l; width: =w; End; End. В этом случае основная программа будет подключать соответствующий модуль и работать с классом, его полями и методами, как с ресурсами библиотеки: Program ex; Uses Room; {подключаем модуль с описанием класса TRoom} Var A: TRoom; {объявляем объект-переменную} Begin A.Init(3.5, 5.1); {инициализируем поля объекта} WriteLn('Комната: длина= ', A.length, '; ширина ', A.width); WriteLn('Площадь комнаты =', A.Square); End. В Borland Pascal можно ограничить доступ к полям и методам класса в пределах модуля.Для того описание класса делится на специальные секции: public- секция, содержащая описание общих или общедоступных полей и методов класса; private - секция, содержащая описание внутренних или скрытых полей и методов класса. В описании класса три секции могут чередоваться, причем, если секции компонент не указаны, то по умолчанию принимается, что эти компоненты доступны как общие: Unit < имя модуля>; Interface Туре < имя класса> = object < описание общих полей и методов> private < описание внутренних полей и методов> public < описание общих полей и методов> private < описание внутренних полей и методов> end;... Например, в нашем случае, если обьекты класса TRoom используются только для получения информации о площади комнаты, то можно поля описать в секции private, но тогда доступ к этим полям из программы станет невозможным: Unit RoomHiden; Interface Type TRoom = object private {скрытые компоненты класса} length, width; real; {поля: длина и ширина комнаты) public {общие компоненты класса} function Square: real; {метод определения площади} procedure Init(l, w; real); {инициализирующий метод} end; Implementation Function TRoom.Square; {метод определения площади} Begin Square: = length* width; End; Procedure TRoom.Init; {инициализирующий метод} Begin length: =l; width: =w; End; End. Сокрытие некоторых полей и методов класса упрощает интерфейс класса, т. е. программист, использующий библиотечный класс, не получает лишней для него информации о внутренних механизмах реализации состояния и поведения обьектов данного класса. Одновременно с этим программист, занимающийся разработкой библиотечных классов, получает возможность вносить изменения в реализацию класса, не заботясь об изменении программ, использующих объекты данного класса. Лекция 31. Наследование (2 яаса)
|