Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Виды отношений между классами




Учреждение образования «Гомельский торгово-экономический колледж» Белкоопсоюза

  Рассмотрено на заседании цикловой комиссии «Информатики и программирования» Протокол № __ от «__»_____________2012 г. Председатель цикловой комиссии _______________________ Н.С. Васьковцова

 

ЛАБОРАТОРНАЯ РАБОТА №1

«Изучение принципов работы классов»

 

По дисциплине «Объектно-ориентированное программирование»

Для групп П-21, П-22, П-23

 

специальность:

2-40 01 01 «Программное обеспечение информационных технологий»

специализация:

2-40 01 01 35 «Программное обеспечение обработки экономической и деловой информации»

2-40 01 01 33 «Компьютерная графика»

 

Разработала преподаватель

О.Л. Иткина

 

Гомель, 2012


Цель работы: изучить принципы работы классов

Теоретические сведения:

Понятия объекта и класса тесно связаны. Тем не менее существует важное различие между этими понятиями. Класс — это абстракция существенных характеристик объекта.

 

Общая характеристика классов

Класс — описание множества объектов, которые разделяют одинаковые свойства, операции, отношения и семантику (смысл). Любой объект — просто экземпляр класса. Как показано на рис. 1, различают внутреннее представление класса (реализацию) и внешнее представление класса (интерфейс).

Интерфейс объявляет возможности (услуги) класса, но скрывает его структуру и поведение. Иными словами, интерфейс демонстрирует внешнему миру абстракцию класса, его внешний облик. Интерфейс в основном состоит из объявлений всех операций, применимых к экземплярам класса. Он может также включать объявления типов, переменных, констант и исключений, необходимых для полноты данной абстракции.

Рис. 1 Структура представления класса

 

Интерфейс может быть разделен на 3 части:

публичную (public), объявления которой доступны всем клиентам;

защищенную (protected), объявления которой доступны только самому классу, его подклассам и друзьям;

приватную (private), объявления которой доступны только самому классу и его друзьям.

Другом класса называют класс, который имеет доступ ко всем частям этого класса (публичной, защищенной и приватной). Иными словами, от друга у класса нет секретов.

Реализация класса описывает секреты поведения класса. Она включает реализации всех операций, определенных в интерфейсе класса.

Виды отношений между классами

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

Всего существует четыре основных вида отношений между классами:

ассоциация (фиксирует структурные отношения — связи между экземплярами классов);

зависимость (отображает влияние одного класса на другой класс);

обобщение-специализация («is а»-отношение);

целое-часть («part of»-отношение).

Для покрытия основных отношений большинство объектно-ориентированных языков программирования поддерживает следующие отношения:

1) ассоциация;

2) наследование;

3) агрегация;

4) зависимость;

5) конкретизация;

6) метакласс;

7) реализация.

Ассоциации обеспечивают взаимодействия объектов, принадлежащих разным классам. Они являются клеем, соединяющим воедино все элементы программной системы. Благодаря ассоциациям мы получаем работающую систему. Без ассоциаций система превращается в набор изолированных классов-одиночек.

Наследование — наиболее популярная разновидность отношения обобщение-специализация. Альтернативой наследованию считается делегирование. При делегировании объекты делегируют свое поведение родственным объектам. При этом классы становятся не нужны.

Агрегация обеспечивает отношения целое-часть, объявляемые для экземпляров классов.

Зависимость часто представляется в виде частной формы — использования, которое фиксирует отношение между клиентом, запрашивающим услугу, и сервером, предоставляющим эту услугу.

Конкретизация выражает другую разновидность отношения обобщение-специализация. Применяется в таких языках, как Ada 95, C++, Эйфель.

Отношения метаклассов поддерживаются в языках SmallTalk и CLOS. Метакласс — это класс классов, понятие, позволяющее обращаться с классами как с объектами.

Реализация определяет отношение, при котором класс-приемник обеспечивает свою собственную реализацию интерфейса другого класса-источника. Иными словами, здесь идет речь о наследовании интерфейса. Семантически реализация — это «скрещивание» отношений зависимости и обобщения-специализации.

 

Ход работы:

Задание 1. Наберите и проанализируйте программу. Определите в данной программе принципы работы созданных классов. Объясните результаты выполнения программы.

 

PROGRAM OO_Beispiel_01;

USES Crt;

{ Декларация типов объектов (классов) }

TYPE

Person-OBJЕСТ Name,

Vorname: STRING; PROCEDURE Einlesen; PROCEDURE Ausgeben; END;

{ Методы для класса "Person" }

PROCEDURE Person.Einlesen; BEGIN

Write('Фамилия ');

ReadLn(Name);

Write ('Имя');

ReadLn(Vorname); END;

PROCEDURE Person.Ausgeben; BEGIN

WriteLn;

Write ('Фамилия:');

Write(Name);

Wrlte (Имя: ');

WriteLn(Vorname); END;

{ Декларация экземпляров (Обьектов - переменных) }

VAR

Pers: Person;

BEGIN

Pers.Einlesen;

Pers.Ausgeben;

ReadLn; { Ожидание нажатия клавиши" Enter" }

END.

В программе объявляется класс "Person", которому поставлены в соответствие два поля — "Name" и "Forname" — и методы — "Einlesen" и "Ausgaben". Как видно из текста программы, методы только объявляются в декларации класса, а полностью специфици­руются (описываются) несколько позже. В таких спецификациях имя метода (процедуры или функции) предваряется префиксом —именем класса, к которому относится данный метод. Это необходимо, т.к. в разных классах могут использоваться методы, разные по содер­жанию, но одинаковые по именам. Без префикса привязка методов к своим классам была бы невозможной. В программе объявлен объект "Pers", принадлежащий классу "Person". В главной программе мето­ды "Einlesen" и "Ausgeben" применены к этому объекту "Pers".

Класс "Person" в определенном смысле может рассматриваться как класс верхнего уровня. Персоны могут обладать различными качествами, что позволяет выделять их из класса "Person". Так, совокупность персон (составляющих класс "Person") может быть по­делена на два подкласса — "Kraftfahrer" (водитель) и "Nichkraftfahrer" (неводитель). Объекты обоих подклассов имеют те же поля, что и объекты класса "Person": поле "Name" (фамилия) и " Vorname" (имя). Кроме того, для подклассов можно вывести допол­нительные поля, отсутствующие в классе верхнего уровня. Так, для класса "Person" можно объявить, что подкласс водителей имеет до­полнительные поля идентификатора водительских прав и марки ав­томобиля.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...