Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Ромбовидное наследование (число прочтений - 24261 )
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Ромбовидное наследование
01. Июня 2006 :: 10:58
Печать  
Считаете ли вы корректным использование "ромбовидного" наследования?
Ответ обоснуйте.
  
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Ромбовидное наследование
Ответ #1 - 01. Июня 2006 :: 11:16
Печать  
Правильно сформулирован вопрос. Поддерживаю!
А вот обоснуйте ответ!  Улыбка
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #2 - 01. Июня 2006 :: 11:19
Печать  
Почему бы и нет? Если я правильно понимаю, то это что-то типа:
CBase1
CBase11: CBase1
CBase12: CBase1
CBase2: CBase11, CBase12
Так?
Тогда в качестве объяснения позиции "за" такой пример:
Есть базовый класс "РегистрВзаимозачетов", есть наследники от него "ВзаимозачетыПоставщиков" и "ВзаимозачетыПокупателей". Тогда для учета бартера удобно сделать наследника от этих классов "Бартер".
  

FormEx developer
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Ромбовидное наследование
Ответ #3 - 01. Июня 2006 :: 11:33
Печать  
А вот и нет. Удобнее будет сделать класс, который будет отслеживать взаимоотношения объектов "ВзаимозачетыПоставщиков" и "ВзаимозачетыПокупателей".

Обоснование не принимается.
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #4 - 01. Июня 2006 :: 11:34
Печать  
Цитата:
удобно сделать наследника от этих классов "Бартер".

Почему именно наследование, а не агрегация?

Тот же вопрос развернут в любимой ссылке Палыча: http://skipy.dev.juga.ru/philosophy/inheritance.html
Настоятельно рекомендую ознакомиться.
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ромбовидное наследование
Ответ #5 - 01. Июня 2006 :: 11:35
Печать  
Вопрос не в том, продажная любовь - это приемлемо или нет.
Независимо от нашего решения, она существует объективно.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #6 - 01. Июня 2006 :: 11:40
Печать  
kms писал(а) 01. Июня 2006 :: 11:35:
Вопрос не в том, продажная любовь - это приемлемо или нет.
Независимо от нашего решения, она существует объективно.

Вопрос не в том: объявляем ли мы тотальную войну продажной любви или нет.
Вопрос в том, собираемся ли мы сами ее использовать, или же для нас это недопустимо.

В процессе данной дискуссии кто-нибудь наверняка изменит свое мнение.
Кто-то просто узнает для себя много нового.

Так что активнее, господа.
  
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Ромбовидное наследование
Ответ #7 - 01. Июня 2006 :: 11:40
Печать  
Если продажная любовь не регламентирована, то тогда это проблема того, кто ею пользуется.

А если в Яве ее нет, то ее и нет. Точка.
  
Наверх
 
IP записан
 
Kalmar
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 4
Зарегистрирован: 21. Мая 2006
Re: Ромбовидное наследование
Ответ #8 - 02. Июня 2006 :: 04:34
Печать  
Цитата:
Если продажная любовь не регламентирована, то тогда это проблема того, кто ею пользуется.

Но есть такие герои, которые если захотят, то регламентируют.  Улыбка
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #9 - 02. Июня 2006 :: 05:04
Печать  
Отрицать ромбовидное наследование бессмыслено, оно есть хоть это и признак непродуманного дизайна.
дежавю, сейчас найду веточку с итленда на эту тему.
  
Наверх
ICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #10 - 02. Июня 2006 :: 05:09
Печать  
  
Наверх
ICQ  
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Ромбовидное наследование
Ответ #11 - 06. Июня 2006 :: 13:24
Печать  
А если такой пример

базовый класс Живое существо

Млекопитающее : Живое существо
Птица: Живое существо

Утконос: Млекопитающее, Птица
  
Наверх
ICQ  
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #12 - 06. Июня 2006 :: 13:26
Печать  
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 13:24:
А если такой пример

базовый класс Живое существо

Млекопитающее : Живое существо
Птица: Живое существо

Утконос: Млекопитающее, Птица


угу, вот как раз и есть пример ошибочного дизайна
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #13 - 06. Июня 2006 :: 13:38
Печать  
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 13:24:
Утконос: Млекопитающее, Птица

У армянского радио спрашивают: что будет если скрестить ежа и ужа. Армянское радио отвечает: 2 метра колючей проволоки.

Вы меня извините, но я еще немного помню школьный курс биологии.
  
Наверх
www  
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Ромбовидное наследование
Ответ #14 - 06. Июня 2006 :: 13:39
Печать  
А как правильно?
  
