|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Множественное наследование: суть, необходимость, проблемы. ИнтерфейсыПри написании сложных приложений часто возникает ситуация, когда класс должен комбинировать функциональность двух или более различных классов. Это может быть решено вставкой двух объектов в объект-контейнер. Другим решением будет объявление потомка от двух классов. Это называется множественным наследованием. При множественном наследовании потомок наследует все методы и свойства всех своих предков. Интерфейс объекта, или просто интерфейс, существует во многих языках как инструмент решения той же проблемы, что и у множественного наследования. Интерфейс определяет методы, которые могут быть реализованы в классе. Интерфейсы объявляются как классы, но им не могут быть прямо приписаны значения, и они не имеют определений своих методов. Скорее, у любого класса, поддерживающего этот интерфейс, есть ответственность обеспечить реализация методов интерфейса. Указатель на интерфейс может указывать на объект класса, который реализует этот интерфейс. Однако только методы, объявленные в интерфейсе, могут быть вызваны, используя этот указатель. Интерфейс может иметь предков и наследовать все их методы. Но интерфейс не реализует методы. Классы, поддерживающие интерфейс, должны реализовывать его методы. Паттерны. Composite Объединяет объекты в древовидную структуру для представления иерархии от частного к целому. Компоновщик позволяет клиентам обращаться к отдельным объектам и к группам объектов одинаково. Как правило состоит из общего интерфейса (CShape) для объектов и некоторого класса (CGroup), содержащего в себе коллекцию из CShape’ов, а методы переопределенные в CGroup работют для каждого элемента коллекции, что позволяет получить некоторую иерархичную структуру. Применение – слои в photoshop, которые могут располагаться в группах, которые в свою очередь тоже могут быть в группах.
Observer Определяет зависимость типа «один ко многим» между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом событии. Состоит из источника(CSubject) и приемников(CObserver). Приемники могут подписываться к источнику и после чего получать сообщения в момент, когда источник меняет своё состояние. Применение – различного рода оповещения от операторов, которым совершенно без разницы что мы будем делать с полученным смс, т.к. их дело – уведомить нас, но мы так же можем отключить уведомляшечки, тем самым отписавшись от получения сообщения при событии.
Prototype Создает новые объекты по образу и подобию исходных объектов. Состоит из абстрактного класса с методом clone() и унаследованных от него конкретных классов реализующих clone() и возвращающих копию себя. Применение – копипастэ(?)
Command Позволяет реализовывать команды которые можно выполнить и затем в случае необходимости отменить. Абстрактный класс состоит из метода execute который применяет действие для некоторого объекта, и unexecute, который отменяет созданное действие. При Execute запоминается выполненное действие, а при unexecute производится выполнение противоположного по смыслу действия. Применение – undo/redo в любом его проявлении. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |