Видимость private И public
Концепция struct расширяется в C++ для того, чтобы позволить функ¬циям иметь общие, частные и защищенные члены. Внутри struct использование ключевого слова private, сопровождаемого двоеточием, ог¬раничивает доступ к членам, которые следуют за этой конструкцией. Члены private могут использоваться только несколькими категориями функций, в привилегии которых входит доступ к этим членам. Эти функции включают функции члены struct. Остальные категории функций, имеющих доступ, обсуждаются позже.
Пример stack изменен для тою, чтобы скрыть представление данных:
struct stack
{private:
char s[max_len] ;
int top;
enum {EMPTY = -1, FULL = max_len - 1};
public:
void reset() { top = EMPTY; }
void push(char c) { s[++top] = c; }
char pop() { return (s[top--]); }
char top of() { return (s[top]); }
boolean empty() { return (boolean)(top==EMPTY);}
boolean full() { return (boolean)(top==FULL); }
};
Функция main из раздела 4.3 переписывается для проверки тех же опера¬ций.
main()
{stack s;
char str[40]={"My name is Don Knuth!"};
int i=0;
cout<
Результат вывода этой версии тестовой проптаммы:
My name is Don Knuth! 'htunK noD si eman yM
Как было прокомментировано в состояниях main, доступ к скрытой пере¬менной top является управляемым. Она может изменяться функцией членом reset, но к ней нельзя обращаться непосредственно. Обратите также внима¬ние на то, как переменная s перелается к каждой функции-члену с использо¬ванием формы оператора, члена структуры.
Struct stack имеет private часть, которая содержит описание дан¬ных, и public часть, которая содержит функции-члены, ЛЫПОЛПЯЕОЩИС опе¬рации со стеком. Удобно считать private часть используемой только разработчиком, a public часть - спецификацией интерфейс;-!, которую может использовать клиент. Позже разработчик может изменять private часть, нс влияя при этом на правильность использования клиентом стекового типа.
Сокрытие данных - важный компонент ООП. Он позволяет создавать лете отлаживаемый и сопровождаемый код, потому что ошибки и модифика¬ции локализованы в нем. Программы клиента должны знать только специфи¬кацию интерфейса типа. По правилам хорошего тона члены-данные должны помещаться в private часть структуры, и доступ к ним должен осуществля¬ется с использованием функций-членов. Такая дисциплина доступа гаранти¬рует, что пользователь не сможет вмешаться или неправильно использовать реализованный АТД.
Похожие записи
No user прокомментировали сообщение
Оставить комментарий