Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Агрегирование, private и область видимости = косяк! (С++)

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Yello



Зарегистрирован: 09.03.2006
Сообщения: 107

СообщениеДобавлено: Чт Авг 10 2006 15:18    Заголовок сообщения: Агрегирование, private и область видимости = косяк! (С++) Ответить с цитатой

Есть класс monom, и класс polynom, поля которого содержат элементы типа monom (вообще такая фигня называется «агрегирование», вроде).
Надо, чтобы одна из функций-членов класса polynom имела доступ к полям объектов типа monom, а поля вообще-то private. Трудность в том, что класс monom вы описываете СНАЧАЛА, а затем polynom, и сделать эту функцию другом класса monom НЕЛЬЗЯ (она будет вне области видимости).
Вопрос: а как?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Yello



Зарегистрирован: 09.03.2006
Сообщения: 107

СообщениеДобавлено: Чт Авг 10 2006 17:25    Заголовок сообщения: Ответить с цитатой

Да, спасибо (не знал, что так можно).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Пт Авг 11 2006 06:08    Заголовок сообщения: Ответить с цитатой

Доступ к полям чужого класса нарушает принци инкапсуляции ООП. У класса monom нужно создать соответствующий интерфейс и никаких проблем не будет. Иначе малейшее изменение класса monom по цепочке будет сказываться на классе polynom, а куда это дальше заведет? Рассмотрите возможность переноса функции или ее части из класса polynom в класс monom.

Будет код - будет понятнее что делать
_________________
Самоловских Виталий aka Kefir
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
kolobok0



Зарегистрирован: 22.04.2005
Сообщения: 253
Откуда: Мсква

СообщениеДобавлено: Пт Авг 11 2006 11:58    Заголовок сообщения: Ответить с цитатой

Kefir писал(а):
Доступ к полям чужого класса нарушает принци инкапсуляции ООП...........


+1

(круглый)
_________________
(круглый)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Yello



Зарегистрирован: 09.03.2006
Сообщения: 107

СообщениеДобавлено: Сб Авг 12 2006 09:08    Заголовок сообщения: Ответить с цитатой

Цитата:
Доступ к полям чужого класса нарушает принци инкапсуляции ООП. У класса monom нужно создать соответствующий интерфейс и никаких проблем не будет.

Ага, только как раз создать такой интерфейс там - это проблема (по крайней мере на скорости сильно скажется).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Пн Авг 14 2006 07:36    Заголовок сообщения: Ответить с цитатой

Преждевременная оптимизация - причина всех бед. (c) Кнут

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

А утверждения скажется типа "...скажется на скорости..." голословны, пока не произведены замеры.

Я уверен, что на скорости не скажется никоим образом, а вот на качестве кода скажется значительно, причем далеко не в лучшую сторону.
_________________
Самоловских Виталий aka Kefir
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
kolobok0



Зарегистрирован: 22.04.2005
Сообщения: 253
Откуда: Мсква

СообщениеДобавлено: Пн Авг 14 2006 13:41    Заголовок сообщения: Re: Агрегирование, private и область видимости = косяк! (С++) Ответить с цитатой

Yello писал(а):
Есть класс monom, и класс polynom, поля которого содержат элементы типа monom (вообще такая фигня называется «агрегирование», вроде).
Надо, чтобы одна из функций-членов класса polynom имела доступ к полям объектов типа monom, а поля вообще-то private. Трудность в том, что класс monom вы описываете СНАЧАЛА, а затем polynom, и сделать эту функцию другом класса monom НЕЛЬЗЯ (она будет вне области видимости).
Вопрос: а как?


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

(круглый)
_________________
(круглый)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kefir



Зарегистрирован: 16.04.2005
Сообщения: 443
Откуда: Пермь

СообщениеДобавлено: Пн Авг 14 2006 14:00    Заголовок сообщения: Ответить с цитатой

Неа, здесь именно агрегаци... Полином агрегирует мономы (во блин слово какое получилось). Короче, по русски, многочлен агрегирует одночлены. Во!
_________________
Самоловских Виталий aka Kefir
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...