|
11 / 1 / 1
Регистрация: 02.10.2015
Сообщений: 98
|
|
Что лучше: расширить интерфейс класса или сделать публичным подкласс?18.07.2016, 11:56. Показов 714. Ответов 4
Метки нет (Все метки)
Вопрос такой. Вот у меня есть устройство (class device ), у него есть регистры (class register) . Легче всего, по - моему, создать класс устройство и отдельно класс регистр. Т.к. устройство состоит из регистра, точнее включает его ( строгая композиция, т.к. без устройства нет регистра), то я хочу реализовать композицию.
Проблема такая. У класса register есть методы (8 бит - 8 методов геттеров ) , проверяющие отдельные биты. Если данный класс внести под private, то тогда нагромаждается интерфейс класса устройство, т.к. придется методы регистра перенести в интерфейс устройства , чтобы получить доступ к ним. Грамотно ли внести класс register в public???? Т.е. доступ к регистру буде такой device.register.getStatusError(); device.register.getStatusBuf();
0
|
|
| 18.07.2016, 11:56 | |
|
Ответы с готовыми решениями:
4
Статические функции или экземпляры класса - что лучше использовать?
Стоит 4 гига. Windows7 64. Что лучше сделать,отключить часть процесса автозапуска,а какие за что отвечают не пойму, или докупить ещё планок памяти? |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 18.07.2016, 12:05 | |||||||
|
только если вы совершенно точно уверены в том, что делаете и зачем, только тогда можно открывать данные классы. а кроме того, пользователям вашего класса нужен сервис. нужны услуги, которые ваш класс может им предоставить. пользователи не хотят вникать в детали. класс для того и нужен, что бы он взял на себя все сложности. а пользователи могли получать результат, не утруждая себя подробностями. поэтому вопрос: а нужен ли им вообще, этот ваш регистр? если нет, то пользователь даже и знать про него ничего не должен. а если нужен, тогда я бы сделал так:
но девайс может выдать его по требованию. этот способ хорош тем, что сохраняется контроль за точкой доступа. в случае чего туда можно будет вставить какие нибудь проверки, например.
0
|
|||||||
|
11 / 1 / 1
Регистрация: 02.10.2015
Сообщений: 98
|
|
| 18.07.2016, 12:40 [ТС] | |
|
спасибо, решил пока что убрать данный класс.
А где вообще можно мудрости по ООП набраться?. Книги читаю, но нужно как-то на примерах, а примеров мало хороших. Когда тогда уместна композиция? и в чем ее преимущество? Т.к. в книгах примеры примитивные (точка, и фигура), а более сложные примеры?
0
|
|
|
Одессит
|
|
| 18.07.2016, 15:50 | |
|
Oryel, можно поучить паттерны, кроме самих паттернов, добавляется понимания к всяким наследованиям, полиморфизму.
Я изучал паттерны по книге Фримена, она написана для java, но примеры легко переводил для с++, на крайний случай есть в интернете примеры с книги для с++.
0
|
|
|
Комп_Оратор)
|
||
| 18.07.2016, 22:06 | ||
|
Девайс getStatusBuffer(), getStatusError() сделать членами device и обёртками для вызова одного метода getByte(int pos) класса - члена (registеr). Каждая обёртка передаёт свой номер разряда. Доп. точка доступа - см. совет Hoggy. Нужно ли Вам их открывать Вам и знать полагается. Композиция это достаточно мощный приём и может быть даже альтернативой наследованию. В частности, если предполагается самостоятельное использование для класса - члена. Хотя иногда идут и на определение вложенных классов. Для управления информацией в относительно большом классе вполне оправдано.
0
|
||
| 18.07.2016, 22:06 | |
|
Помогаю со студенческими работами здесь
5
Что лучше: плагин чата в WordPress, или самому сделать через php, ajax? НЕ создаётся подкласс класса string как лучше всего добавлять предопределенные изменяемые значения char в интерфейс и реализацию класса? как лучше всего добавлять предопределенные изменяемые значения массива char в интерфейс и реализацию класса? Подкласс не видит поля вложенного класса суперкласса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|