`
feiliboos
  • 浏览: 665420 次
文章分类
社区版块
存档分类
最新评论

面向对象的几个重要概念

 
阅读更多

▲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”水果

▲多态(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)
度量系统内或系统之间依赖关系的复杂度
设计原则:增加内聚,减少藕合
接口 :解耦合

分享到:
评论

相关推荐

    《C--面向对象程序设计》习题与上机解答-提交稿-陈维兴

    封装是面向对象程序设计方法的一个重要特性,所谓封装具有两方面的含义:一是将有关的数据和操作代码封装在一个对象中,各个对象相对独立、相不干扰。二是将对象中某些数据与操作代码对外隐蔽,即隐蔽其内部细节,只留下...

    面向对象与UML资料

    几个注意点 71 自然语言分析: Abbott的试探法 72 第二节 标识实体对象 72 标识实体对象的试探法 72 例子:报告紧急情况用例 73 例子:报告紧急情况用例的实体对象 73 第三节 标识边界对象 73 标识边界对象的试探法 ...

    完成Java面向对象程序设计实验课的心得体会.doc

    Java面向对象程序设计实验课的心得体会 经过这几周对Java面向对象程序设计的学习,让我更加了解到Java学习的重要性。 在实验课上,我们完成多个实验,在这个阶段的学习中,我从认识到熟悉,而后到 能够自主运用。...

    你必须知道的.NET

    你必须知道的.NET ...而实际上,理解面向对象一个重要的方法就是以实际的生活来类比对象世界,对象世界的逻辑和我们生活的逻辑形成对比的时候,这种体验将会更有亲切感,深入程度自然也就不同以往。

    你必须知道的.net

    非常好的.net开发书籍,提起面向对象,...而实际上,理解面向对象一个重要的方法就是以实际的生活来类比对象世界,对象世界的逻辑和我们生活的逻辑形成对比的时候,这种体验将会更有亲切感,深入程度自然也就不同以往。

    收集学习asp.net比较完整的面向对象开发流程

    如果你已经有较多的面向对象开发经验,跳过以下这两步: 第一步 掌握一门.NET面向对象语言,C#或VB.NET 我强烈反对在没系统学过一门面向... 举个例子:下面简单列出几个对掌握ASP.NET非常重要的概念: 对象的内存模

    Java相关的重要术语解析

    Java 语言基本上属于一个完全面向对象的语言,并且语言的设计仍然以简捷为重点,因此有其它语言基础的朋友学习Java语言会感觉比较简单,对于这个语言学习的难点则是面向对象的相关概念,包括:包、类、对象、实例、...

    2020语言与智能技术竞赛:面向推荐的对话任务.zip

    面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这...

    基于springboot+sureness的面向REST API资源无状态认证权限管理系统.zip

    面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这...

    毕业设计-基于HBase实现的手机数据备份系统,实现了手机关键信息的备份,如短信、联系人、重要文件等。.zip

    面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这...

    关于计算机数据库系统设计方案.doc

    面向对象技术利用对象、类等技术手段可以满足对一些领域数据库的特殊需求,与关 系型数据库相比,面向对象技术的优势主要体现在以下几个方面。 1.1 支持复杂的数据模型。传统的关系型数据库不能支持复杂的数据模型...

    毕业设计基于Cesium时空数据可视化后台Java SSM框架.zip

    面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这...

    毕业设计管理系统java服务端,采用spring mvc.zip

    面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这...

    毕业设计、JAVA毕业设计、C#毕业设计、主流的学生管理系统.zip

    面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这...

    一个小小的本科毕业设计.zip

    面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这...

    这是我的一个毕业设计.zip

    面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这...

    毕业设计是做一个景区购票系统.zip

    面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这...

    SpringBoot + Vue + ElementUI 实现一个后台管理系统模板.zip

    面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这...

    java8+springMVC4+mybatis编写一个图书管理系统.zip

    面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这...

    为一个客户定义的一个简单的ERP管理系统,实现了采购,销售登记,库存管理,货损登记和更新,.zip

    面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多线程支持: Java内置了对多线程的支持,允许程序同时执行多个任务。这...

Global site tag (gtag.js) - Google Analytics