面向对象程序设计基本原理

引言

对面向对象技术的基本原理的理解,有助于对掌握面向对象的语言,从而在实际开发中做出好的系统。面向对象基本原理包括抽象(Abstraction)、 封装(Encapsulatio)、 模块性(Modularity)、 层次性(Hierarchy)

抽象(Abstraction)

在面向对象开发模式中,把标识和模型化问题论域中的主要实体做为系统开发的起点。所谓的抽象就是将业务领域中的某一类东西,提取出来,用程序代码表示,抽象出来的一般叫做类或者接口,抽象的过程就是建模过程。抽象时主要考虑对象的行为而不是必须执行的一系列动作,即不是完整解决问题的算法,而是该对象应该具有的行为,解决问题是由不同的对象协作完成的。
面向对象系统中的对象是数据抽象与过程抽象的综合。数据抽象可表示世界中一类事物的特征,就是对象的属性;过程抽象表示世界中一类事物的行为,就是对象的行为。
如“商城会员系统”中:将现实世界中的一个个具体的对象(商城具体会员)抽象为会员类(member)、面包、服装抽象为商品(goods)等。
注意:

  1. 抽象时不必考虑实现细节;
  2. 抽象分为边界类(处理人机交互的界面类)、操作类、实体类(数据载体类)三种;
  3. 抽象时按照单一职责原则,需要将数据的表示和操作分开。如:会员的实体类以及对会员操作类分开

封装(Encapsulatio)

所谓的封装就是隐藏实现细节,调用方仅知道封装的对象能做什么,无需了解具体怎么实现的。如:电视机的内部是很复杂的,作为我们,没必要知道。遥控作为一个暴露给使用者的外用接口,暴露了计算机的功能,却无法知道电视机的内部结构。
封装可以大大提高系统的可维护性,通过多态也可增加系统可扩展性。

模块性(Modularity)

模块化设计是指将软件分解为多个独立模块,不同的模块具有不同的功能和职责。每个模块可以独立的进行开发、测试,最后组装成完整的软件。模块独立性是指软件系统中每个模块只涉及软件要求的子功能,而与软件系统中其他模块的接口是简单的。如果一个模块只具有单一功能且与其他模块没有太多的联系,那么称此模块具有模块独立性。面向对象的封装性保证了模块具有高内聚低耦合特性。

层次性(Hierarchy)

类的层次性是面向对象的1个重要属性;通过层次性,利用类的多态特性,可以实现软件工程中的复用、扩展两大主题。如下图所示,艺术(art)是基类,包含一个play的抽象方法和查找文件地址的具体方法。在这里插入图片描述
欣赏艺术调用play方法,代码如下:

show(Art art){
  art.play();
}

当传入Art是Rap,则使用的Rap的演奏方法,传入的是Sci-Fi则演示特技表演;如果要扩展京剧,则仅需要增加一个“BeijingOpera”类即可,程序扩展性强;Art查找文件地址的具体方法,Music播放包含听觉、Films包含了听觉、视觉等方法,又实现了最大限度代码的复用。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值