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

на главную - закладки

Жанры

Освой самостоятельно С++ за 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;

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

Дворянская кровь

Седой Василий
1. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
7.00
рейтинг книги
Дворянская кровь

Возвышение Меркурия

Кронос Александр
1. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия

Теневой путь. Шаг в тень

Мазуров Дмитрий
1. Теневой путь
Фантастика:
фэнтези
6.71
рейтинг книги
Теневой путь. Шаг в тень

Идеальный мир для Демонолога 9

Сапфир Олег
9. Демонолог
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Демонолога 9

Судья (Адвокат-2)

Константинов Андрей Дмитриевич
2. Бандитский Петербург
Детективы:
боевики
7.24
рейтинг книги
Судья (Адвокат-2)

Идеальный мир для Лекаря 2

Сапфир Олег
2. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 2

Влюблённая ведьма

Джейн Анна
Любовные романы:
современные любовные романы
5.40
рейтинг книги
Влюблённая ведьма

Черный дембель. Часть 1

Федин Андрей Анатольевич
1. Черный дембель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Черный дембель. Часть 1

Идеальный мир для Лекаря 27

Сапфир Олег
27. Лекарь
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 27

Граф

Ланцов Михаил Алексеевич
6. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Граф

Мастер Разума V

Кронос Александр
5. Мастер Разума
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Мастер Разума V

Ну, здравствуй, перестройка!

Иванов Дмитрий
4. Девяностые
Фантастика:
попаданцы
альтернативная история
6.83
рейтинг книги
Ну, здравствуй, перестройка!

Кротовский, побойтесь бога

Парсиев Дмитрий
6. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Кротовский, побойтесь бога

Корсар

Русич Антон
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
6.29
рейтинг книги
Корсар