Наверх
ICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #15 - 06. Июня 2006 :: 13:39
Печать  
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 13:39:
А как правильно?

Утконос: ЖивоеСущество.
  
Наверх
www  
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Ромбовидное наследование
Ответ #16 - 06. Июня 2006 :: 13:46
Печать  
В этом случае свойство (или как это правильно назвать? ) - кормление_дитенышей_молоком() придется определять и для класса "млекопитающее", и для класса "утконос". А метод откладыватьЯйца() - для классов "Птица" и для "Утконос"

Если следовать принципу, на который сслыются в статье http://skipy.dev.juga.ru/philosophy/inheritance.html (тут где-то уже была ссылка на эту статью), то в моем варианте все правильно
Утконос ЯВЛЯЕТСЯ млекопитающим и утконос ЯВЛЯЕТСЯ птицей. ИМХО.
  
Наверх
ICQ  
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #17 - 06. Июня 2006 :: 13:50
Печать  
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 13:46:
В этом случае свойство (или как это правильно назвать? ) - кормление_дитенышей_молоком() придется определять и для класса "млекопитающее", и для класса "утконос". А метод откладыватьЯйца() - для классов "Птица" и для "Утконос"

Если следовать принципу, на который сслыются в статье http://skipy.dev.juga.ru/philosophy/inheritance.html (тут где-то уже была ссылка на эту статью), то в моем варианте все правильно
Утконос ЯВЛЯЕТСЯ млекопитающим и утконос ЯВЛЯЕТСЯ птицей. ИМХО.


тут будем использовать паттерн стратегия
  
Наверх
 
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Ромбовидное наследование
Ответ #18 - 06. Июня 2006 :: 13:54
Печать  
Pelmen писал(а) 06. Июня 2006 :: 13:50:
тут будем использовать паттерн стратегия


Ой. А это как? Круглые глаза если можно объяснить на пальцах...
  
Наверх
ICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #19 - 06. Июня 2006 :: 14:18
Печать  
У меня встречный вопрос.
Дельфин: Рыба, Млекопитающее
по-вашему нормально?
С китом та же ерунда...
  
Наверх
www  
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Ромбовидное наследование
Ответ #20 - 06. Июня 2006 :: 14:26
Печать  
fez писал(а) 06. Июня 2006 :: 14:18:
У меня встречный вопрос.
Дельфин: Рыба, Млекопитающее
по-вашему нормально?
С китом та же ерунда...


Неа, дельфин не рыба. Он икру не мечет, жабрами не дышит. Какая ж он рыба? Про кита - то же самое.
  
Наверх
ICQ  
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #21 - 06. Июня 2006 :: 14:29
Печать  
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 13:54:
Pelmen писал(а) 06. Июня 2006 :: 13:50:
тут будем использовать паттерн стратегия


Ой. А это как? Круглые глаза если можно объяснить на пальцах... 


И утконос и птица агрегирует объект яйценесущее
И утконос и животное агрегируют объект млекопитающее
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #22 - 06. Июня 2006 :: 14:31
Печать  
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 14:26:
fez писал(а) 06. Июня 2006 :: 14:18:
У меня встречный вопрос.
Дельфин: Рыба, Млекопитающее
по-вашему нормально?
С китом та же ерунда...

Неа, дельфин не рыба. Он икру не мечет, жабрами не дышит. Какая ж он рыба? Про кита - то же самое.

Ну как это, "какая ж он рыба"? В воде плавает, хвост, плавники - в наличии... По мне, так рыба, да и только.

Может быть просто ввести понятие "водоплавающее млекопитающее"? И тогда станет ясно, что утконос - это просто "яйцекладущее млекопитающее".
  
Наверх
www  
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #23 - 06. Июня 2006 :: 14:37
Печать  
fez писал(а) 06. Июня 2006 :: 14:31:
Может быть просто ввести понятие "водоплавающее млекопитающее"? И тогда станет ясно, что утконос - это просто "яйцекладущее млекопитающее".

А про клюв забыл? Нерешительный
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #24 - 06. Июня 2006 :: 14:40
Печать  
Pelmen писал(а) 06. Июня 2006 :: 14:37:
fez писал(а) 06. Июня 2006 :: 14:31:
Может быть просто ввести понятие "водоплавающее млекопитающее"? И тогда станет ясно, что утконос - это просто "яйцекладущее млекопитающее".

А про клюв забыл? Нерешительный

Яйцекладущее млекопитающее с клювом.
У него еще и яйца не скорупчатые, а кожистые. И клюв, кстати, тоже мягкий. Так что такое извращение и заново описать не грех.
  
