功能驱动的Java程序设计方法

基本概念

功能驱动的设计方法

面向对象程序设计过程

问题分解与类初步设计

类详细设计与实现

示例

一、基本概念

  • 对象与对象类型:在设计阶段,对象常用来指现实世界问题域中的实体,对象类型有时也称为对象,用来描述信息世界的概念

  • 类与对象:在面向对象程序中,类用来描述具有相似行为的一组对象,类一般由行为和状态来构成

一个类的单个代表体称为实例或对象

  • 面向对象程序的架构:

类可以根据承担的职责分为不同类型,各种类型的类就构成了程序的基本架构

  • 模型-外部接口-数据管理的程序架构模式

模型(Model):指负责实现系统业务功能的类和对象。

外部接口(External interface):指负责系统外部接口(例如实现用户交互)的类和对象。

数据管理(Data management):指负责保存和维护系统数据的对象。这些对象负责对存储在文件或数据库中的数据进行存取访问

二、功能驱动的设计方法

1、功能驱动的系统架构设计方法

  • 系统设计以系统行为或功能为出发点,使用分治原理,将系统功能(或称为问题)迭代地进行分解,直到得到一组描述清晰且相对简单易解的子问题。

  • 将子问题中的每个行为都分配到确定的对象上,即每个行为都有特定的对象负责完成。对象所承担的行为就是对象的功能。

  • 程序就被分解为一系列彼此交互的类和对象,它们的全体就构成了系统的架构。

2、功能驱动的类设计方法

  • 管理程序复杂性最有效的方法是抽象,而最有效的抽象方法是封装,设计阶段可以最有效地提升程序的封装性

  • 采用Client/Server对象交互模型实现封装性,进行类的设计

  • Client/Server模型

模型描述了两个实体间的交互:Client请求Server进行某些操作,而Server在接收到请求后提供相应的服务

Client与Server的交互内容由Server提供的协议来描述,Client和Server都必须遵守这个协议

Client和Server都是类或对象,任何对象在任何时候都可以作为Client或Server

  • Client/Server模型的优点

C/S模型只关注Server能为Client提供什么功能(What),而不关注Server如何实现这些功能(How),Server的实现细节都被封装起来。

使程序具有很好的易测试性、可维护性、可重用性以及可扩展性

  • 类职责的划分

程序中的各个对象分担特定任务,共同完成系统的功能

类的职责可以分为信息共享以及完成特定任务,具体可以分为两类:查询(query)和命令(command)

查询类操作,使对象提供特定的数据或状态信息。例如,查询一个学生对象的姓名

命令类操作,使对象进行某种操作。操作可能导致对象的数据发生变化,改变对象的状态

  • 设计中提升封装性的原则:低耦合高内聚,以及信息隐藏

低耦合高内聚

内聚是指单个类各项职责的整体性,高内聚指类的各项职责或操作以某种方式高度相关

耦合描述的是类之间的关系。耦合增加了程序开发和维护的难度,并限制了重用。一般要尽量减少耦合。

  • 设计中提升封装性的原则:低耦合高内聚,以及信息隐藏

信息隐藏

将接口的实现细节对外部屏蔽称为信息隐藏。将接口与实现分开,并将接口公开而将实现隐藏是实现封装的有效机制。

信息隐藏对于有多人参与开发的系统具有重要意义,有时被称为面向接口的开发,是目前很多大规模面向对象系统设计开发中所采用的方法。

3、面向对象程序设计和开发的阶段

  • 程序设计和开发的阶段

需求分析阶段:明确问题,给出程序功能的详细描述

设计阶段:确定系统中的类,描述各种类、方法以及数据的细节信息

实现阶段:用Java语言进行实际编程

测试阶段:对程序的功能进行测试,以确保其正确性

  • 系统设计的任务主要在上述需求分析阶段和设计阶段完成。

4、面向对象程序设计和开发的过程

  • 问题描述:对问题描述进行分解和细化

  • 问题分解与详细说明:以系统的功能为主线进行分解,给出各个子问题或子功能的详细描述。

  • 类的初步设计:针对每个子问题的描述初步确定类,包括类在系统中的角色、需要完成的操作以及需要保存的数据等

  • 类的详细设计:给出各个类的详细规范说明

  • 类的编码实现

  • 系统的测试、调试与修改完善

三、问题分解描述与类的初步设计

  • 从系统行为或功能的角度细化系统的需求,撰写系统的需求规格说明

  • 类的初步设计:

采用迭代求精的方法,即按照功能驱动的思路初步确定一组类,赋予每个类具体的行为或职责,然后初步验证当前设计是否能够满足系统需求,并在验证过程中不断调整类的设计

四、类详细设计与实现

1、类的初步设计—名词抽取法

阅读系统的详细需求描述,画出其中的名词和动词

  • 名词——可能作为类或类中属性

  • 动词——可能是对象的行为

2、类的详细设计

根据类初步设计的结果,确定每个类中应包含的数据以及提供的操作

  • 类的对象在程序中承担什么职责

  • 类的对象需要完成的每项操作是什么

  • 类的对象在完成职责时需要什么数据或信息

  • 类的对象需要对外提供哪些接口,需要隐藏什么信息

3、类的规格说明

用文字给出每个类数据和操作的规格说明,确定类需要对外公开的接口,以及需要隐藏的部分,确定类中数据的类型以及操作的实现算法。规格说明包括:

  • 类名(Class name)

  • 角色或职责(Role )

  • 属性(Attributes):给出属性的名称和含义

  • 行为(Behaviors):用方法来表示。表示出接口和需要隐藏的方法或属性,描述方法的实现算法。

4、类设计的正确性验证

基于类的规格说明,构造对象相互驱动完成系统功能的完整流程,验证设计的正确性。

可以采用系统业务流程图或UML时序图等方法

5、类的实现

定义类中数据的表示结构并编写方法的代码

采用单元测试到集成测试的方法完成整个系统的开发

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值