• 正文
    • 1 理解接口与实现的区别
    • 2 使用抽象思维设计接口
    • 3 思考过程
    • 4 总结
  • 相关推荐
申请入驻 产业图谱

面向对象的程序设计:以对象的方式进行思考

21小时前
214
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1 理解接口与实现的区别

以上一篇文章的电视机需要插电使用的例子继续来讲解:请求对象(电视机),接口(插座),实现(发电厂)

对电视而言,插电使用,只需要标准的插座即可,具体的电从哪里来,是火力发电厂,或是太阳能发电,亦或是畜电池逆变供电,电视机是不需要关心的。

发电厂或供电设备属于实现,220V交流电插座属于接口。改变实现不会对电视机的使用产生影响,而改变接口则会。

    接口:呈现给外部使用的服务属于接口,进一步将,只需要呈现需要使用的接口。实现:实现的细节对外部是进行隐藏的,对代码编写来说,修改实现是不需要变动用户代码的。

2 使用抽象思维设计接口

面向对象编程的一大优势,是可以重用类,而这些可重用的类,接口通常比较抽象。

    具体接口:功能明确抽象接口:通用性高

举个例子:创建一个出租车对象,有抽象接口(送到机场)和具体接口(左转、右转、启动、停止)

对于抽象接口,送到机场,不管是在哪座城市,哪个位置,都可以到达机场,只是具体的路径可能会不一样。

对于具体接口,左转、右转、启动、停止,在每个城市,或每个位置,都需要具体的指明如何到达。

对比来看,抽象接口,更具有通用性。

3 思考过程

在设计类时,为了尽量隐藏内部原理,需要遵循一些规则:

    只提供需要的接口,也意味着提供的接口尽可能少只有真正需要时才添加接口,不提供超出需求的接口可以先将接口都定义为私有,在开始使用该类时,将需要开放的接口改为公有

3.1 确定用户

在出租车的示例中,用户是实际使用系统的人,那用户具体是指谁呢?

对于要打车的人,确实属于用户。

对于出租车司机,想对于出租车这个对象来说,司机也属于客户。

注意:这里实际有3个对象:出租车、打车的人、司机

然后用户是2个:打车的人、司机

3.2 对象行为

确定出用户之后,还要确定对象的行为。

确定对象行为,就是要从每个用户视角,分析每个对象的目的以及需要做的事情。

3.3 环境约束

对象的功能可能会受到环境的影响,例如,在出租车的例子中,司机不能通过座坏了的桥,即使是最短的路径。

3.4 识别公共接口

以租车对象为例,使用该对象时,需要的过程包括:

    上车指明目的地付车费下车

对于打车的人,如果要打车,需要:

    确定要去的地方打车给司机付钱

在程序设计开始,只需要先考虑如何使用这个对象,先不用考虑如何构建这个对象。在思考的过程中,可能会发现该对象需要一些额外的接口,比如:把行李放到后备箱等。

下面是一个Cabbie(出租车司机)的类图,描述了其可用的方法。

3.5 识别实现

在公共接口确定了之后,接下来才是实现的过程。对于非公共接口,都可以认位是实现。

用户不需要看到具体的实现过程。公共方法中的代码,也属于实现,用户只能看到接口。

    接口代表了用户如何看待对象实现则是对象的具体细节

4 总结

本篇介绍了面对对象的程序设计中,如果以对象的方式进行思考,包括理解接口与实现的区别,使用抽象思维设计接口,以及具体的思考过程。

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录