Наверх
www  
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Ромбовидное наследование
Ответ #25 - 06. Июня 2006 :: 14:42
Печать  
fez писал(а) 06. Июня 2006 :: 14:31:
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 14:26:
fez писал(а) 06. Июня 2006 :: 14:18:
У меня встречный вопрос.
Дельфин: Рыба, Млекопитающее
по-вашему нормально?
С китом та же ерунда...

Неа, дельфин не рыба. Он икру не мечет, жабрами не дышит. Какая ж он рыба? Про кита - то же самое.

Ну как это, "какая ж он рыба"? В воде плавает, хвост, плавники - в наличии... По мне, так рыба, да и только.

Может быть просто ввести понятие "водоплавающее млекопитающее"? И тогда станет ясно, что утконос - это просто "яйцекладущее млекопитающее".


Ммм.... нет млекопитающих, кроме утконоса, которые несут яйца. Это чисто птичье свойство...
А вот кроме дельфина в воде плавают и кит, и другие - так что тут как раз класс "водоплавающее млекопитающее" подойдет. С моей точки зрения, специфические свойства класса "рыба" - это жабры и икра. "Млекопитающее" - это выкармливание дитенышей молоком.
  
Наверх
ICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #26 - 06. Июня 2006 :: 14:43
Печать  
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 14:42:
Ммм.... нет млекопитающих, кроме утконоса, которые несут яйца. Это чисто птичье свойство...

Черепаха с крокодилом тоже птицы?
  
Наверх
www  
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Ромбовидное наследование
Ответ #27 - 06. Июня 2006 :: 14:44
Печать  
Pelmen писал(а) 06. Июня 2006 :: 14:29:
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 13:54:
Pelmen писал(а) 06. Июня 2006 :: 13:50:
тут будем использовать паттерн стратегия


Ой. А это как? Круглые глаза если можно объяснить на пальцах...  


И утконос и птица агрегирует объект яйценесущее
И утконос и животное агрегируют объект млекопитающее


А можно немножко подробнее про агрегацию в принципе? Когда я (достаточно давно) немного занималась ООП, было "наследование" и "полиморфизм", а "агрегирование" к сожалению мне не известно.  Интуитивно я что-то понимаю, но хотелось бы понимать осознано.
  
Наверх
ICQ  
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Ромбовидное наследование
Ответ #28 - 06. Июня 2006 :: 14:46
Печать  
fez писал(а) 06. Июня 2006 :: 14:43:
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 14:42:
Ммм.... нет млекопитающих, кроме утконоса, которые несут яйца. Это чисто птичье свойство...

Черепаха с крокодилом тоже птицы?

Хм... ну ладно, пусть тогда будет так:

базовый класс Живое существо

Млекопитающее : Живое существо
Яйцекладущее: Живое существо

Утконос: Млекопитающее, Яйцекладущее
  
Наверх
ICQ  
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #29 - 06. Июня 2006 :: 14:46
Печать  
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 14:44:
Pelmen писал(а) 06. Июня 2006 :: 14:29:
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 13:54:
Pelmen писал(а) 06. Июня 2006 :: 13:50:
тут будем использовать паттерн стратегия


Ой. А это как? Круглые глаза если можно объяснить на пальцах... 


И утконос и птица агрегирует объект яйценесущее
И утконос и животное агрегируют объект млекопитающее


А можно немножко подробнее про агрегацию в принципе? Когда я (достаточно давно) немного занималась ООП, было "наследование" и "полиморфизм", а "агрегирование" к сожалению мне не известно.


Агрегация включение объекта в состав другого, значением либо по ссылке
  
Наверх
 
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Ромбовидное наследование
Ответ #30 - 06. Июня 2006 :: 14:51
Печать  
А как тогда вызываются методы агрегированного объекта?
  
Наверх
ICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #31 - 06. Июня 2006 :: 14:51
Печать  
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 14:46:
Утконос: Млекопитающее, Яйцекладущее


Танк: Пушка, Пулемет, Гусеница

Палыч прав.
  
Наверх
www  
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Ромбовидное наследование
Ответ #32 - 06. Июня 2006 :: 14:56
Печать  
fez писал(а) 06. Июня 2006 :: 14:51:
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 14:46:
Утконос: Млекопитающее, Яйцекладущее


Танк: Пушка, Пулемет, Гусеница

Палыч прав.


Нет, ну вы мне все-таки объясните
Я понимаю, что Танк не является не пушкой, не пулеметом, не гусеницей.
Но разве утконос не является и млекопитающим, и яйцекладущим одновременно? Не понимаю...
  
