Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Группирование классов



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

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

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

В 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 ();

}





Дата публикования: 2015-04-06; Прочитано: 349 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...