《疯狂Java讲义》 2-理解面向对象

总结

1、结构化程序设计

  按功能来分析系统需求:自顶向下,逐步求精,模块化等

  结构化分析(Structured Analysis)->结构化设计(SD)->结构化编程(SP)

  面向功能,面向数据流,最小单元是函数

  三种基本结构:顺序结构(顺序执行所有操作,直到出口),选择结构(按条件选择分支执行),循环型结构

  Java保留了goto,但拒绝使用

2、面向对象程序设计

  把握事物的本质特点,抽象成类(共同属性、共同方法的一类事物),作为系统的基本构成单元

  OOA->OOD->OOP

  成员变量(状态函数)+方法(行为)=类定义  粒度比面向过程大,函数相当于方法

  基本特征:

    封装(Encapsulation),将对象实现细节隐藏起来,用共用方法来暴露对象的功能

    继承(Inheritance),实现软件复用

    多态(Polymorphism),同一方法实现多种行为特征,如不同子类间

  类是对象的抽象,对象是类的实例(instance)。消息是实例之间通信的机制。

  面向对象与基于对象不同(JavaScript),注意继承和多态

  Java中一切都是对象,有一个唯一标识来引用它。

3、UML  同一建模语言

  OOA和OOD需要统一的符号来记录,UML2.0

  

3.1 用例图

  用例代表系统的功能模块,不说明如何实现,仅仅是对系统功能的描述。

  椭圆代表用例,小人代表角色,以简单的线段表示之间关系。常用来表达系统,一个简单的BBS系统用例图:

  

3.2 类图

  表示系统包含哪些实体,实体之间如何关联。

  类用包含三个部分的矩形来表示:名称,属性,方法

  

  类之间的三种基本关系:关联(聚合,组合),泛化(继承),依赖

    • 实线代表双向关联,两个类间可以互相访问  
    • 带箭头的实线表示单向关联
    • 关联和属性很像,类中某一属性引用到另一实体即成了关联
    • 聚合:某实体可以是多种实体的组成部分,用带空心棱形框的实线表示
    • 组合:某实体只能是该实体的组成部分,用带实心棱形框的实线表示
    • 泛化表示子类是一种特殊的父类,用带空心三角形的实线表示
    • 一个类的改动会导致另一个类的改动,即依赖,用带箭头的虚线表示,箭头指向被依赖的实体

 

3.3 组件图

  大型应用程序由多个可部署的组件组成。JAR,WAR,DDL(C)

  显示组件的依赖关系。包含组件、接口和port等图元。圆代表接口,Y依赖该接口。

3.4 部署图

  用于描述软件系统如何部署到硬件环境中,以及如何通信。

  在组件图上加了节点(处理器&设备)的概念,用三维立方体来表示。

 

3.5 顺序图

  显示用例的详细流程

  垂直纬度:以时间顺序显示消息/调用的序列;水平纬度:显示消息被发送到的对象实例。

  

  

3.6 演化图:活动图 状态机图

  

  

  活动图用圆角矩阵代表活动,带箭头的实线代表事件。支持并发。只有一个开始,可以多个结束途径。

  

  

  

问题

1、UML还不熟悉,别当成负担,要当作工具,怎么合理利用是个问题。

 

posted @ 2018-10-01 10:58  iamwlx  阅读(137)  评论(0编辑  收藏  举报