ITKeyword,专注技术干货聚合推荐

注册 | 登录

面向对象的几个重要概念

hliq5399 分享于 2007-04-24

推荐:面向对象编程

在大学接触面向对象以前,一直都是用面向过程,直到现在写代码还是面向过程居多,学习那会儿经常听到一个论调,说面向对象特别适合大型程序,因为面向过程在大型

2020腾讯云共同战“疫”,助力复工(优惠前所未有!4核8G,5M带宽 1684元/3年),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1053

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

 ▲OOP的主要特征:
抽象(abstract)
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
关联(association)
聚合(aggregation)
组合(composition)
内聚与耦合(cohesion & coupling)

单个类型 抽象Abstract 封装encapsulation
层次结构 继承inheritance  多态polymorphism
类型之间 关联association  聚合aggregation  组合composition
编程准则:内聚与藕合 cohesion & coupling

▲抽象Abstract:把事物共同点抽取出来,以统一的方式进行概要描述的过程.抽象是存在不同层次的.
在不同的需求环境下,我们到底把什么抽象成类,把什么当作实例或对象,是面向对象设计一开始最
关键的一步,如果抽象过度,可能导致程序设计层次加重,但如果抽象不够在极端的情况下,可能会
退化到面向过程设计的那种一段程序对应一个问题的情形.

忽略掉一个对象或实体的细节而只关注其本质特征的过程
简化功能与格式
帮助用户与对象交互

▲封装(encapsulation)
隐藏数据和实现
提供公共方法供用户调用功能
对象的两种视图
 —— 外部视图:对象能做的工作
 —— 内部视图:对象如何完成工作
 —— 电视机:调节音量

▲继承(inheritance)
通过存在的类型定义新类型的机制
通常在两个类型之间存在“is a”或“kind of”这样的关系
通过继承可实现代码重用,另外继承也是多态的基础
如苹果“is a”水果

推荐:菜鸟学java ——(一)面向对象程序设计(几个重要的概念)

几个概念的解释: (1)面向对象(OOP:程序由对象组成,每个对象中包括功能部分和实现部分。面向对象关心能否满足用户需求,而非对象的具体实现。在OOP思想中数

▲多态(polymorphism)
一个名称,多种形式
一个类中的方法重载就是一种多态
基于继承的多态
调用方法时根据所给对象的不同选择不同的处理方式
如Football——play():使用脚来完成
Basketball——play():使用手来完成
给出一个具体的足球或篮球,用户自动知道该使用谁的方式去执行play()

▲关联(association)
对象之间交互时的一种引用方式
当一个对象通过对另一个对象的引用去使用另一个对象的服务或操作时,两个对象之间便产生了关联
如person使用computer,person与computer之间就存在了关联关系
person
{
 Computer.PlayGame();
}

▲聚合(aggregation)
关联关系的一种,一个对象成为另外一个对象的组成部分
是一种关系较强的关联
在两个对象之间存在“has a”这样的关系,一个对象作为另一个对象的属性存在,在外部对象被生产时,可由客户端指定与其关联的内部对象
如汽车与轮胎,轮胎作为汽车的一个组成部分,它和汽车可以分别生产以后装配起来使用,但汽车可以换新轮胎,轮胎也可以卸下来给其它汽车使用

较强的关联    ---- 通过构造函数
class person
{
    public person()
 {
 Create compter;
        }
}

▲组合(composition)
当一个对象包含另一个对象时,外部对象负责管理内部对象的生命周期的情况
关联关系中最为强烈的一种
内部对象的创建由外部对象自己控制
外部对象不存在时,内部对象也不能存在
如电视机与CRT

组合composition
发动机 车
车的生命周期决定发动机生命周期
垃圾回收

▲内聚(cohesion)
度量一个类独立完成某项工作的能力
清洁工(有吸尘器,拖不,扫把)
临时工(无)
 
▲藕合(coupling)
度量系统内或系统之间依赖关系的复杂度
设计原则:增加内聚,减少藕合
接口 :解耦合

推荐:面向对象开发与面向对象设计模式的几个核心的思想和概念 -java

>>>> 面向对象开发的几个核心思想 1、问题领域、对象、属性、状态、行为、方法、实现 问题领域:   指软件系统所模拟的真实世界中的系统,在现实生活中,比较常见

 ▲OOP的主要特征: 抽象(abstract) 封装(encapsulation) 继承(inheritance) 多态(polymorphism) 关联(association) 聚合(aggregation) 组合(composition) 内聚与耦合(cohesion & coupling) 单个

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。