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

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:

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

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

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

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

Дональд Бокс

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