面向对象中,一切都是由对象展开的,组织代码,封装数据。
在台湾面向对象被翻译为了面向物件编程,这充分说明了,这种编程强调实体。
下面就结合编程语言的发展史,聊一聊面向过程和面向对象。
c语言由贝尔实验室研发,起初编程人员在使用时发现,一个大型的软件会有很多的方法和全局数据。频繁地在方法里调用外面的数据会使得程序的可扩充性下降。没有一个很好的封装,当想要扩充这个软件是非常困难的。
起初、贝尔实验室的科研人员发现了结构体来把很多相似的变量放到一个结构体里面(比如把汽车发动机的属性全部扔到一个发动机的结构体里面)。
后来发现心的弊端又产生了,既然你都已经把所有的属性放到一起了,为什么不把操作这些属性的方法也放到这个所谓的结构体里面呢。
于是诞生了c++语言把这个结构体叫做了类,使用class关键字来表示。这样就告别了传统的以方法为单位的设计方式,改成以类为单位来组织代码。
面向对象相比于面向过程的优势
优势只有在设计大软件,完成大任务的时候才能体现出来。
下面有几个很生动形象的例子来表述:
1、比如描述一个开车的程序。
使用面向对象:驾驶员、汽车、驾驶员开汽车(驾驶员调用开汽车的方法 )
使用面向过程:踩离合,挂挡,踩油门,放离合。
比较一下开车这个过程中,两个方式都差不多,没有体现出面向对象的优势。
是因为开车是一个简单的程序。如果要求设计一辆车,这个庞大的任务,这时、面向对象的优势就体现出来了。你只需要把汽车各个部件以类的形式分解出来,比如轮胎,挡风玻璃,发动机,座椅,逐个去解决。如果你用面向过程,完完全全地生产一辆汽车,这几乎是不可能完成的。
对象和类
以ood的角度,是先有对象后有类。一个从来没有见过汽车的人,能定义一个汽车类吗?
抽象是抽出相同的部分,一个好的抽象,构建出类很重要。
从oop的角度,先有代码先有类,再有对象。