1700415760
1700415761
1700415762
1700415763
1700415764
图中所画的类表示的正是前面代码清单7.2中的类MyClass。将一个矩形分为上中下三栏,在上面的一栏中写入类名,中间一栏列出变量(在UML中称为“属性”),在下面的一栏中列出函数(在UML中称为“行为”或“操作”)
1700415765
1700415766
在进行面向对象编程的设计时,要在一开始就把所需要的类确定下来,然后再在每个类中列举出该类应该具有的函数和变量,而不要到了后面才把零散的函数和变量组织到类中。也就是说,要一边观察作为程序参照物的现实世界,一边思考待解决的问题是由哪些事物(类)构成的。正因为在设计时要去关注对象,这种编程方法才被称为面向对象编程(Object Oriented Programming,其中的Oriented就是关注的意思)。而在那些传统的开发方法中,进行程序设计则是要先考虑程序应该由什么样的功能和数据来构成,然后立即确定与之相应的函数和变量。与此相对的面向对象编程的设计中,因为一上来就要确定有哪些类,从而构成程序的函数和变量就必然会被组织到类中
1700415767
1700415768
1700415769
1700415770
1700415772
计算机是怎样跑起来的 7.8 观点6:面向对象编程通过在对象间传递消息驱动程序
1700415773
1700415774
假设要编写这样一个程序,玩家A和玩家B玩石头剪刀布,由裁判判定输赢。如果使用作为非面向对象编程语言的C语言编写,程序就会像代码清单7.3中那样;如果使用作为面向对象编程语言的C++编写,程序就会代码清单7.4中那样,能看出其中的差异吗?
1700415775
1700415776
代码清单7.3 未使用面向对象编程语言的情况(C语言)
1700415777
1700415778
/*玩家A确定手势*/
1700415779
1700415780
a=GetHand();
1700415781
1700415782
/*玩家B确定手势*/
1700415783
1700415784
b=GetHand();
1700415785
1700415786
/*判定胜负*/
1700415787
1700415788
winner=GetWinner(a,b);
1700415789
1700415790
代码清单7.4 使用了面向编程语言的情况(C++)
1700415791
1700415792
//玩家A确定手势
1700415793
1700415794
a=PlayerA.GetHand();
1700415795
1700415796
//玩家B确定手势
1700415797
1700415798
b=PlayerB.GetHand();
1700415799
1700415800
//由裁判判定胜负
1700415801
1700415802
Winner=Judge.GetWinner(a,b);
1700415803
1700415804
在C语言的代码中,仅仅使用了GetHand()和GetWinner()这种独立存在的函数。与此相对在C++的代码中,因为函数是隶属于某个类的,所以要使用PlayerA.GetHand()这样的语法,表示属于类PlayerA的函数GetHand()
1700415805
1700415806
也就是说C++等面向对象编程语言编写程序的话,程序可以通过由一个对象去调用另一个对象所拥有的函数这种方式运行起来。这种调用方式被称为对象间的“消息传递”。在面向对象语言中所说的消息传递指的就是调用某个对象所拥有的函数。即便是在现实世界中,我们也是通过对象间的消息传递来开展业务或消磨时间的。在面向对象编程中还可以对对象的消息传递建立模型
1700415807
1700415808
如果未使用面向对象编程语言,那么可用到流程图表示程序的运行过程。流程图表示的是处理过程的流程,因此通常把非面向对象语言称为“过程型语言”。而且可以把面向对象编程语言和面向过程型语言,面向对象编程和面向过程编程分别作为一对反义词来使用。
1700415809
[
上一页 ]
[ :1.70041576e+09 ]
[
下一页 ]