Чтение онлайн

на главную

Жанры

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

Либерти Джесс

Шрифт:

Итоги второй недели

1: // **********************************

2: //

3: // Название: Подведение итогов

4: //

5: // Файл: Week2

6: //

7: // Описание: Демонстрация создания и использования связанного списка

8: //

9: // Классы: PART - содержит идентификационный

10: // номер детали и обеспечивает возможность

11: // добавлять другие данные

12: // PartNode -

функционирует как узел в PartsList

13: //

14: // PartsList - реализует механизм связывания

15: // узлов в список

16: //

17: // **********************************

18:

19: #include <iostream.h>

20:

21:

22:

23: // **************** Part ************

24:

25: // Абстрактный базовый класс, общий для всех деталей

26: class Part

27: {

28: public:

29: Part:itsPartNumber(1) { }

30: Part(int PartNumber):itsPartNumber(PartNumber) { }

31: virtual ~Part { };

32: int GetPartNumber const { return itsPartNumber; }

33: virtual void Display const =0; // должна быть замещена как private

34: private:

35: int itsPartNumber;

36: };

37:

38: // выполнение чистой виртуальной функции в

39: // стандартном виде для всех производных классов

40: void Part::Display const

41: {

42: cout << "\nНомер детали: " << itsPartNumber << endl;

43: }

44:

45: // ************* Автомобильные детали **********

46:

47: class CarPart : public Part

48: {

49: public:

50: CarPart:itsModelYear(94){ }

51: CarPart(int year, int partNumber);

52: virtual void Display const

53: {

54: Part::Display; cout << "Год создания: ";

55: cout << itsModelYear << endl;

56: }

57: private:

58: int itsModelYear;

59: };

60:

61: CarPart::CarPart(int year, int partNumber):

62: itsModelYear(year),

63: Part(partNumber)

64: { }

65:

66:

67: // ************* Авиационные детали **********

68:

69: class AirPlanePart : public Part

70: {

71: public:

72: AirPlanePart:itsEngineNumber(1){ } ;

73: AirPlanePart(int EngineNumber, int PartNumber);

74: virtual void Display const

75: {

76: Part::Display; cout << "Номер двигателя: ";

77: cout << itsEngineNumber << endl;

78: }

79: private:

80: int itsEngineNumber;

81: };

82:

83: AirPlanePart::AirPlanePart(int EngineNumber, intPartNumber):

84: itsEngineNumber(EngineNumber),

85: Part(PartNumber)

86: { }

87:

88: // ************** Узлы списка деталей **********

89: class PartNode

90: {

91: public:

92: PartNode (Part*);

93: ~PartNode;

94: void SetNext(PartNode * node) { itsNext = node; }

95: PartNode * GetNext const;

96: Part * GetPart const;

97: private:

98: Part *itsPart;

99: PartNode * itsNext;

100: };

101:

102: // Выполнение PartNode...

103:

104: PartNode::PartNode(Part* pPart):

105: itsPart(pPart),

106: itsNext(0)

107: { }

108:

109: PartNode::~PartNode

110: {

111: delete itsPart;

112: itsPart = 0;

113: delete itsNext;

114: itsNext = 0;

115: }

116:

117: //Возвращается NULL, если нет следующего узла PartNode

118: PartNode * PartNode::GetNext const

119: {

120: return itsNaxt;

121: }

122:

123: Part * PartNode::GetPart const

124: {

125: if (itsPart)

126: return itsPart;

127: else

128: return NULL; // ошибка

129: }

130:

131: // **************** Список деталей ************

132: class PartsList

133: {

134: public:

135: PartsList;

136: ~PartsList;

137: // Необходимо, чтобы конструктор-копировщик и оператор соответствовали друг другу!

138: Part* Find(int & position, int PartNumber) const;

139: int GetCount const { return itsCount; }

140: Part* GetFirst const;

141: static PartsList& GetGlobalPartsList

142: {

143: return GlobalPartsList;

144: }

145: void Insert(Part *);

146: void Iterate(void (Part::*f)const) const;

147: Part* operator[](int) const;

148: private:

149: PartNode * pHead;

150: int itsCount;

151: static PartsList GlobalPartsList;

152: };

153:

154: PartsList PartsList::GlobalPartsList;

Поделиться:
Популярные книги

Ведьма

Резник Юлия
Любовные романы:
современные любовные романы
эро литература
8.54
рейтинг книги
Ведьма

Неудержимый. Книга IX

Боярский Андрей
9. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга IX

Играть, чтобы жить. Книга 1. Срыв

Рус Дмитрий
1. Играть, чтобы жить
Фантастика:
фэнтези
киберпанк
рпг
попаданцы
9.31
рейтинг книги
Играть, чтобы жить. Книга 1. Срыв

Эфемер

Прокофьев Роман Юрьевич
7. Стеллар
Фантастика:
боевая фантастика
рпг
7.23
рейтинг книги
Эфемер

Смертник из рода Валевских. Книга 1

Маханенко Василий Михайлович
1. Смертник из рода Валевских
Фантастика:
фэнтези
рпг
аниме
5.40
рейтинг книги
Смертник из рода Валевских. Книга 1

На границе империй. Том 2

INDIGO
2. Фортуна дама переменчивая
Фантастика:
космическая фантастика
7.35
рейтинг книги
На границе империй. Том 2

Убивать чтобы жить 3

Бор Жорж
3. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 3

Корпулентные достоинства, или Знатный переполох. Дилогия

Цвик Катерина Александровна
Фантастика:
юмористическая фантастика
7.53
рейтинг книги
Корпулентные достоинства, или Знатный переполох. Дилогия

Энфис 2

Кронос Александр
2. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Энфис 2

Наследник старого рода

Шелег Дмитрий Витальевич
1. Живой лёд
Фантастика:
фэнтези
8.19
рейтинг книги
Наследник старого рода

Совок 5

Агарев Вадим
5. Совок
Фантастика:
детективная фантастика
попаданцы
альтернативная история
6.20
рейтинг книги
Совок 5

Кодекс Охотника. Книга XXIII

Винокуров Юрий
23. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXIII

Мастер 6

Чащин Валерий
6. Мастер
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер 6

Деспот

Шагаева Наталья
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Деспот