Форум программистов, компьютерный форум CyberForum.ru

Доступ к закрытым элементам класса - Вопрос - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Builder Многоязычный интерфейс в C++ Builder http://www.cyberforum.ru/cpp-beginners/thread386397.html
Здравствуйте... Хочу написать программу, которая поддерживает выбор языков... Сделал кое что... с помощью форм... То есть когда выбираю один язык одно окно закрывается, другое открывается. Но при попытке закрыть окно формы 3(условно, имеется ввиду окно проргаммы на другом языке) среда программирования зависает... Знаю, многоязычность совсем по другому организовывается, но я новичок в...
C++ Всё таки хочу снести отсебятину на тему размерных величин class TLenghtUnit { private: static TLenghtUnit *Base; double k1; double k2; TLenghtUnit *u; public: TLenghtUnit (TLenghtUnit &Unit, double k1, double k2) // Unit - ссылка на существующую величину. Декларация TLenghtUnit x(y, k1, k2) означает k1*x=k2*y. Потом придумаю, как лучше назвать параметры. { http://www.cyberforum.ru/cpp-beginners/thread386391.html
Составить частотный словарь вводимого текста C++
Составить частотный словарь вводимого текста (несколько строк) тоесть распечатать строку следующим образом: справа от каждого слова-частоту, с которой оно встретилось.
Исключения C++
Как бросить исключение выхода за границы массива? Как его поймать? Что делать после отбрасывания? TItem & TArray::operator (unsigned int index) { if {Index>NumberOfData} { //Что сдесь надо написать? } else {
C++ Классы. Доступ к созданному объекту. http://www.cyberforum.ru/cpp-beginners/thread386371.html
Доброе утро, форум.:friends: Имеется код, чисто для примера. файл book.h #ifndef BOOK_H #define BOOK_H struct Book {
C++ Для чего нужна функция errno_t err? Почему в Visual C++ 5.0 нужно вводить не FILE *fp; fp = fopen("File" , "w"); ,а FILE *fp; errno_t err; err = fopen_s(&fp, "File" , "w"); ? подробнее

Показать сообщение отдельно
Bers
Заблокирован
18.11.2011, 11:01     Доступ к закрытым элементам класса - Вопрос
Цитата Сообщение от dimcoder Посмотреть сообщение
Не совсем понятно, что Вы имеете ввиду.
Кажется, я понял суть вопроса.

В общем, к данным класса имеют доступ только несколько методов этого класса. А все остальные методы - через вот эти уже существующие методы.

Чем меньше функций напрямую обращаются к данным, тем надежнее класс, стабильнее его интерфейс, и в тоже время, легче и безболезнее вносить в класс различные изменения.


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

И тем выше вероятность, что легко можно будит отнаследоваться от такого класса, что бы породить новый класс более точно отвечающий новым условиям задачи.


А так, если изменились правила каких либо расчетов - придётся править весь код, где были обращения к данным напрямую. Во всех местах менять на новые правила, а не одну функцию, которая отвечает за это правило.

Добавлено через 19 секунд
Цитата Сообщение от Deviaphan Посмотреть сообщение
Не бывает такого преобразования
Первый случай наглядно показывает, что бывает

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

Он говорит: по закону инкапсуляции, я не имею права выдавать вам своих стариков (базовые классы).
Пользователь может быть в недоумении.

Но разработчик класса то знает, что старики потомка находятся под его защитой.

И наверное, у разработчика были свои особые причины сделать так, что бы базовые классы были "понадежнее" упрятаны.
Например, что бы максимально затруднить хак класса, на предмет прямого доступа к его данным членам снаружи.
Что бы уж точно получить доступ к приватным данным-членам класса снаружи "ничайно" не получился.
 
Текущее время: 14:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru