|
1 / 1 / 0
Регистрация: 01.05.2015
Сообщений: 84
|
||||||||||||||||
Что такое Инкапсуляция?23.09.2016, 17:24. Показов 6028. Ответов 22
Приятной пятницы всем.
Начну с примера. Пусть есть у нас некий класс "A", одно из полей которого это List экземпляров другого класса "B". В классе "B" тоже одно из полей это List экземпляров ещё одного класса "C". Вот такая вот матрёшка, или точнее дерево. Подобная ситуация встречается сплошь и рядом. Вот пример кода если со слов непонятно.
В принципе можно сделать все листы private и написать для них Get-функции. Переписав класс A вот в таком виде.
При этом можно ли говорить об инкапсуляции в классах типа "B" и "C"? Если рассматривать инкапсуляцию как скрытие внутренностей от пользователя, которому дают только класс A то тут пожалуй всё хорошо. Но вот внтури то класса "A" нет даже намёка на инкапсуляцию классов "B" и "C". Конечно можно и для них сделать Get функции. Но тогда программа ещё сильнее раздуется на пустом месте. И снова спрашивается, а стоит ли так всё усложнять? Впринципе в данном случае решением проблемы была бы возможность List'ам (как-то) выставить атрибут - "читать можно а изменять извне класса нельзя". Тогда можно обойтись и без Get-функций. Но стоит только вспомнить о том, что пользователю вобщемто хотелось бы не только что-то счиывать из внутренностей этой матрешки, но и что-то туда записывать... Как в голове рождаются монструозные конструкции из гигансткого кол-ва Set-функций. И снова спрашивается - а до какой степени стоит заморачиваться об инкапсуляции?
0
|
||||||||||||||||
| 23.09.2016, 17:24 | |
|
Ответы с готовыми решениями:
22
Что такое наследование, инкапсуляция и полиморфизм Что такое метод equals() и что такое класс Object
|
|
|
|||||
| 23.09.2016, 23:59 | |||||
![]() Добавлено через 1 минуту
0
|
|||||
|
|
||
| 24.09.2016, 00:00 | ||
|
А ещё лучше выбирать свойства вместо полей. Представьте затраты на рефакторинг, если вы сделаете поле, а потом внезапно в проекте потребуются свойства Сразу опишете свойство - будете иметь бОльшую гибкость.
0
|
||
|
1 / 1 / 0
Регистрация: 01.05.2015
Сообщений: 84
|
|
| 24.09.2016, 00:07 [ТС] | |
|
Спасибо всем на сегодня за мнения, советы и замечания. Мне надо переварить на выходных появившееся идеи.
Но ваши идеи по поводу примера екселя (в общих чертах, исходник екселя не стоит сюда постить) жду с интересом.
0
|
|
| 24.09.2016, 00:07 | |
|
Что такое инкапсуляция? Delphi - что такое инкапсуляция Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами? Что такое IIS и что такое PWS? Почему одно без другого не работает? Что такое напряжение и что такое сила тока с позиции заряженных частиц Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|