Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Создание библиотек классов






Одним из достоинств ООП является возможность создания библиотек классов, на базе которых затем конструируют классы для реализации обьектов реальной задачи. Библиотечные классы при этом описывают в интерфейсной части модуля, а тела методов - в разделе реализации. Например:

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 яаса)






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.