Наверх
ICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #33 - 06. Июня 2006 :: 14:58
Печать  
У утконоса есть яйца и есть молоко.
  
Наверх
www  
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #34 - 06. Июня 2006 :: 14:59
Печать  
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 14:51:
А как тогда вызываются методы агрегированного объекта?

Код
Выбрать все
класс АбстрактнаяСтратегия {
    КормитьДетеныша();
}

класс СтратегияМлекопитающего extends АбстрактнаяСтратегия {
    КормитьДетеныша();
}

класс Млекопитающее extends ЖивоеСущество {
    АбстрактнаяСтратегия Кормление;

    КормитьДетеныша() {
	    Кормление.КормитьДетеныша();
    }
}
 



за именование чур камнями не кидаться
  
Наверх
 
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #35 - 06. Июня 2006 :: 15:02
Печать  
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 14:56:
fez писал(а) 06. Июня 2006 :: 14:51:
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 14:46:
Утконос: Млекопитающее, Яйцекладущее


Танк: Пушка, Пулемет, Гусеница

Палыч прав.


Нет, ну вы мне все-таки объясните
Я понимаю, что Танк не является не пушкой, не пулеметом, не гусеницей.
Но разве утконос не является и млекопитающим, и яйцекладущим одновременно? Не понимаю...



тут о дизайне надо думать а не о том кем он является
Важно выделить принадлежность утконоса к определенному классу. И реализовать остальную необходимую функциональность.
  
Наверх
 
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #36 - 06. Июня 2006 :: 15:03
Печать  
fez писал(а) 06. Июня 2006 :: 14:58:
У утконоса есть яйца и есть молоко.


из одного утконоса можно приготовить много вкусного омлета.
  
Наверх
 
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #37 - 06. Июня 2006 :: 15:08
Печать  
Мне было откровение свыше.
Я хочу опровергнуть ваши пустые утверждения.
У утконоса нет молока и он не несет яиц.

Спросите меня почему...
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #38 - 06. Июня 2006 :: 15:09
Печать  
Pelmen писал(а) 06. Июня 2006 :: 15:03:
из одного утконоса можно приготовить много вкусного омлета.

Кролики - это не только ценный мех, но и три-четыре килограмма легкоусвояемого диетического мяса...

мда.
  
Наверх
www  
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #39 - 06. Июня 2006 :: 15:11
Печать  
Короче вот к чему приводит ромбовидное наследование.
Не пользуйтесь им никогда.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Ромбовидное наследование
Ответ #40 - 06. Июня 2006 :: 17:48
Печать  
fez писал(а) 06. Июня 2006 :: 14:58:
У утконоса есть яйца и есть молоко.

А я не понял. Ваш утконос - это мальчик или девочка? Смех
  

De quelle planète es-tu?
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #41 - 07. Июня 2006 :: 01:50
Печать  
kms писал(а) 06. Июня 2006 :: 17:48:
fez писал(а) 06. Июня 2006 :: 14:58:
У утконоса есть яйца и есть молоко.

А я не понял. Ваш утконос - это мальчик или девочка? Смех

А он у нас полиморфи гермафродит, во!
  
Наверх
www  
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #42 - 07. Июня 2006 :: 03:48
Печать  
kms писал(а) 06. Июня 2006 :: 17:48:
fez писал(а) 06. Июня 2006 :: 14:58:
У утконоса есть яйца и есть молоко.

А я не понял. Ваш утконос - это мальчик или девочка? Смех


ты знаал Злой
  
Наверх
 
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Ромбовидное наследование
Ответ #43 - 07. Июня 2006 :: 11:35
Печать  
Pelmen писал(а) 06. Июня 2006 :: 14:59:
Bess_Tolkovaia писал(а) 06. Июня 2006 :: 14:51:
А как тогда вызываются методы агрегированного объекта?

Код
Выбрать все
класс АбстрактнаяСтратегия {
    КормитьДетеныша();
}

класс СтратегияМлекопитающего extends АбстрактнаяСтратегия {
    КормитьДетеныша();
}

класс Млекопитающее extends ЖивоеСущество {
    АбстрактнаяСтратегия Кормление;

    КормитьДетеныша() {
	    Кормление.КормитьДетеныша();
    }
}
 



за именование чур камнями не кидаться


Спасибо. Но ...
Код
Выбрать все
класс АбстрактнаяСтратегия {
    КормитьДетеныша();
}

класс СтратегияМлекопитающего extends АбстрактнаяСтратегия {
    КормитьДетеныша();
    // если правильно понимаю, тут должна быть реализация метода
}

