Простой вопрос(ООП и лифт)

whirlwind

TDD infected, paranoid
ЗЫ. КА и то лучший пример для ООП: State machine encapsulates State с полиморфными методами exitState, transit
 

fixxxer

К.О.
Партнер клуба
>>В проекте лифта где хороший пример полиморфизма?

Да что угодно. Индикатор этажа/движения - табло/голос. Доступ в лифт - свободный/по смарт-карте/по вводу пин кода. Тут же ACL на какой этаж есть доступ =)
 

whirlwind

TDD infected, paranoid
fixxxer фигасе ты загнул. Пример типичного лифта, всем понятный и доступный, такой есть в каждом доме что бы пощупать :D
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Пример типичного лифта, всем понятный и доступный, такой есть в каждом доме что бы пощупать
Ну, например в моем заштатном городишке есть лифты, вызываемые от ibutton (типа домофонного ключика, ага), и с ключиками вместо кнопок. Причем в довольно обычных домах.
Лифты со смарт-картами тоже видел в одном военизированном учереждении.
 

whirlwind

TDD infected, paranoid
А вообще кто нибудь может привести простой и понятный пример полиморфизма? Что бы без компьютерных штучек дрючек. Мне что-то кроме отношений работодатель-работник ничего не ум не приходит. Пытался сейчас объяснить жене на примере сдачи бухгалтерской отчетности разными бухгалтерами через интернет и хождением налоговую, но четко резюмировать не получилось и все свелось к существованию множества способов, а не к делегированию ответственности :D
 

флоппик

promotor fidei
Команда форума
Партнер клуба
А вообще кто нибудь может привести простой и понятный пример полиморфизма?
Евророзетка типа E+F =)
Точнее, полиморфизмом обладают штепсели, ага )
 

Vin-Diesel

Новичок
У меня новый год был) Новый год моей жизни.. поэтому отсутствовал!
Похоже, что мой вопрос не такой простой как кажется..)
А по поводу зачем оно мне - скучно, делать нечего(относительно..)
 

craz

Нестандартное звание
)) Скучно) вишь как не скучно зато другим стало)
 

StUV

Rotaredom
>> понятный пример полиморфизма?
>> отношений работодатель-работник

whirlwind
совсем запутал своим "понятным примером" ;)
в чем тут полиморфизм ?))

-~{}~ 14.05.10 16:20:

Vin-Diesel
помню, что читал когда-то что-то по С++ и там всю книгу проектировалась программа управления лифтом
вспомнить не смог, ну яндекс в помощь:
http://www.programmersforum.ru/showpost.php?p=128560&postcount=2
 

zerkms

TDD infected
Команда форума
StUV
вот пример обыденнее:

это когда ты берёшь пульт от телевизора и пользуешься им. затем берёшь пульт от ресивера - и тоже нажимаешь на нём кнопки, тоже пользуешься.

девайсы разные. методы работы с ними - одинаковые.
 

StUV

Rotaredom
zerkms
тут был бы полиморфизм, если бы я одним пультом управлял разными девайсами
если полиморфность в том, что я могу нажимать кнопки на разных девайсах... ну наверно - да, отключаем моск и тыкаем в ожидании произвольного результата =)))

--
типа обезьяна с гранатой вместо банана - тоже "полиморфизм в природе" ? ;)

-~{}~ 14.05.10 16:35:

хотя,
в принципе ты прав
но непрограммеру объяснить суть полиморфизма примером с пультами будет очень тяжело =)
 

zerkms

TDD infected
Команда форума
StUV
хм...... придумай тогда ещё очевиднее?

ps: зачем непрограммеру может понадобиться понимание довольно сложного принципа проектирования? :)
 

whirlwind

TDD infected, paranoid
StUV полиморфизм во взаимозаменяемости этих двух бухгалтеров с точки зрения работодателя. Полиморфизм важен с точки зрения пользователя, а не с точки зрения реализации интерфейса. Связь между взаимозаменяемыми объектами может вообще отсутствовать, что и наблюдается в большинстве случаев. А вот делегирование ответственности - это важная часть ООП. Это способ рассматривать систему с разных уровней абстракции.

Нельзя разработать эффективный интерфейс в отрыве от задачи. Например, я могу поехать на поезде, могу полететь на самолете, а могу и на автомобиле. Вроде бы полиморфизм и полная взаимозаменяемость, да? Но тут нет требований, которые предъявляются к транспортному средству. Вполне возможно, что кто то из этих "представителей полиморфизма" не подходит по определенным критериям задачи, например если я собираюсь лететь в отпуск на мальдивы, или привезти машину гравия на дачу. По этому нельзя рассматривать полиморфизм отдельно от пользователя. Взаимозаменяемость сама по себе - вещь бесполезная. Вот как это сформулировать простой и понятной фразой - тут сложно.
 

dimagolov

Новичок
Есть куда более очевидный пример полиморфизма. Это водитель и разные виды машин. Водитель управляет самыми разными автомобилями одинаково.
 

StUV

Rotaredom
zerkms
придумалось (несколько э... анти-гуманное, но пофик =))

если ты бросишь "предмет" (камень) в птицу - она улетит
- в собаку/кошку - тоже // fixed - убежит =)
- в свою собаку не камень, а мяч - поймает и притащит
... (можно много придумать)

управляющий объект - единственный (ты), субъекты действия - животные - птицы, собаки, кошки, слоны, ... - объединяются в иерархию, субъекты события (сообщения) - тоже иерархия, интерфейс единый - зрительный, поведение - полиморфно
=)

-~{}~ 14.05.10 16:50:

whirlwind
у тебя примеры совершенно математические
т.е. я-то понимаю, где там полиморфность, но сама суть термина без способности к мышлению абстракциями не понятна

-~{}~ 14.05.10 16:53:

>> зачем непрограммеру может понадобиться понимание довольно сложного принципа проектирования? :)

zerkms
иногда люди задают странные вопросы по поводу техники/природы/...
проще один раз объяснить один термин и при возникновении нового вопроса не включать поток сознания, а объяснить совместно понимаемыми терминами
 

mz

Новичок
>> Водитель управляет самыми разными автомобилями одинаково.
особенно одинаково траками и спорткарами, с ручной КПП и АКПП;)

StUV
или например взять рот животного или человека, независимо от того, какой овощ/фрукт/мясо в него будет положено, интерфейс будет один - жевать )))
 

whirlwind

TDD infected, paranoid
mz не, на самом деле с точки зрения обывателя пример с водителем пока самый понятный. Задача же объяснить принцип, а не реализовать реальную модель. Если рассматривать интерфейс руль+педали, то и домохозяйке понятно будет.
 

Adelf

Administrator
Команда форума
Ну если уж искать пример полиморфизма у водителей, то лучше уж такое:
Геймер за игровым рулем и педалями.И водитель за реальными. Фактически управляют одинаково, но действия - разные.
 
Сверху