Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Когда система разрастается до десятка классов, можно заметить группы классов, связанные внутри и слабо зацепляющиеся с другими. Такие группы классов образуют пакет. Пакетом в области объектно-ориентированных технологий называют общий механизм организации элементов в группы. В данном контексте мы будем говорить только о группировании классов и называть пакетом группы, содержащие классы и другие пакеты.
Пакет не имеет операций или состояний в явном виде, они содержатся в нем неявно в описаниях агрегированных классов.
Некоторые классы в пакете могут быть открытыми, то есть экспортироваться для использования за пределы пакета. Остальные классы могут быть частью реализации, то есть не использоваться никакими классами, внешними к этому пакету.
В 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!