класс СтратегияПтицы extends АбстрактнаяСтратегия {
    КормитьДетеныша();
   // тут тоже должна быть реализация метода
}

класс Млекопитающее extends ЖивоеСущество {
    АбстрактнаяСтратегия Кормление;

    КормитьДетеныша() {
	    Кормление.КормитьДетеныша();
             // не понятно (мне, как блондинке), каким способом
             // тут покормят дитеныша
    }
}
 


  
Наверх
ICQ  
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Ромбовидное наследование
Ответ #44 - 07. Июня 2006 :: 11:47
Печать  
Все, почитала соседние темы и поняла.
Да, убедили, тут вполне можно обойтись без ромбовидного и прочего множественного наследования.

Пы.сы. А вообще тут хть кто-то "за них" есть?
  
Наверх
ICQ  
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #45 - 07. Июня 2006 :: 12:17
Печать  
Код
Выбрать все
класс АбстрактнаяСтратегия {
    КормитьДетеныша();
}

класс СтратегияМлекопитающего extends АбстрактнаяСтратегия {
    КормитьДетеныша();
}

класс Млекопитающее extends ЖивоеСущество {
    АбстрактнаяСтратегия Кормление;

    Млекопитающее() {
	  Кормление = new СтратегияМлекопитающего();
    }

    КормитьДетеныша() {
	    Кормление.КормитьДетеныша();
    }
}
 



тут конечно по идее свойство Кормление надо вынести в класс родителя ... но писать лень
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #46 - 07. Июня 2006 :: 12:39
Печать  
Bess_Tolkovaia писал(а) 07. Июня 2006 :: 11:47:
Пы.сы. А вообще тут хть кто-то "за них" есть?

За утконосов? Боюсь, что никого нет.
  
Наверх
www  
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Ромбовидное наследование
Ответ #47 - 07. Июня 2006 :: 14:36
Печать  
fez писал(а) 07. Июня 2006 :: 12:39:
Bess_Tolkovaia писал(а) 07. Июня 2006 :: 11:47:
Пы.сы. А вообще тут хть кто-то "за них" есть?

За утконосов? Боюсь, что никого нет.


Бедные утконосы...
А за множественное наследование?
  
Наверх
ICQ  
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #48 - 07. Июня 2006 :: 15:09
Печать  
Bess_Tolkovaia писал(а) 07. Июня 2006 :: 14:36:
fez писал(а) 07. Июня 2006 :: 12:39:
Bess_Tolkovaia писал(а) 07. Июня 2006 :: 11:47:
Пы.сы. А вообще тут хть кто-то "за них" есть?

За утконосов? Боюсь, что никого нет.


Бедные утконосы...
А за множественное наследование?



а в джаве его нет

ps: а в питоне есть  Смех
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Ромбовидное наследование
Ответ #49 - 07. Июня 2006 :: 16:21
Печать  
А питону пофиг. Там , вроде, нет и виртуального наследования.

Все родительские объекты агрегируются в кучу, и все дела.

А кто пошел на мины, тот сам и виноват.  Смех
  
Наверх
 
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #50 - 07. Июня 2006 :: 16:58
Печать  
там то же что и в 1С++ насколько я помню
суть в том, что и не надо его использовать.
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #51 - 08. Июня 2006 :: 03:07
Печать  
Цитата:
а в джаве его нет

А как же они (джаверы) живут без онного (для общего развития)?
  
Наверх
ICQ  
IP записан
 
Pelmen
Full Member
***
Отсутствует



Сообщений: 242
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #52 - 08. Июня 2006 :: 03:14
Печать  
они живут с комфортом
класс может реализовывать несколько интерфейсов, это если тебе нужно наследование интерфейса

если нужно унаследовать реализацию, то вполне можно заменить множественное наследование агрегацией
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Ромбовидное наследование
Ответ #53 - 08. Июня 2006 :: 09:39
Печать  
Bess_Tolkovaia писал(а) 07. Июня 2006 :: 14:36:
fez писал(а) 07. Июня 2006 :: 12:39:
Bess_Tolkovaia писал(а) 07. Июня 2006 :: 11:47:
Пы.сы. А вообще тут хть кто-то "за них" есть?

За утконосов? Боюсь, что никого нет.


Бедные утконосы...
А за множественное наследование?


Нерешительный ммм...  Нерешительный эээ...  Нерешительный А у нас вроде бы тема про ромбовидное наследование, а не про множественное.
Лично я ничего не имею против множественного наследования. Но вот ромбовидное полагаю признаком плохого дизайна и стараюсь сам такого не допускать.
  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать