面向对象程序设计

我们熟知的编程范式有四个:1、面向过程 2、面向对象 3、面向切面 4、函数式编程

今天主要聊一聊面向对象编程。面向对象编程有三大特性:1、封装 2、继承 3、多态。那么我们应该在实践中如何运用面向对象编程思想进行系统设计呢?

一般方法或步骤如下:

1)考虑类(名词)

2)类的属性(不可脱离具体的应用环境)

3)类的方法

4)类之间的关系 见上一篇《UML中的几种关系》

5)封装与隐藏(降低耦合度)

6)继承

7)多态(核心中的核心,可扩展性) 三个必要条件:1、继承 2、子类重写父类方法 3、父类引用指向子类对象

现在我们来考虑一下:人们开车上班 这句话应该怎样进行系统分析与设计

1、考虑类

这句话中包含一个名词人们,那么我们应该定义一个Person类。还有别的名词吗?似乎没有了。注意这里开车是动词,但是开车这个动作需要有车才能开,所以考虑定义一个Car类。

2、类的属性

这里我们不关心人和车本身的一些固有特征(姓名、身高、车的品牌等),所以暂且认为这两个类中没有属性。

3、类的方法

人需要开车去上班,那么Person类应该有两个方法:开车(drive) 上班(work)

汽车类需要从家到公司,那么Car类应该有一个方法:运行(run)

4、类之间的关系

现在我们有两个类,一个Person一个Car,那么它们两应该是什么关系呢?首先排除泛化和实现,接着他们也不是局部和整体的关系,那么也不可能是组合和聚合的关系。那么只剩下关联和依赖。考虑到一般我们都是开私家车上班,那么Person类中应该有一个成员变量叫Car,即他们应该是关联的关系。另外一种场景:滴滴代驾,那么Person(代驾)和Car(汽车)的关系应该是依赖关系,因为司机每次开的车都不一样。那么Person的drive方法可以考虑传入Car(汽车)

5、封装与隐藏

刚刚上面我们分析过,Person类中包含drive和work方法,这两个方法可以考虑暴露给外界调用,完成开车上班这个动作,至于怎么开车,怎么工作的细节,可以定义为private完成封装和隐藏

6)继承

不涉及

7)多态

不涉及

至此我们就完成了一次面向对象编程的实践

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章