Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб3_Разработка_Классов3.doc
Скачиваний:
4
Добавлен:
18.11.2018
Размер:
256.51 Кб
Скачать

2.7. Скрытый указатель с именем this.

Все классы имеют скрытый член с именем this. Это указатель на экземпляр данного класса. Следует вспомнить, что каждый экземпляр класса имеет свою копию членов-данных, но использует один набор функций-членов, общий для всех экземпляров этого класса. Как же компилятор определяет, какой из его экземпляров вызвал функцию? Для этого каждая функция-член класса имеет скрытый аргумент this.

3. Проектирование классов.

При проектировании всегда следует учитывать тот факт, что этот процесс неизбежно будет расширяться, переноситься, перенастраиваться и, вообще изменяться множеством способов, которые невозможно предвидеть заранее. Поэтому необходимо стремиться к проектированию и разработке достаточно простых систем. Необходимость простоты объясняется тем, чтобы иметь в будущем возможность модифицировать (изменять) проектируемую систему в различных направлениях. Система должна проектироваться так, чтобы, после последовательности видоизменений, оставаться настолько простой, насколько это возможно. Поэтому, при проектировании системы следует всегда иметь в виду возможность ее неизбежных модификаций, и при этом обеспечить:

  • Гибкость.

  • Расширяемость.

  • Переносимость.

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

3.1. Этапы проектирования.

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

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

  • В исследуемой предметной области, найти характерные для нее понятия и основные взаимосвязи между ними и описать их в виде классов и отношений между этими классами.

  • Уточнить классы, задав множество операций над ними (методов).

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

  • Принять во внимание полноту, минимальность и удобство работы с классами.

  • Уточнить классы, точно определив отношения между ними. Для классов выбрать одну из следующих альтернатив:

  • Отношение наследования.

  • Отношение вложенности (агрегирования).

  • Точно определить уровни доступа к элементам классов.

  • Отделить открытые элементы каждого класса от защищённых и закрытых функций.

  • Задать типы операций над классами.

Необходимо отметить, что это только несколько шагов итеративного процесса. Обычно нужно повторить эту последовательность несколько раз, прежде, чем будет выработан проект, который в достаточной степени подходит для начальной, либо для повторной реализации.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]