面向对象的设计

面向过程

一个程序往往由多个模块组成,每一个模块承担一定的任务,然后被封装成一个完整的函数。

在面向过程的语言中,这些模块就是函数,函数组成面向过程语言编制的程序单位。面向过程的程序是由赋值语句、条件语句、循环语句和过程调用语句构成的语句序列。

采用自顶向下的功能分解法,即一个要解决的问题被分解成若干个子问题直至子问题足够简单,可以在相应的子程序中解决。如C语言中,程序是由main函数加若干个子函数组成,在main函数中调用子函数。

自顶向下设计存在的问题:把数据和处理数据的过程分离为相对独立的实体,当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法要重新设计,程序的可复用性差。

面向对象

面向对象,是为了解决过程型程序设计和自顶而下设计中的主要问题。程序的模块单位变成了类,将操作数据的函数和数据封装在一起而形成的。

首先,将数据以及对数据的操作行为放在一起,作为一个相互依存、不可分割的整体——对象。再对相同类型的对象进行分类、抽象后,得出共同的特性而形成了。类通过一个简单的外部接口与外界发生联系。

面向对象的设计,将客观事物看做具有属性和行为(或称服务)的对象,通过抽象找出同一类型对象的共同属性(静态特征)和行为(动态特征),进而形成类的概念。

类是一个数据类型,对象是类的实例。对象由一组属性和一组行为构成,具体地,对象是具有唯一对象名固定外部接口的一组属性和操作的集合,用来模拟组成或影响现实世界问题的一个或一组因素。

其中对象名是区别于其他对象的标志,对外接口是对象在约定好的运行框架和消息传递机制中与外界通信的通道;对象的属性表示了它所处于的状态;而对象的操作则是用来改变对象状态达到特定的功能。

面向对象的特性——封装性和抽象性

封装,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。

有两个含义:其一,把对象的全部属性和全部服务结合在一起,形成一个不 可分割的独立单位;其二,“信息隐蔽”,尽可能隐蔽对象的内部细节,对外界形成一个边界,只保留有限的对外接口,使之与外部发生关系。

数据封装的作用:一、对象的数据封装特性彻底消除了传统结构方法中数据和操作分离所带来的种种问题,提高了程序的可复用性和可维护性;二、对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。private修饰的成员是隐藏的,而public修饰的成员则定义了类对外的公共接口。

抽象性,类作为一个抽象的数据类型,允许用户从底层实现细节中抽象出来,提供给用户的是公共接口上的上层操作。

面向对象的特性——继承性

继承是在已有类(父类或超类)的基础上派生出新的类(子类),新的类能吸收已有类的属性和行为,并扩展新的能力。Java语言中的类只支持单继承,而接口支持多继承。继承是多态性的前提。

面向对象的特性——多态性

多态性是指在超类中定义的属性或行为,被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在超类及其各个子类中具有不同的语义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值