Виды отношений между классами
Стр 1 из 3Следующая ⇒ Учреждение образования «Гомельский торгово-экономический колледж» Белкоопсоюза
ЛАБОРАТОРНАЯ РАБОТА №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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|