Лекция: Группирование классов

 

Когда система разрастается до десятка классов, можно заметить груп­пы классов, связанные внутри и слабо зацепляющиеся с другими. Такие группы классов образуют пакет. Пакетом в области объектно-ориентированных технологий называют общий механизм организации элементов в группы. В данном контексте мы будем говорить только о группировании классов и называть пакетом группы, содержащие классы и другие пакеты.

Пакет не имеет операций или состояний в явном виде, они содержатся в нем не­явно в описаниях агрегированных классов.

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

В C++ пакеты классов реализуются с помощью введения пространств имен – namespace. Однако пространство имен позволяет реализовать более широкое понятие. Оно может включать в себя классы, другие пространства имен, свободные подпрограммы и глобальные (внутри пространства имен) данные.

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

 

namespace GraphSys{

class Point{… };

class Color{… };

class Shape {… };

class Circle: public Shape{… };

class Triangle: public Shape {… };

class Square: public Shape{… };

class SolidCircle: public Circle {… };

}

 

Реализация указанных классов находится в файле GraphSys.срр:

 

namespace GraphSys{

Circle :: draw ( ){...}

Triangle :: draw ( ){...}

Square :: draw ( ){...}

SolidCircle :: draw ( ){...}

.. .

}

 

Обращение к членам пространства имен осуществляется с использованием явной квалификации:

 

GraphSys :: Circle C;

GraphSys :: SolidCircle SC;

 

С другой стороны, описание using в пользовательском коде позволяет не использовать все время явную квалификацию:

 

#include GraphSys.h

using namespace GraphSys;

void user_func ( ){

Circle C;

.. .

C -> draw ( );

}

еще рефераты
Еще работы по информатике