面向对象和面向过程

一  什么是面向过程?什么是面向对象?

               如果面试的时候问面向对象和面向过程的区别,就用Action、Service、

        Dao去答。

        1.什么是面向过程

                  仔细思考一下,我们在学习和工作中,当我们去实现某项功能或

        完成某项任务时,是不是会不自觉的按部就班的罗列出我们要做的事

        情?而当我们按着我们罗列的步骤去解决问题时,实质上就是按照面向

        过程的思想去解决问题。我们罗列的步骤就是过程,按照步骤解决问题

        就是面向过程。

               传统的面向过程的编程思想总结起来就八个字——自顶向下,逐

       步细化!实现步骤如下:

     (1)将要实现的功能描述为一个从开始到结束按部就班的连续的步骤

            (过程);

     (2)依次逐步完成这些步骤,如果某一步的难度较大,又可以将该步

              骤再次细化为若干个子步骤,以此类推,一直到结束得到想要的

              结果;

    (3)程序的主体是函数,一个函数就是一个封装起来的模块,可以实

             现一定的功能,各个子步骤往往就是通过各个函数来完成的,从

             而实现代码的重用和模块化编程!

             案例:学生到校报道注册:

             

                     面向过程,就是按照我们分析好了的步骤,按部就班的依次

             执行就行了!所以当我们用面向过程的思想去编程或解决问题时,

             首先一定要把详细的实现过程弄清楚。一旦过程设计清楚,代码

             的实现简直轻而易举。

        2.面向对象

                   所谓的面向对象,就是在编程的时候尽可能的去模拟真实的现

           实世界,按照现实世界中的逻辑去处理一个问题,分析问题中参与

           其中的有哪些实体,这些实体应该有什么属性和方法,我们如何通

           过调用这些实体的属性和方法去解决问题。

                  现实世界中,任何一个操作或者是业务逻辑的实现都需要一个

           实体来完成,也就是说,实体就是动作的支配者,没有实体,就肯

           定没有动作发生!

                  现在让我们思考下,上述注册报名的每一个步骤都有哪些动

           词?提出 提供 缴 收 获得 分配 增加有动词就一定有实现这个动作

           的实体!

                  所谓的模拟现实世界,就是使计算机的编程语言在解决相关业

          务逻辑的方式,与真实的业务逻辑的发生保持一致!需要使每一个

          动作的背后都一个完成这个动作的实体!(比如三层架构中的Dao、

          Service、Action)

            因为任何功能的实现都是依赖于一个具体的实体的

          “动作|操作|行动”,可以看作是一个又一个的实体在发挥其各自的

          “能力”并在内部进行协调有序的调用过程!

                 当采用面向对象的思想解决问题时,可分为下面几步:

               (1)分析哪些动作是由哪些实体发出的;

               (2)定义这些实体,为其增加相应的属性和功能;

               (3)让实体去执行相应的功能或动作。

          采用面向对象的思想,解决上面的报名问题,应该如下:

          第一步:分析那些动作是由哪些实体发出的

                        学生提出报名

                        学生缴费

                        机构收费

                        教师分配教室

                        班级增加学生信息

                        于是,在整个过程中,一共有四个实体:

                        学生、机构、教师、班级!

                        在现实中的一个具体的实体,就是计算机编程中的一个对

                        象!

          第二步:定义这些实体,为其增加相应的属性和功能

                        属性就是实体在现实世界中的一些特征表现。如:

                        人的属性:姓名、性别、身高、三围、体重、电话号码、

                                          家庭住址、籍贯等

                        手机的属性:品牌、价格、颜色、尺寸、待机时间等

                        功能就是能完成的动作,在面向对象的术语中,动作就叫

                        作方法或者函数。如:

                        人的动作(功能):吃饭、睡觉、学习、打游戏、走路、

                                                         跑步、缴费!

                        手机的动作(功能):打电话、发短信、拍照、打游戏、

                                                            视频、看电影等

                        下图显示了在上述实例中出现的实体以及相应的属性和功

                        能:

                        

          第三步:让实体去执行相应的功能或动作

                         学生提出报名

                         学生缴费

                         学校收费

                         教师分配教室

                         班级增加学生信息

                  所以说,面向过程主要是针对功能,而面向对象主要是针对能

           够实现该功能的背后的实体。面向对象实质上就是面向实体,所以

           当我们使用面向对象进行编程时,一定要建立这样一个观念:万物

           皆对象!

                  面向对象当中又会有面向过程,比如“学校收费这一步”,如果

           比较复杂,就需要细化出多个步骤,这又有点像面向过程 

        3.面向对象和面向过程的比较

                  在我们将面向过程和面向对象讨论完后,会明显的感觉两者之

           间有着很大的区别。面向过程简单直接,易于入门理解,模块化程

           度较低。而面向对象相对于面向过程较为复杂,不易理解,模块化

           程度较高。可总结为下面三点:

                  都可以实现代码重用和模块化编程,但是面对对象的模块化更

           深,数据更封闭,也更安全!因为面向对象的封装性更强!面对对

           象的思维方式更加贴近于现实生活,更容易解决大型的复杂的业务

           逻辑从前期开发角度上来看,面对对象远比面向过程要复杂,但是

           从维护和扩展功能的角度上来看,面对对象远比面向过程要简单!

                  如何选择面向对象还是面向过程,对于一个有着丰富开发经验

           的老手来说,这是个得心应手的过程。而对于一个新手而言,其实

           从两者的对比就可以看出,当我们的业务逻辑比较简单时,使用面

           向过程能更快的实现。但是当我们的业务逻辑比较复杂时,为了将

           来的维护和扩展,还是面向对象更为靠谱点。

        4.在举例子说明面向过程和面向对象的区别,加深理解

           五子棋系统

                (1)面向过程的设计思路:

                         步骤一:开始游戏

                         步骤二:黑子先走

                         步骤三:绘制画面

                         步骤四:判断输赢

                         步骤五:轮到白子

                         步骤六:绘制画面

                         步骤七:判断输赢,

                         步骤八:返回步骤2

                         步骤九:输出最后结果。

                (2)面向对象的设计思路:

                         整个五子棋可以分为:

                         * 黑白双方,这两方的行为是一模一样的

                         * 棋盘系统,负责绘制画面

                         * 规则系统,负责判定诸如犯规、输赢等。

                         第一类对象(玩家对象)负责接受用户输入,并告知第二

                         类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了

                         棋子的变化就要负责在屏幕上面显示出这种变化,同时利

                         用第三类对象(规则系统)来对棋局进行判定。

        5.什么是面向对象、什么是面向过程一段比较抽象的解释,有功夫看,

           没功夫拉到

                  面向过程就是分析出解决问题所需要的步骤,然后用函数把这

           些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面

           向对象是把构成问题事务分解成各个对象,建立对象的目的不是为

           了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中

           的行为。

  • 105
    点赞
  • 259
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值