![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
нарушает ? Это сообщение отредактировал(а) mes - 29.8.2008, 11:31 |
||||
|
|||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
проблема изменения не показатель эффективности, представь что вместо вычисления площади идет вычисления обратной матрицы через LUP разложение, ты это тоже во все change методы запихнешь? Все зависит от конкретной задачи, мне ближе cache идеология. К тому же я не вижу, проблем в изменении моего класса. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
структуры (не по слову struct , a по смыслу) - это блок данных , который не имеет внутреннего состояния , а только внешнее.. В таких случаях инкапсулировать просто нечего |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
нет, а вот меняем название класса на
и получаем нарушение инкапсуляции. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Показатель ! "Проблема изменения" не фактическое выражение , а условное.. Совсем не обязательно "надеяться", что класс будет когда то изменен. Оно говорит о том насколько клиент посвяшен в дела сервера и этим показывает связь реализации. Чем меньше связь , тем больше сил и памяти остается у программиста на остальные проблемы . Добавлено через 5 минут и 22 секунды Поэтому и надо понимать какую сущность Вы реализуете.. и от этого зависит применение инструментария. Геттер в чистом виде это не функция Get..() , а функция возврашая не внутренне состояние, а одну из его составляюших реализации этого состояния. (что и вынуждает повышеное знание об устройстве на стороне клиента ) Добавлено через 13 минут и 7 секунд Представьте что Вы написали операционную систему, которой пользуются милионы. Но потом обнаружилась что реализация у некоторых сущностей не очень эфективная (или не работает на определенной платформе) .. Если реализация скрыта , то Вы ее подправили и милионы пользователей с благодарностью используют ее дальше и в новых направлениях.. А если нет.. страшно подумать... Для следуюшей версии все накопленное ПО нужно переписывать.. Да с масштабом я может быть и загнул, но подобная ситуация наблюдается и в пределах одной проги (конечно вышеупомянутое не сильно относится к проге из тысячи строк или если она одноневка) |
|||
|
||||
| Lycifer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 4.11.2007 Репутация: нет Всего: нет |
class A
{ int Get_someElment() {return someElment; } private: int someElment; . . . }; class B { public: int someElement; . . . }; someFunction() { A objA; B objB; objB.someElement =10; memcpy((void*)&objB, (void*)&someElement,sizeof(objB)); } Результат такой каманды: objA.Get_someElment(); Так что приватные члены делать не особого смысла |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
не совсем понял чего Вы добивались показать своим примером? То что можно применить хак и добыть данные из объекта, которые являются приватными? Да можно. Только Вы забываетесь , если думаете что ограничение доступа , призвано уберечь данные от повреждения средствами хака. Хак на то и хак - компилятор умывает руки и вся ответственность перекладывается на программиста. Этот инструментарий (ограничение доступа ) призван "всего лишь" облегчить жизнь программиста, указывая на ошибки использования, ориентируясь на описание класса которое дал сам программист. То есть: Чем правильнее выявит интерфейс, тем легче ему будет использовать его в дальнейшем. Чем лучше будет изолирована реализация, тем меньше придется программисту задумываться о том как подключить данную сущность к общему коду. Чем меньше будет внешних связей, тем легче выявить и локализировать ошибку/баг. И многое другое.. Программистам которые уверенны, что их память предназначена для того, чтоб держать в голове номер смещения и размер переменной, перечисленные выше средства компилятора абсолютно не нужны.. Мне только не понятно зачем они выбрали С++, когда на ассемблере или хотя бы си простор для самостоятельного контроля без помощи компилятора гораздо шире. Это сообщение отредактировал(а) mes - 4.9.2008, 21:59 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |