Читаем Освой самостоятельно С++ за 21 день. полностью

Абстрактные типы данных

В объектном программировании довольно часто создаются иерархии логически связанных классов. Например, представим класс Shape, от которого произведены классы Rectangle и Circle. Затем от класса Rectangle производится класс Sguare, как частный вид прямоугольника.

В каждом из производных классов замещаются методы Draw, GetArea и др. Основной костяк программы с классом Shape и производными от него Rectangle и Circle показан в листинге 13.7.

Листинг 13.7. Классы семейства Shape

1: // Листинг 13.7. Классы семейства Shape

2:

3: #include

4:

5:

6: class Shape

7: {

8:    public:

9:       Shape{ }

10:      virtual ~Shape { }

11:      virtual long GetArea { return -1; }

12:      virtual long GetPerim { return -1; }

13:      virtual void Draw { }

14:   private:

15: };

16:

17: class Circle : public Shape

18: {

19:    public:

20:       Circle(int radius):itsRadius(radius) { }

21:       ~Circle { }

22:       long GetArea { return 3 * itsRadius * itsRadius; }

23:       long GetPerim { return 6 * itsRadius; }

24:       void Draw;

25:    private:

26:       int itsRadius;

27:       int itsCircumference;

28: };

29:

30: void Circle::Draw

31: {

32:    cout << "Circle drawing routine here!\n";

33: }

34:

35:

36: class Rectangle : public Shape

37: {

38:    public:

39:       Rectangle(int len, int width);

40:       itsLength(len), itsWidth(width) { }

41:       virtual ~Rectangle { }

42:       virtual long GetArea { return itsLength * itsWidth; }

43:       virtual long GetPerim { return 2*itsLength + 2*itsWidth; }

44:       virtual int GetLength { return itsLength; }

45:       virtual int GetWidth { return itsWidth; }

46:       virtual void Draw;

47:    private:

48:       int itsWidth;

49:       int itsLength;

50: };

51:

52: void Rectangle::Draw

53: {

Перейти на страницу:

Похожие книги

Сущность технологии СОМ. Библиотека программиста
Сущность технологии СОМ. Библиотека программиста

В этой книге СОМ исследуется с точки зрения разработчика C++. Написанная ведущим специалистом по модели компонентных объектов СОМ, она раскрывает сущность СОМ, помогая разработчикам правильно понять не только методы модели программирования СОМ, но и ее основу. Понимание мотивов создания СОМ и ее аспектов, касающихся распределенных систем, чрезвычайно важно для тех разработчиков, которые желают пойти дальше простейших приложений СОМ и стать по-настоящему эффективными СОМ-программистами. Показывая, почему СОМ для распределенных систем (Distributed СОМ) работает именно так, а не иначе, Дон Бокс дает вам возможность применять эту модель творчески и эффективно для ежедневных задач программирования.

Дональд Бокс

Программирование, программы, базы данных / Программирование / Книги по IT