`
java_hanyu
  • 浏览: 71341 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

面向对象设计第一话

阅读更多
Object-Oriented Analysis and Design
OOAD方法论的定义:
   1) 面向对象是一种系统建模技术;
   2) 将系统描述为许多相互作用的有关系对象;
   3) 系统中相互作用的对象被组织成类;
   4) OO方法论由以下三部分组成:
      . 一个过程
      . 一个符号 
      . 一系列规则
     
     
一、面向对象的概念
对象
   1) 是单个的、唯一确认的实体或项目;
   2) 作为面向对象的构建块被使用;
   3) 有身份、数据和行为;
   4) 可以是简单或复杂的;
   5) 可以是具体或抽象的;
   6) 有属性和方法;
   7) 是一个类的动态实例;

类 ,多个相同对象的一种抽象,多个对象共性的抽取,对象都创建自类

面向对象编程的特征  (OOA,OOD,OOP)
   1) Abstraction(抽象):
      有三种形式:■ 对现实生活中一些事物共性的提取;■ 类是对对象的抽象;■ 泛化的过程
      . 忽略细节,处理对象或实体本质的特征,抽取共性;
      . 简化功能以及信息;
      . 帮助用户和对象交互;
     
   2) Encapsulation(封装):
      . 控制对象的边界;
      . 控制对象对外的接口;
      . 隐藏对象的数据;
      . 处理每个对象的二种视图:
        a. 外部视图:显示一个对象做什么;
        b. 内部视图:显示对象如何完成它的任务;
       
   3) Association(关联)
      A对象通过B对象的引用来访问B对象的方法时,称A关联B。
      4种方法关联:构造方法设置;set方法设置;方法参数传引用;在方法内部new出对象
      . 对象间交互的方式;
      . 对象间相互使用其功能;
      . 一个对象使用另一个对象的服务或操作另一个对象,这时候对象相互关联。
     
      ■ 关联是有方向性的
        A对象通过B对象的引用来访问B对象的方法时,A关联B ,单向关联
        A、B互拿对方引用,双向关联
       
      ■ 关联关系有多重性
        class A{
           private List<C> list = new ArraryList<C>();
        }
        A与C是一对多的单项关联
        一个A对应多个C,一个C对应一个A
        若Class C{
           private A a;
        }
        则称为A与C是一对多的双向关联。
        若Class C{
           private List<A> a; 
        }
        则称为A与C是多对多的双向关联。
       
       ■ 关联的2种方式:聚合和依赖
         序列化一个对象,就是序列化和他有聚合关系的对象
         只关注聚合关系的关联是狭义的关联
        class A{
           private B b;       //聚合关系,has a关系,A有B,B是A的属性,是个实例变量,关联性强
           public A(B b){     //A是外部对象,B是内部对象,A聚合B
              this.b=b;      
           }
           public void action(C c){
              c=new C();      //依赖关系,use a关系,A使用C,C是A的局部变量
           }
        }
    
    
   4) Aggregation(聚合)
      . 定义一个对象是另一个对象的一个组成部分;
      . 是一种比较强的关联;
      . 一个对象是另外一个对象的组成部分(特殊的关联)。
      . 通过“Has A”关系可进行确认。一辆车有轮子、座椅以及门,它们是一部车的组成部分。
        假如你移除其间的任何一部分,车没有了相应的功能,但仍是一部车。
       
   5) Composition(组合 )
      ■  组合的关联关系是最强的
      . 一个对象包含另一个对象(has a的关系);
      . 是最强的关联形式;
      . 外部对象全程负责内部对象的生命周期(特殊的聚合)
      . 通过“contain”关系可进行确认。
      . 假设部件不存在,对象亦不存在。
     
      一种特殊的聚合,外部对象管理内部对象的生命周期
      有外部对象不一定有内部对象
      有内部对象一样要有外部对象
      内部对象的创建往往是由外部对象自己控制的
     
   6) Inheritance(继承)
      泛化和特化
      . 是一种根据既存类定义新类的机制;
      . 通过“Is A”或者“Kind of”关系可进行确认;
      . 允许你组织相关类,这样这些类可共同地被管理以及重用。
     
   7) Cohesion(内聚)和Coupling(耦合)
      . 组件之间依赖关系的度量;
      . 内聚: 一个组件独立完成工作的能力;
      . 耦合: 组件之间依赖关系的度量;
      . 系统的耦合性越小越好,系统的内聚性越高越好。高内聚,低耦合
     
  Polymorphism(多态)
      编译时多态(方法重载)、运行时多态(父类引用指向子类对象)
      . 一种行为在不同的环境下所变现出来不同的行为;
      . 不同对象完成相同语义上的结果;
      . 基于继承或实现;
      . 多态功能的实现依赖于它应用的对象;
      . 举例:足球-扔-需二只手、网球-扔-只需一只手,同样是扔,有不同的实现。当你将不同的球给一个小孩子,
        他知道是用一只手还是二只手。小孩都知道多态。
分享到:
评论

相关推荐

    面向对象设计UML实践课后答案

    面向对象设计(Object-Oriented Design,OOD)是一种软件开发方法,它基于“对象”的概念,将现实世界的问题域转化为计算机程序。UML(Unified Modeling Language)是面向对象设计的一种标准化建模语言,用于可视化...

    UML面向对象设计基础

    ### UML面向对象设计基础 #### 基本概念与符号表示 《UML面向对象设计基础》一书详细介绍了面向对象软件设计的基础知识,包括基本概念、符号表示、术语、准则和原理。面向对象设计是一种软件设计范式,强调通过对象...

    面向对象设计uml实践(第二版)课后题答案

    面向对象设计UML实践是...总之,理解和掌握UML对于软件工程师来说是一项基础且重要的技能,通过《面向对象设计UML实践》第二版的课后题答案,读者可以系统地提升这方面的能力,为日后的软件开发工作打下坚实的基础。

    面向对象分析与设计.pdf

    面向对象设计是在分析的基础上进行的,它关注于如何将需求转化为软件系统的内部结构。设计阶段的输出通常包括更详细的类图、活动图、序列图、状态图和组件图等UML模型。设计过程还会确定系统组件的接口和协作方式。 ...

    UML面向对象设计与分析

    《UML面向对象设计与分析》是清华大学出版社出版的一本专著,由牛丽平编著,主要探讨了面向对象设计的重要工具——统一建模语言(UML)。这本书深入浅出地介绍了UML的各种图表及其在软件开发过程中的应用,为读者...

    c++面向对象程序设计第三版谭浩强教学大纲.pdf

    "C++面向对象程序设计第三版谭浩强教学大纲.pdf" 本资源摘要信息涵盖了C++面向对象程序设计的基本概念、数据存储、程序设计初步、函数、数组、指针、用户自定义数据类型、类和对象的程序设计等方面的知识点。 第一...

    Java面向对象程序设计(第二版)

    封装是面向对象设计的核心概念之一。它指的是将对象的状态(属性)和行为(方法)捆绑在一起,并对外隐藏对象的实现细节。封装可以通过访问修饰符来实现,比如public、protected和private,它们控制类成员的可见性和...

    面向对象程序设计第一次离线作业作业.doc

    面向对象程序设计第一次离线作业 面向对象程序设计(Object-Oriented Programming,OOP)是一种编程范式,它将程序看作是一组对象的集合,对象之间通过消息进行交互。在这个离线作业中,我们将学习到面向对象程序...

    Java面向对象程序设计

    1. **面向对象编程基础**:面向对象编程(OOP)是一种编程范式,它基于“对象”的概念,强调数据和操作数据的方法结合在一起。Java作为一款纯面向对象的语言,其一切皆为对象,包括基本类型都有对应的包装类。 2. *...

    面向对象软件架构设计

    面向对象设计的基本原则 132 第三单元:用UML辅助系统分析与设计 177 UML简介及常见疑难问题辨析 178 借鉴RUP的UML建模与分析 213 第四单元:设计模式与软件设计思想 267 设计模式 268 常用的软件架构风格及适用情况...

    面向对象分析与设计UML2.0(PDF)

    详细介绍了面向对象的分析与设计,全面探讨了面向对象概念、软件开发过程、UML和多层技术。本书使用最常见的技术和方法,通过一个贯穿全书的案例分析,对面向对象的软件开发过程和使用面向对象技术的编程过程进行了...

    戏说面向对象设计原理

    1. **可维护性**:就像活字印刷中的文字可以单独修改一样,面向对象设计中的类和方法也是相对独立的单元,修改一个类或方法通常不会影响到整个系统的运行。这使得在需求发生变化时,开发人员能够快速定位并修改相关...

    c++面向对象程序设计(第2版)

    《C++面向对象程序设计(第2版)》是一本深度探讨C++编程技术的教材,尤其专注于面向对象的设计和实现。此资源包含了全面的课件,旨在帮助学习者掌握C++的核心概念以及面向对象编程的基本原则。面向对象编程(Object...

    面向对象分析与设计 麻志毅的课件

    9. **OO设计**:这部分内容可能涵盖了面向对象设计的整体流程,包括分析结果的转化、类的设计原则、接口设计等。 通过这些课件,学习者可以深入了解面向对象分析与设计的全貌,掌握从需求分析到系统实现的关键步骤...

    C++面向对象程序设计教程——课件PPT

    首先,第1章“面向对象程序设计概述”引入了面向对象的基本理念,包括封装、继承和多态性三大核心概念。面向对象编程允许我们将复杂的问题分解为独立的对象,这些对象可以相互协作完成任务,提高代码的可读性和复用...

    面向对象分析与设计(第3版).pdf

    《面向对象分析与设计(第3版)》是一本全面介绍面向对象方法论的经典著作,由Grady Booch、Robert A. Maksimchuk、Michael W. Engle、Bobbi J. Young、Jim Conallen 和 Kelli A. Houston 共同编写。本书旨在为读者...

Global site tag (gtag.js) - Google Analytics