Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2010, 23:48   #11
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Это всего лишь вопрос формулировки. Такие отношения можно реализовать на любом языке, яркий пример - Java. Там нет h/cpp файлов. И как по-твоему различать интерфейс и реализацию класса?
Дело в том, что ты сразу же привязал задачу к языку - но язык это всего лишь средство. Здесь же вопрос стоит о дизайне иерархии и отношений между сущностями.
MaTBeu вне форума Ответить с цитированием
Старый 04.04.2010, 23:57   #12
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2MaTBeu
здесь стоит вопрос, как это лучше сделать на с++ (во всяком случае судя коду).

Цитата:
И как по-твоему различать интерфейс и реализацию класса?
interface I {
...
}
class A implements I {
...
}

наверное так
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 05.04.2010, 00:15   #13
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

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

Цитата:
здесь стоит вопрос, как это лучше сделать на с++ (во всяком случае судя коду).
Здесь стоит задача, как лучше сделать вообще. А плюсовый код приведен как пример. Понимаешь, отношения строятся между объектами/сущностями, а не между интерфейсами и реализациями. Мы рассматриваем проектирование отношений между сущностями, не взирая на то, плюсы это или нет.

ПыСы: черт, если мне придется еще раз объяснять различие между проектированием и написанием кода, я повешусь.
MaTBeu вне форума Ответить с цитированием
Старый 05.04.2010, 00:35   #14
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2MaTBeu
Цитата:
Интерфейс призван унифицировать доступ ко всем классам, которые его реализуют.
наследование интерфейсов же

мне ничего объяснять не надо. человек ясно дал понять, что решение требуется на плюсах. вот я и рассматриваю решение на плюсах. поэтому и проектирование я прикручиваю к написанию.

пс. не во всех ооп языках кстать есть возможность объявления вложенных классов
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 05.04.2010, 08:54   #15
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

c#? Ваше сообщение слишком короткое. Оно должно быть не менее 10 символов.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 05.04.2010, 09:59   #16
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Оба варианта имеют право на жизнь. Первый явно показывает, что рука может быть только у человека и интерфейс класса (в данном случае имеется ввиду не interface, а public часть класса, которая так же называется интерфейсом) не предполагает использование этих самых рук.
Второй вариант лучше подходит для последующего развития. Если вдруг еще какие-то существа с руками появятся
В целом ООП такая штука, что классы и методы можно проектировать как угодно. Главное - чтобы вся система была выстроена в одном стиле, а деление на классы и их расположение - это уже дело субъективное и зависит от многих факторов. Проанализируйте варианты использования своего класса "человек" и решение само найдётся. Вдруг всплывёт задача, при которой руку лучше наружу отдавать пользователю класса и в варианте с вложенным классом придется цеплять костыли. Так что не зная что это за классы и какие функции они выполняют, я бы не стал выделять из этих двух вариантов лучший. Может тут и классы эти вовсе не нужны.
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ООП как лучше, и почему так. optimist32 Общие вопросы C/C++ 6 15.11.2009 04:43
Паскаль ООП. Примеры программ с использованием ООП SeЯgey Помощь студентам 5 13.05.2009 21:55
в какой универ поступить L1NK. Помощь студентам 3 20.08.2008 20:42