Demiurg
Guest
>Про агрегирование ни слова
плохо читал. может быть там используется другой термин?
плохо читал. может быть там используется другой термин?
Ты противоречишь сам себе. Если "Foo является Bar", то это в точности то же, что "Foo является особым видом Bar". Ты уж определись хоты бы с языком.Автор оригинала: Screjet
Конечно, авто неля назвать особым видом карбюратора, но вот карбюратор и мотор и кузов и т.д. - это все является автомобилем.
Метод? Имеет. Если бы они не имел права на жизнь, то зачем бы его использовали?Автор оригинала: Demiurg
Довай тогда не будем цепляться за термины, а решим имеет ли данный метод право на жизнь или нет.
Насколько я помню книгу, по крайней мере первые два издания этот термин содержат.Автор оригинала: Demiurg
плохо читал. может быть там используется другой термин?
Абсолютно солгасен, все дело в "и". Все в сборе вполне можно назвать автомобилем. Опять таки, здесь, кажись, нет строгой логики, болше философии..Автор оригинала: Crazy
Ни карбюратор. ни мотор, ни кузов не являютяс автомобилем.
Sorry за термин. Для меня, старого извращенца, он ласкательный.Автор оригинала: Demiurg
ну так нечего его называть извращением
В принципе, эта штука выражает основной принцип наследования интерфейса (однако, задает несколько более общее понятие -- принцип совместимости типов при наследовании). Штука в том, что наследование реализации может приводить к несовместимости по типамю.Автор оригинала: Demiurg
Есть такой принцип подстановки Лисков, который гласит (в вольной интерпретации):
Если класс A является наследником класса B, то везде, где может стоять объект класса B может стоять и объект класса A.
Ни слова лишнего, все истинная правда. Согласен.Автор оригинала: Crazy
Я тебя за язык не тянул. Ищи.
Делегирование и агрегация вместе составляют механизм наследования реализации. В ряде языков это слияние сделано невидимым для глаза.
Вооще, это первый путь к заблуждениям -- говорить о наследовании вообще. Ибо есть два разных неследования: неследование реализации и наследование интерфейса. Смысл и реализация у них разные. В некоторых языках эти механизма доступны по отдельности. В некоторых -- доступен только один из них (пример -- PHP). В некоторых они применяются строго одновременно...
Наследование интерфейса существует (и имеет смысл) только в языках с жесткой типизацией. Общий принцип: если класс B есть наследник класса A, то везде, где разрешено использование класса A, можно использовать класс B.Автор оригинала: Varg
неследование реализации и наследование интерфейса - в чём разница? Пока что я знаю из более менее нормальных языков лишь ПХП. Хотелось бы понять.