|
|
|
Вопрос об объектах
|
|||
|---|---|---|---|
|
#18+
Представь объект дом. Есть у него как бы внутренние объекты которые не наследуют его. например провода, они ведь ни чего общего с домом не имеют. Но проводам нужна какая то информацию о доме, например где у него проложены кабель каналы. Что бы дать такую информацию проводам приходиться делать методы дающие эту информацию публичными. Проблема в том что объект человек который будет использовать объект дом видеть объект с кучей доступных ему публичных методов которые для него не предназначены, например та же инфра про кабель каналы. Это само собой плохо так как изначально планировалось, что у объекта дом будет гораздо меньше публичных методов и он будет, что-то вроде черного ящика, а не получается так как внутренним объектам нужна инфра и им не откуда ее получит кроме как через публичные методы дома. Что я делаю не так? Внутренними объектами здесь я называю экземпляры классов хранящихся внутри базового класса, но ни как не связанные с ним через наследования. В моем примере это провода, которые являются частью дома, но с другой стороны, ни имеет, ни какого отношения к дому. ------------------------------------------------------------ Мои работы: " http://hotcharts.ru/%22%5D%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE]http://hotcharts.ru/"]Радио хит-парады - Европа плюс и т.п. и " http://allking.ru/%22%5D%D0%A1%D1%82%D0%B8%D0%B2%D0%B5%D0%BD]http://allking.ru/"]Стивен Кинг - книги фильмы и др Ранее работал над " http://getsongs.ru/%22%5DGetSongs.ru]http://getsongs.ru/"]GetSongs.ru и " http://sking.org.ru/%22%5DSking.org.ru]http://sking.org.ru/"]Sking.org.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 17:45 |
|
||
|
Вопрос об объектах
|
|||
|---|---|---|---|
|
#18+
Usman, Мне кажеться что нет, по крайней мере я надеюсь что нет, потому что как то не понятно. Мне казалось что должно быть стандартное простое решение так как мне кажется ситуация которую я описал типичная для ООП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 19:03 |
|
||
|
Вопрос об объектах
|
|||
|---|---|---|---|
|
#18+
ChAkoМне казалось что должно быть стандартное простое решение капот автомобиля пользователю следует открывать только для заливки стеклоомывательной жидкости ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 19:38 |
|
||
|
Вопрос об объектах
|
|||
|---|---|---|---|
|
#18+
Пример для наглядности Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2011, 22:34 |
|
||
|
Вопрос об объектах
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 00:57 |
|
||
|
Вопрос об объектах
|
|||
|---|---|---|---|
|
#18+
ivan gusev, Спасибо но нет. Может быть я плохо объяснил и пример не самый удачный привел. Ваше реализация не пойдет так как метод check_length ДОЛЖЕН принадлежать дому так как это его родной метод который он так же использует в своих нуждах. Тоесть кабель каналы это неотемлемая часть дома, в отличаии от проводов которые могу использовать и например в машине. check_length должен оставаться в доме как неотемлемая его часть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 01:14 |
|
||
|
Вопрос об объектах
|
|||
|---|---|---|---|
|
#18+
ChAko..Но проводам нужна какая то информацию о доме, например где у него проложены кабель каналы.... улыбнуло. Афтор жги ышо!!! а вашеа печень (страшно подумать) знает про кости левой ноги? а мысли ваши, она так же читает? Я молчу про прямую кишку....:) ну а если серьёзно... провода о доме - нет не знают. и информация им такая не нужна. тут у вас солненый перегрефф. либо не удачный пример... кабель каналы - знают о проводах. провода о кабель каналах - нет. кабель каналы не знают о доме. дом о них - да. иначе фигня полная по жизни...ну или по другому... вы в жизни как передаёте инфу проводам о доме? очень интересно послушать рекомендую читать альма-матер по ООА - Гради Буча. Ничего лишнего не надо городить - вот один из основных пастулатов...Идите от жизни(от задачи) - и мир станет просче. Не надо натягивать готовые знания, умения, решения под конкретную задачу - это увы, одно из самых распространнённых заблуждений... удачи вам (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 03:17 |
|
||
|
Вопрос об объектах
|
|||
|---|---|---|---|
|
#18+
kolobok0, Извиняюсь, что морочу голову не удачными примерами. Попробую еще раз. У класса Дом есть метод Уборщицы, который возвращает экземпляр Уборщицы. У уборщицы есть метод Убраться. При создании Уборщицы ей в конструктор передается экземпляр объекта дом для того что бы она знала где ей убираться. Вот Уборщице и приходиться дергать методы Дома для уборке. Соответственно жильцу не нужны те методы, что нужны Уборщице, как их скрыть от Жильца? Вызов будет такой Дом->Уборщицы(2)->Убраться(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 10:19 |
|
||
|
Вопрос об объектах
|
|||
|---|---|---|---|
|
#18+
И еще замечание Уборщица в данном случае это специальный "внутренний" класс нужный только для реализации дома и ни для чего больше. Эти Уборщицы были созданы специально для него и вне его контекста использоваться не будут. Тоесть как что-то неотъемлемое от дома. И кроме Уборщиц есть еще много подобных классов, которые выполняют свои функции по дому и так же являются его неотъемлемой частью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 10:36 |
|
||
|
Вопрос об объектах
|
|||
|---|---|---|---|
|
#18+
ChAkokolobok0, Извиняюсь, что морочу голову не удачными примерами. Попробую еще раз. У класса Дом есть метод Уборщицы, который возвращает экземпляр Уборщицы. У уборщицы есть метод Убраться. При создании Уборщицы ей в конструктор передается экземпляр объекта дом для того что бы она знала где ей убираться. Вот Уборщице и приходиться дергать методы Дома для уборке. Соответственно жильцу не нужны те методы, что нужны Уборщице, как их скрыть от Жильца? Вызов будет такой Дом->Уборщицы(2)->Убраться(); Не знаю, как там у пхп с интерфейсами, а в .net это было-бы как-то так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 11:28 |
|
||
|
Вопрос об объектах
|
|||
|---|---|---|---|
|
#18+
ivan gusev, Спасибо так действительно можно, но уж больно много кода получается "лишнего", так как таких Уборщиков, как я писал там полно разных и для каждого делать интерфейс, какая то лишня работа получается. На другом форуме мне насоветовали шаблон Proxy. Тоесть для получившегося у меня класса дом с кучей публичных методов сделать одну обертку в виде Proxy. Простой и рабочий вариант, но какой то не очень красивый. Ну да ладно хоть что-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 11:54 |
|
||
|
Вопрос об объектах
|
|||
|---|---|---|---|
|
#18+
ChAko...создании Уборщицы ей в конструктор передается экземпляр объекта дом для того что бы она знала где ей убираться.... а теперь представляем женщину, которая ходит с планом дома :) Или по другому - она одномоментно(!) начинает вытирать пыль везде(!) в доме? тут как то не состыковка у вас в виденье предметной области. Наверное она в один момент времени может отработать некий меньший участок уборки. Хотя может дом игрушечный и она их протирает в витринах детского магазина? - тогда это другой случай конечно же :) я о чём. Дом нафик не нужен уборщце. Нужен участок где бует происходить уборка. Далее. Заходя в комнату (или на лестницу) уборщица сразу прикладывается ко всем поверхностям тряпкой? вряд ли. или скажем по другому. ваше ограничение (или увеличение) функциональности уборщицы завтра может обернуться поперёк задачи. скажем вспомнят заказчики что появилась новый тип лестницы или бОльшый зал чем ранее были и надо будет учитывать время по отношению к кол-ву предметов. Посему обобщать(срезать углы) не стоит. пишите как есть в жизни(это кстати один из самых больших плюсов в ОО - статическая модель, которая слабо меняется по срокам жизни проекта. т.е. если уборщица убрает - она завтра не будет тушить пожары...) удачи вам (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 14:14 |
|
||
|
Вопрос об объектах
|
|||
|---|---|---|---|
|
#18+
ChAko...Уборщице и приходиться дергать методы Дома для уборке...Дом->Уборщицы(2)->Убраться(); ээээээээээ у дома есть глагол убираться? очень интересно. Т.е. в жизни есть некие дома которые сами по себе думают - ага, нужно поймать некую женщину с тряпкой...и заставить её убираться ) вам не прораммы, вам сценарии к фильмам ужасов писать надо - это ваш конёк!!! :) или по другому... кто инициатор действия? человк(тот кто уборщик)? Или пыль которая сейчас будет убираться? у вас всё задом наперёд, мил человек...И я так подразумеваю, что и ОО вы начали копать после того как код некий наваяли...отсюда и траблы... удачи вам (круглый) ЗЫ Лучше прочтите Буча - многие казусы отпадут сами собой... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 14:19 |
|
||
|
Вопрос об объектах
|
|||
|---|---|---|---|
|
#18+
kolobok0, Спасибо вам что пытались понять мои проблемы и помочь. Я вижу что есть много непонимания, и скорее всего от того что я плохо объясняю привожу плохие примеры. Ну да ладно буду разбираться сам. Еще раз спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2011, 15:32 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37545760&tid=1342592]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
172ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 479ms |

| 0 / 0 |
