Известно, что основной задачей первых трех десятилетий компьютерной эры являлось развитие аппаратных



Pdf көрінісі
бет55/78
Дата30.09.2024
өлшемі1,76 Mb.
#146202
түріЛекция
1   ...   51   52   53   54   55   56   57   58   ...   78
Байланысты:
материалы ТРСПО 2024

Рис. 11.12. 
Отношения зависимости 
На этом рисунке изображена еще одна зависимость, которая показывает, что класс Просмотр Заказа использует класс 
Заказ. Причем Заказ ничего не знает о Просмотре Заказа. Данная зависимость помечена стереотипом «friend», который 
расширяет простую зависимость, определенную в языке. Отметим, что отношение зависимости очень разнообразно — в 
настоящее время язык предусматривает 17 разновидностей зависимости, различаемых по стереотипам. 
Обобщение — 
отношение между общим предметом (суперклассом) и специализированной разновидностью этого предмета 
(подклассом). Подкласс может иметь одного родителя (один суперкласс) или несколько родителей (несколько суперклассов). 
Во втором случае говорят о множественном наследовании. 
Как показано на рис. 11.13, подкласс Летающий шкаф является наследником суперклассов Летающий предмет и 
Хранилище вещей. Этому подклассу достаются в наследство все свойства и операции двух классов-родителей. 
Множественное наследование достаточно сложно и коварно, имеет много «подводных камней». Например, подкласс 
Яблочный_Пирог не следует производить от суперклассов Пирог и Яблоко. Это типичное неправильное использование 
множественного наследования: потомок наследует все свойства от его родителя, хотя обычно не все свойства применимы к 
потомку. Очевидно, что Яблочный_Пирог является Пирогом, но не является Яблоком, так как пироги не растут на деревьях. 
Рис. 11.13. 
Множественное наследование 
Еще более сложные проблемы возникают при наследовании от двух классов, имеющих общего родителя. Говорят, что в 
результате образуется ромбовидная решетка наследования (рис. 11.14). 
Рис. 11.14. 
Ромбовидная решетка наследования 
Полагаем, что в подклассах Официант и Певец операция работать суперкласса Работник переопределена в соответствии с 
обязанностью подкласса (работа официанта состоит в обслуживании едой, а певца — в пении). Возникает вопрос — какую 
версию операции работать унаследует Поющий_официант? А что делать со свойствами, доставшимися в наследство от 
родителей и общего прародителя? Хотим ли мы иметь несколько копий свойства или только одну? 
Все эти проблемы увеличивают сложность реализации, приводят к введению многочисленных правил для обработки 
особых случаев. 
Реализация 
— семантическое отношение между классами, в котором класс-приемник выполняет реализацию операций 
интерфейса класса-источника. Например, на рис. 11.15 показано, что класс Каталог должен реализовать интерфейс 
Обработчик каталога, то есть Обработчик каталога рассматривается как источник, а Каталог — как приемник. 
Рис. 11.15. 
Реализация интерфейса 
Интерфейс Обработчик каталога позволяет клиентам взаимодействовать с объектами класса Каталог без знания той 
дисциплины доступа, которая здесь реализована (LIFO — последний вошел, первый вышел; FIFO — первый вошел, первый 
вышел и т. д.). 


Достарыңызбен бөлісу:
1   ...   51   52   53   54   55   56   57   58   ...   78




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет