All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
C#教程:DLL动态链接库的DLL依赖项
ajax+php无刷新二级联动下拉菜单
ASP.NET教程:AccessDataSource的使用_[Asp.Net教程]
AJAX技术在PHP开发中的简单应用_[AJAX教程]
PHP技巧-巧用jquery达到无刷新删除效果_[PHP教程]
Delphi自动启动的多媒体光盘程序
在DataGrid控件中获取数据项中各列的数据内容_.net资料_编程技术
gridview删除提示_[Asp.Net教程]
PHP安全配置之实现安全的两个重点_[PHP教程]
为什么PHP令人不爽(对于大型系统)_php资料_编程技术
Reading number is top 10 pictures
狗狗与主人神同步1
Group of female porn in 《westwards》, uninhibited woman threatened to not the bottom line2
美丽的风景--让你目瞪口呆
The real super beauty15
The real super beauty6
Female star bikini
含苞欲放的素颜美少女2
非常漂亮的泳装美女
Angie Chiu vijara myth2
China's ambassador to Libya embassy was shock, and the glass is broken in
Download software ranking
I'm come from Beijing1
网络管理员第三版
Boxer's Top ten classic battle4
Tram sex maniac 2 (H) rar bag13
仙剑奇侠传98版歌曲
Ashlynn Video3
徐若瑄成名作“魔鬼天使”
Tram sex maniac 2 (H) rar bag11
1400篇各类破解文章
C++教程第四版
qq published in(发表于) 2014/7/9 22:36:45 Edit(编辑)
C++面向对象基本概念解析[二]

C++面向对象基本概念解析[二]

C/C++面向对象基本概念解析[二]

C/C++面向对象基本概念解析

面向对象(Object-Oriented,OO),是一种软件开发的方法学,分为面向对象的分析OOA(Object-Oriented Analysis)、面向对象的设计OOD(Object Oriented Design)、面向对象的建模OOM(Object Oriented Modeling)、面向对象的编程OOP(Object Oriented Programing)和面向对象的测试OOT(Object Oriented Test)等子过程。

程序描述:OOP 综合样板,清晰地演示说明了分类、继承、封装和多态的C++实现方法。

【源程序 2-2】

01 #include

02 using namespace std;

03

04 class Location

05 {

06 protected:

07 int x;

08 int y;

09 public:

10 Location(int InitX,int InitY);

11 int GetX();

12 int GetY();

13 void SetX(int InitX);

14 void SetY(int InitY);

15 virtual void Show() { };

16 virtual void Hide()=0;

17 };

18

19 enum Boolean{FALSE,TRUE};

20 enum PointType{FreePoint, Online, CircleCenter };

21 class Point : public Location

22 {

23 public:

24 PointType PType;

25 private:

26 Boolean Visible;

27 protected:

28 static int NumOfInstances;

29 public:

30 Point(int InitX=0,int InitY=0, PointType InitPType=FreePoint);

31 Point(Point& APoint);

32 ~Point();

33 virtual void Show();

34 void Show(int ColorID);

35 virtual void Hide();

36 void MoveTo(int NewX=0,int NewY=0);

37 static int getNumOfInstances()

38 {return NumOfInstances;}

39 Boolean GetVisible();

40 protected:

41 void SetVisible(Boolean NewVisible)

42 { Visible=NewVisible; }

43 private:

44 void AssignAPoint(Point& P);

45 };

46

47 class Circle : public Point

48 {

49 protected:

50 int Radius;

51 public:

52 Circle(int InitRadius=0,int InitX=0,int InitY=0);

53 Circle(Point& InitCenterPoint,int InitRadius=0);

54 Circle(Circle& ACircle);

55 ~Circle();

56 int GetRadius() { return Radius;}

57 virtual void Show();

58 virtual void Hide();

59 void Expand(int ExpandBy);

60 };

61

62 Location::Location(int InitX,int InitY)

63 {

64 x=InitX;

65 y=InitY;

66 }

67

68 int Location::GetX()

69 { return x; }

70

71 int Location::GetY()

72 { return y; }

73

74 void Location::SetX(int InitX)

75 { x=InitX;}

76 void Location::SetY(int InitY)

77 { y=InitY; }

78

79 int Point:: NumOfInstances=0;

80

81 Point::Point(int InitX,int InitY, PointType InitPType)

82 :Location(InitX, InitY)

83 {

84 NumOfInstances++;

85 PType=InitPType;

86 }

87

88 void Point:: AssignAPoint(Point& P)

89 {

90 NumOfInstances++;

91 PType= P.PType;

92 }

93 Point::Point(Point& APoint) :Location(APoint.x, APoint.GetY())

94 {

95 AssignAPoint(APoint);

96 }

97

98 Point::~Point()

99 {

100 NumOfInstances--;

101 cout<<"~Point ";

102 }

103 Boolean Point::GetVisible()

104 { return Visible; }

105 void Point::Show()

106 {

107 Visible=TRUE;

108 cout<<"ShowPoint:"

109 <<"("<<"x="<
110 <<"Visible="<
111 <<"PType=" << PType <<")n";

112 }

113

114 void Point::Show(int ColorID)

115 {

116 Visible=TRUE;

117 cout<<"ShowPoint:"

118 <<"("<<"x="<
119 <<"Visible="<
120 <<"PType=" << PType <<", "

121 <<"ColorID=" <
122 }

123

124 void Point::Hide()

125 {

126 Visible=FALSE;

127 cout<<"The point:("<
128 }

129 void Point::MoveTo(int NewX,int NewY)

130 {

131 if(Visible) Hide();

132 x=NewX;

133 y=NewY;

134 Show();

135 }

136

137 Circle::Circle(int InitRadius, int InitX,int InitY)

138 : Point(InitX,InitY, CircleCenter)

139 {

140 Radius=InitRadius;

141 }

142 Circle::Circle(Point& InitCenterPoint, int InitRadius)

143 : Point(InitCenterPoint)

144 {

145 Radius=InitRadius;

146 PType=CircleCenter;

147 }

148

149 Circle::Circle(Circle& ACircle)

150 :Point(ACircle.GetX(), ACircle.GetY(), ACircle.PType)

151 {

152 Radius=ACircle.GetRadius();

153 }

154

155 Circle::~Circle()

156 {

157 cout << "n~Circle ";

158 }

159 void Circle::Expand(int ExpandBy)

160 {

161 Radius+=ExpandBy;

162 if(Radius<0) Radius=0;

163 Show();

164 }

165 void Circle::Show()

166 {

167 SetVisible(TRUE);

168 cout<<"Show Circle:"

169 <<" Centre is ("

170 <
171 <<"Radius="<
172 }

173 void Circle::Hide()

174 {

175 SetVisible(FALSE);

176 cout<<"Hide the circle!!!"<<"n";

177 cout<<"The centre of the circle is:("

178 <
179 cout<<"The Radius of the circle is:"<
180 cout<<"the Circle is Hidden"<<"n";

181 }

182

183 void main()

184 {

185 cout<<"--Using Point Class--"<<"n";

186 cout<<"NumOfInstances="

187 <
188 Point P1(2,9, Online), P2(2,9), P3(2), P4;

189 Point P5(P1);

190 P1.Show();

191 P1.Show(4);

192 P2.Show();

193 P3.Show();

194 P4.Show();

195 P5.Show();

196

197 cout <<"n";

198 cout<< "Access P1's all Members:"<<"n";

199 cout<<"NumOfInstances="

200 <
201 <<"P1.x="<
202 << "P1.y="<
203 <<"P1.PType="<
204 <<"P1.Visible="<
205

206 {

207 //通过类实例数组演示局部变量及其析构

208 Point PArr[4];

209 cout<<"NumOfInstances="

210 <
211

212 Point* PtrArr=PArr;

213 for (int i=0; i<4; i++)

214 {

215 cout << "i=" <
216 PArr->SetX(i);

217 PArr->SetY(i+i);

218 PArr->Show();

219 PtrArr=PtrArr+1;

220 }

221 }

222 cout<<"NumOfInstances="

223 <
224

225 Point *PtrP1;

226 PtrP1=&P1;

227 cout<< "Access P1 using PtrP1:" <<"n";

228 PtrP1->Show();

229 cout<<"NumOfInstances="

230 <getNumOfInstances()<<"n"

231 <<"PtrP1->x="<GetX()<<", "

232 <<"PtrP1->y="<GetY()<<", "

233 <<"PtrP1->PType="<PType<<", "

234 <<"PtrP1->Visible="<GetVisible()<<"nn";

235

236 cout<<"--Using Circle Class--"<<"n";

237 cout<<"NumOfInstances="

238 <
239 Circle C1(99, 3, 8), C2(99, 3), C3(99), C4(1,1), C5(P1,88), C6(P1);

240 Circle C7(C1);

241

242 cout<<"After run Circle C6(C1), NumOfInstances="

243 <
244

245 C1.Show();

246 C2.Show();

247 C3.Show();

248 C4.Show();

249 C5.Show();

250 C6.Show();

251 C7.Show();

252

253 cout<< "nAccess C1's all members: ";

254 cout <<"C1.Radius="<
255 <<"C1.x="<
256 << "C1.y="<
257 <<"C1.PType="<
258 <<"C1.Visible="<
259

260 Circle* PtrC1;

261 PtrC1=&C1;

262 cout<< "Access C1 using PtrP1:" <<"n";

263 PtrC1->Show();

264 cout<<"NumOfInstances="

265 <getNumOfInstances()<<"n"

266 <<"PtrC1->Radius="<GetRadius()<<"n"

267 <<"PtrC1->x="<GetX()<<","

268 <<"PtrC1->y="<GetY()<<","

269 <<"PtrC1->PType="<PType<<", "

270 <<"PtrC1->Visible="<GetVisible()<<"n";

271

272 cout << "Call C1.Expand(20):n";

273 C1.Expand(20);

274 cout<<"n";

275

276 cout<<"Access C1 using Parent Class Pointer:PtrP1:" <<"n";

277 PtrP1=&C1;

278 PtrP1->Show(); //Calling Point.Show() or Circle.Show() ?

279 cout<<"NumOfInstances="

280 <getNumOfInstances()<<"n"

281 //<<"PtrP1->Radius="<GetRadius()<<"n"// Why?

282 <<"PtrP1->x="<GetX()<<","

283 <<"PtrP1->y="<GetY()<<","

284 <<"PtrP1->PType="<PType<<","

285 <<"PtrP1->Visible="<GetVisible()<<"n";

286

287 /*--Advanced OOP -- */

288 //P1.AssignAPoint(&P1); Why not be permitted?

289 // Location L1(2,9); Why not be permitted?

290 }

程序说明:

(1) 本程序第1~61 行完成了Location、Point 和Circle 这3 个类的定义;第62~181 行完成了这3 个类的实现,即对类中定义的成员函数给出实现代码和对特殊成员变量进行初始化(第79 行);第183~290 行对这3 个类演示了各种应用和操作,图2.2 给出了这些应用的输出结果。



图 2.2 OOP 综合样板程序的输出结果

(2) 该程序包括了OOP 的基本概念的定义、实现和应用技术,本章的后续内容将陆续予以分析和说明。




添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.