Вопрос№27.Отношения между классами 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Вопрос№27.Отношения между классами



Каждый класс, как не раз отмечалось, играет две роли: он является модулем – архитектурной единицей, и он имеет содержательный смысл, определяя некоторый тип данных. Но классы программной системы - это ансамбль, в котором классы, играя свои роли, не являются независимыми -все они находятся в определенных отношениях друг с другом. Два основных типа отношений между классами определены в ОО-системах. Первое отношение "клиенты и поставщики", называется часто клиентским отношением или отношением вложенности (встраивания). Второе отношение "родители и наследники" называется отношением наследования.Определение 1. Классы А и В находятся в отношении "клиент-поставщик", если одним из полей класса В является объект класса А. Класс А называется поставщиком класса В, класс В называется клиентом класса А.Определение 2. Классы А и В находятся в отношении "родитель - наследник", если при объявлении класса В класс А указан в качестве родительского класса. Класс А называется родителем класса В,класс В называется наследником класса А.Оба отношения - наследования и вложенности - являются транзитивными. Если В - клиент А и С -клиент В, то отсюда следует, что С - клиент А. Если В - наследник А и С - наследник В, то отсюда следует, что С - наследник А.Прямые клиенты и поставщики, прямые родители и наследники относятся к соответствующему уровню.Прямые классы-наследники часто называются сыновними или дочерними классами. Непрямые родители называются предками, а их непрямые наследники - потомками.Замечу, что цепочки вложенности и наследования могут быть достаточно длинными. Например, библиотечные классы, составляющие систему Microsoft Office, полностью построены на отношении вложенности. При программной работе с объектами Word можно начать с объекта, задающего приложение Word, и добраться до объекта, задающего отдельный символ в некотором слове некоторого предложения одного из открытых документов Word. Для выбора нужного объекта можно задать такую цепочку: приложение Word - коллекция документов - документ -область документа - коллекция абзацев - абзац - коллекция предложений -предложение – коллекция слов - слово - коллекция символов - символ. В этой цепочке каждому понятию соответствует класс библиотеки Microsoft Office, где каждая пара соседствующих классов связана отношением "поставщик-клиент".Классы библиотеки FCL связаны как отношением вложенности, так и отношением наследования.Длинные цепочки наследования достаточно характерны для классов этой библиотеки.При проектировании классов часто возникает вопрос, какое же отношение между классами нужно построить. Рассмотрим совсем простой пример двух классов - Square и Rectangle, описывающих квадраты и прямоугольники. Наверное, понятно, что эти классы следует связать скорее отношением наследования, чем вложенности; менее понятным остается вопрос, а какой из этих двух классов следует сделать родительским. Еще один пример двух классов - Car и Person, описывающих автомобиль и персону. Найти правильные ответы на эти вопросы проектирования классов помогает понимание того, что отношение"клиент-поставщик" задает отношение "имеет" ("has"), а отношение наследования задает отношение"является"("isa"). В случае классов Square и Rectangle понятно, что каждый объект квадрат"является" прямоугольником, поэтому между этими классами имеет место отношение наследования, и родительским классом является класс Rectangle, а класс Square является его потомком.В случае автомобилей, персон и владельцев авто также понятно, что владелец "имеет" автомобиль и

"является" персоной. Поэтому класс Person_of_Car является клиентом класса Car и наследником класса Person.

 

 



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 148; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.119.199 (0.003 с.)