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

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

Жанры

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

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

Шрифт:

25: }

26:

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

28:

29: class CarPart : public Part

30: {

31: public:

32: CarPart:itsModelYear(94){ }

33: CarPart(int year, int partNumber);

34: virtual void Display const

35: {

36: Part::Display;

37: cout << "Model Year: ";

38: cout << itsModelYear << endl;

39: }

40: private:

41: int itsModelYear;

42: };

43:

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

45: itsModelYear(year),

46: Part(partNumber)

47: { }

48:

49:

50: // *************

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

51:

52: class AirPlanePart : public Part

53: {

54: public:

55: AirPlanePart:itsEngineNumber(1){ }

56: AirPlanePart

57: (int EngineNumber, int PartNumber)

58: virtual void Dlsplay const

59: {

60: Part::Display;

61: cout << " Engine No.: ";

62: cout << itsEngineNumber << endl;

63: }

64: private:

65: int itsEngineNumber;

66: };

67:

68: AirPlanePart::AirPlanePart

69: (int EngineNumber, int PartNumber):

70: itsEngineNumber(EngineNumber),

71: Part(PartNumber)

72: { }

73:

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

75: class PartNode

76: {

77: public:

78: PartNode (Part*);

79: ~PartNode;

80: void SetNext(PartNode * node)

81: { itsNext = node; }

82: PartNode * GetNext const;

83: Part * GetPart const;

84: private:

85: Part *itsPart;

86: PartNode * itsNext;

87: };

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

89:

90: PartNode::PartNode(Part* pPart):

91: itsPart(pPart),

92: itsNext(0)

93: { }

94:

95: PartNode::~PartNode

96: {

97: delete itsPart;

98: itsPart = 0;

99: delete itsNext;

100: itsNext = 0;

101: }

102:

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

104: PartNode * PartNode::GetNext const

105: {

106: return itsNext;

107: }

108:

109: Part * PartNode::GetPart const

110: {

111: if (itsPart)

112: return itsPart;

113: else

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

115: }

116:

117:

118:

119: // ****************

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

120: class PartsList

121: {

122: public:

123: PartsList;

124: ~PartsList;

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

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

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

128: Part* GetFirst const;

129: void Insert(Part *);

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

131: int GetCount const { return itsCount;}

132: static PartsList& GetGlobalPartsList

133: {

134: return GiobalPartsList;

135: }

136: private:

137: PartNode * pHead;

138: int itsCount;

139: static PartsList GiobalPartsList;

140: };

141:

142: PartsList PartsList::GlobalPartsList;

143:

144:

145: PartsList::PartsList:

146: pHead(0),

147: itsCount(0)

148: { }

149:

150: PartsList::~PartsList

151: {

152: delete pHead;

153: }

154:

155: Part* PartsList::GetFirst const

156: {

157: if (pHead)

158: return pHead->GetPart;

159: else

160: return NULL; // ловушка ошибок

161: }

162:

163: Part * PartsList::operator[](int offSet) const

164: {

165: PartNode* pNode = pHead;

166:

167: if (!pHead)

168: return NULL; // ловушка ошибок

169:

170: if (offSet > itsCount)

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

172:

173: for (int i=0;i<offSet; i++)

174: pNode = pNode->GetNext;

175:

176: return pNode->GetPart;

177: }

178:

179: Part* PartsList::Find(

180: int & position,

181: int PartNumber) const

182: {

183: PartNode * pNode = 0;

184: for (pNode = pHead, position = 0;

185: pNode!=NULL;

186: pNode = pNode->GetNext, position++)

187: {

188: if (pNode->GetPart->GetPartNumber== PartNumber)

189: break;

190: }

191: if (pNode == NULL)

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

Мужчина не моей мечты

Ардова Алиса
1. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.30
рейтинг книги
Мужчина не моей мечты

Твое сердце будет разбито. Книга 1

Джейн Анна
Любовные романы:
современные любовные романы
5.50
рейтинг книги
Твое сердце будет разбито. Книга 1

Шайтан Иван 3

Тен Эдуард
3. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
7.17
рейтинг книги
Шайтан Иван 3

Матабар IV

Клеванский Кирилл Сергеевич
4. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар IV

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

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

Наследник павшего дома. Том II

Вайс Александр
2. Расколотый мир [Вайс]
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследник павшего дома. Том II

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

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

Темный Лекарь 9

Токсик Саша
9. Темный Лекарь
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Темный Лекарь 9

Доктор 5

Афанасьев Семён
5. Доктор
Фантастика:
фэнтези
альтернативная история
5.00
рейтинг книги
Доктор 5

Боец с планеты Земля

Тимофеев Владимир
1. Потерявшийся
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Боец с планеты Земля

Мастер 6

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

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

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

Темный Лекарь 11

Токсик Саша
11. Темный Лекарь
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Темный Лекарь 11

Часограмма

Щерба Наталья Васильевна
5. Часодеи
Детские:
детская фантастика
9.43
рейтинг книги
Часограмма