
Инкапсуляция и способы её реализации презентация
.pdf
Примеры использования «внешней» функции-операции
const QString str("Строка 1"); QString result("");
// левый операнд — не экземпляр класса result = "Строка 3" + str;
51

Методы, реализующие контрактные обязательства класса
Открытые методы, которые модифицируют и анализируют значение не конкретного свойства, а всего объекта в целом. Пример: метод вставки символа в строку
Открытые методы, реализующие действия, не связанные с модификацией и анализом состояния объекта. Пример: метод отрисовки самого себя у графического примитива
52

«Внутренние» типы данных класса
Внутри класса могут быть объявлены типы данных, определяемые пользователем (структуры, объединения, перечисления и классы)
53

Причины использования «внутренних» типов данных
Управление именами — класс является отдельным пространством имен. Обращение к (общедоступному) внутреннему типу данных возможен только через имя внешнего класса
<имя внешнего класса>::<имя типа данных>
Управление доступом - внутренний и внешний классы более тесно взаимодействуют друг с другом, чем с другими классами. Внутренний (закрытый) класс может иметь общедоступные поля, но они бу-
54 дут доступны только внешнему классу

Пример использования «внутренних» классов
// Связанный список целых чисел class LinkedList
{
public:
// Итератор
class Iterator // Вложенный класс
{
public:
void insert(int x); int erase();
}; ...
...
55

Пример использования «внутренних» классов
...
private:
// Элемент списка
class Link // Вложенный класс
{
public:
Link *next; int data;
}; };
...
56