您的位置:首页 > 编程语言 > C语言/C++

面向对象的设计(一)——C++高级编程

2013-10-31 11:27 239 查看
作者:云梦泽

时间:2013.10.31

出处:
http://write.blog.csdn.net/postlist

声明:版权所有,侵犯必究,如有转载请声明出处

最近在读[比]Marc Gregoire [美]Nicholas A. Solter Scott J. Kleper的《C++高级编程》,觉得非常有感觉,C++功底不是很深,但熟悉C#,做过几个项目,对面向对象编程已有一定的理解,看起来还比较顺畅,便把自己的体会和读书心得拿出来分享,共勉。我觉得理论和实际项目都要具备才能在水平上有快速的提高,光理论纸上谈兵不行,光一个劲做项目也不行,很少有天天搬砖砌房的人到后面做房屋设计者把控全局了。

1.面向过程编程与面向对象编程

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
(比如C)过程语言即将实现打小,分为小块比如说函数,每个小块(每个函数)完成一个单一的任务,能够将任务划分为单一模块是编程的一项基本能力,而不是把所有的功能都实现在一个main()函数里头,这是程序员基本修养,这样有助于阅读、维护。看起来也雅致。

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。(比如C#,Java),面向对象是一种模拟生活的哲学态度,上升到哲学的角度去思考问题是不是更眼高手低呢还是一切尽在眼底呢,我不知道。

2.面向对象思想

凡事最重要的是思想,思想是事件的本质,这点不把握写再多的代码做再多的项目都是徒劳。

OOP(面向对象)编程的基本观念不再像OPP(面向过程)编程那样只是将程序分割为若干任务,而是将其分割为自然对象的模型。我们处在一个自然世界中,程序本是处理生活中的任务,这种以面向对象的程序设计必然会带来极大的灵活性,因为它更贴近生活。

2.1类

类的概念是使得对象和定义分离开来,比如类:学生,对象:张三、李四。学生这个类简单的封装和定义了学生这个类的分类信息,具有学习、要上课、要考试、有学号、有姓名等行为或属性。张三、李四是这个类的典型代表,即对象,他们都具有类本身定义的行为和属性,但具体的值会有区别。对象是类的一个实例,从而可将该对象与其他类区别开来。张三、李四是学生,不是工人,所以不要搬砖。



2.2组件

考虑一个复杂的对象,例如飞机,那么这里头的东西可就多了,为了方便解释和工程分工团队合作等等。我们将它拆分为机身、控制器、起落装置、引擎等很多部件,正是这些部件的组合成了一架完整可运行的飞机。对于OOP而言,能将对象分解为更小的组件又是一项必备能力,这倒和OPP编程将任务分解为函数一样,化复杂为简单是基本修养,不光只是编程吧。

2.3属性

类的属性即这个所具有的本征,实例化一个对象后,对象就具备该属性,但不同的对象属性值可能不一样,比如上面提到过的学生类,对象张三、李四有姓名、年龄等共同的属性,但他们具体的取值可以区别。一句话属性是用来描述对象的特征的,用来回到“为什么这个对象与众不同”,其实我们都是人这个类的一个对象,我们都与众不同,世界因为你而不一样。

2.4行为

和类的属性一样,但类的行为回答“对象能做什么”和“能对对象做什么”。不同的对象也会体现得不一样。即行为不一样。有一点很重要,就是在面向对象编程中,许多功能性代码从过程转移到对象本身,通过建立具有某些行为的对象并定义对象的交互方式,OOP能以更丰富的机制将代码以及代码操作的数据联系起来。功能集成在对象本身上,当我们要要执行任务时我们就去请这个对象,然后让他汇报。若在是和OPP编程一样写自己的函数去执行任务把自己搞的太累了。比如分析股票,OPP编程是以程序函数去分析股票价格,而OOP编程则认为股票报价是一个对象,他自己会分析股票,你去问这个对象,他就把分析结果告诉你,注意,他是一个对象,就像实在的一个人一样,而不是一个函数,你去问,他会和你交互告诉你答案。

注意:面向对象是用来帮助我们管理代码的,并使得程序设计变得灵活,如果只是使代码“更加面向对象”而使用对象,这是错误的观念。所以不要过度使用对象,该用什么用什么。另一方面,不要过于使用通用的对象。比如张三从属于对象动物,虽然没错,但不合理,记住面向对象编程最主要的目的就是为了管理代码给设计带来灵活性,使用过于通用的对象倒给设计带来麻烦。根据实际应用合理的限制范围,比如在设计一个学籍管理系统时,把张三作为学生这个类是恰当的设计。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: