初识面向对象(三)-面向对象的方法

目录

一.面向对象的方法

1.Coad-Yourdon方法

1. 面向对象思维:

2. 用例驱动开发: 

3. 分析与设计的分离: 

4. 建模工具: 

5. 迭代与增量开发: 

2.Rumbaugh 方法

1. 需求分析

2. 面向对象的分析(Object-Oriented Analysis,OOA)

3. 面向对象的设计(Object-Oriented Design,OOD)

4. 实现

3.Booch方法

1. 面向对象分析(Object-Oriented Analysis,OOA)

2. 面向对象设计(Object-Oriented Design,OOD)

3. 类图(Class Diagram)

4. 迭代开发

5. 可视化建模

 4.Jacobson方法

1. 用例建模(Use Case Modeling)

2. 用例图(Use Case Diagram)

3. 面向对象分析(Object-Oriented Analysis,OOA)

4. 面向对象设计(Object-Oriented Design,OOD)

5. 交互图(Interaction Diagram)

5.RDD(Responsibility-Driven Design)方法

1.类(class)

2.继承(inheritance)

3.责任(responsibility)

4.合作(collaboration)

5.合同(contract)

6.子系统(subsystem)

二.面向对象方法的优缺点 

1.优点

1.模块化

2.封装和信息隐藏

3.继承和重用

4.多态性

5.可维护性和可扩展性

2.缺点

1.学习和理解成本

2.性能开销

3.设计复杂性

4.可能导致过度设计


一.面向对象的方法

1.Coad-Yourdon方法

Coad-Yourdon方法是一种面向对象分析与设计(OOAD)的方法论,由Peter Coad和Edward Yourdon共同开发。他们在《Object-Oriented Analysis》一书中详细介绍了他们的观点和方法。

Coad-Yourdon方法强调以下几个观点:

1. 面向对象思维:

Coad-Yourdon方法鼓励开发人员采用面向对象的思维方式进行系统分析和设计。他们认为,将现实世界中的问题领域映射到对象模型是一种自然而然的方式,能够更好地理解和解决问题。

2. 用例驱动开发: 

Coad-Yourdon方法强调用例(use case)的重要性,将用例作为系统开发的起点和核心。用例是描述系统功能和用户行为的一种技术,通过分析和描述用例,可以识别出系统的参与者、功能需求和交互流程。

3. 分析与设计的分离: 

Coad-Yourdon方法将分析和设计过程分离开来,以便更好地关注不同的问题领域。在分析阶段,重点是识别和描述问题领域中的对象、行为和关系,而在设计阶段,重点是将分析得到的模型转化为可执行的代码。

4. 建模工具: 

Coad-Yourdon方法提供了一套建模工具,用于支持面向对象的分析和设计过程。其中最重要的工具是类图(class diagram)和对象交互图(object interaction diagram),用于描述对象之间的关系和交互。

5. 迭代与增量开发: 

Coad-Yourdon方法鼓励采用迭代与增量的方式进行系统开发,将复杂的问题分解为更小的、可管理的部分,并逐步完善系统。这种方法可以提高开发的灵活性和响应能力,同时减少风险和增加可交付的价值。

总的来说,Coad-Yourdon方法强调面向对象的思维方式、用例驱动开发、分析与设计的分离、建模工具的使用以及迭代与增量开发。这些观点和方法为面向对象分析与设计提供了一种结构化和系统化的方式,被广泛应用于软件开发领域。


2.Rumbaugh 方法

Rumbaugh 方法是一种面向对象软件开发的方法论,最初由Grady Booch、James Rumbaugh和Ivar Jacobson共同开发。它是一种结构化的方法,用于分析、设计和实现软件系统。

Rumbaugh 方法是基于面向对象的分析与设计(Object-Oriented Analysis and Design,OOAD)的原则和概念。它强调将软件系统看作是一组相互作用的对象,这些对象具有属性和方法,并且彼此之间通过消息传递进行通信。

Rumbaugh 方法主要包括以下几个方面:

1. 需求分析

该阶段旨在收集和理解系统的需求,并将其转化为面向对象的表示。这包括识别系统中的各种对象、它们之间的关系以及系统的功能和行为。

2. 面向对象的分析(Object-Oriented Analysis,OOA)

在这个阶段,开发人员使用面向对象的概念,如类、对象、继承和关联,对系统进行详细分析。这包括定义系统中的类和它们的属性、方法以及它们之间的关系。

3. 面向对象的设计(Object-Oriented Design,OOD)

在这个阶段,开发人员根据分析结果创建系统的设计模型。设计模型描述了系统中的类、对象、接口和它们之间的关系。该阶段还包括定义类的行为和交互方式。

4. 实现

在这个阶段,根据设计模型编写代码并进行系统的实现。开发人员使用面向对象的编程语言,如Java或C++,来实现系统的功能。

Rumbaugh 方法强调模块化、可重用性和可维护性,它提供了一种结构化的方法来开发复杂的软件系统。它在面向对象软件开发领域有着广泛的应用,并且与其他面向对象的方法和工具,如Booch 方法和Unified Modeling Language(UML)相结合使用。


3.Booch方法

Booch 方法是一种面向对象软件开发方法论,由Grady Booch于20世纪80年代末和90年代初提出和发展。它是面向对象分析与设计(Object-Oriented Analysis and Design,OOAD)的一部分,旨在帮助开发人员理解、设计和实现复杂的软件系统。

Booch 方法强调系统的结构化分析和设计,以及模块化、可扩展性和可维护性

以下是 Booch 方法的一些关键特点和概念:

1. 面向对象分析(Object-Oriented Analysis,OOA)

在这个阶段,开发人员使用面向对象的概念来理解系统的需求和问题领域。通过识别系统中的对象、它们的属性和行为,以及它们之间的关系,开发人员可以建立一个概念模型。

2. 面向对象设计(Object-Oriented Design,OOD)

在这个阶段,开发人员使用面向对象的概念和原则来设计系统的结构和组织。这包括定义类、对象、接口以及它们之间的关系,以及确定系统的行为和交互方式。

3. 类图(Class Diagram)

Booch 方法使用类图作为表示系统结构的主要工具。类图描述了系统中的类、对象和它们之间的关系。它显示了类的属性、方法以及类之间的继承、关联和依赖关系。

4. 迭代开发

Booch 方法支持迭代和增量式的开发过程。开发人员可以通过多次迭代来逐步完善系统的分析和设计,并逐步实现和测试系统的功能。

5. 可视化建模

Booch 方法强调使用图形化的建模工具来表示系统的结构和设计。它提倡使用图形符号和图表来可视化类、对象、关系和行为,以便更好地理解和交流系统的设计。

Booch 方法在面向对象软件开发领域有着广泛的应用,并且与其他面向对象的方法和工具,如Rumbaugh 方法和Unified Modeling Language(UML)相结合使用。它提供了一种结构化的方法来开发复杂的软件系统,并促进了代码的可重用性、可维护性和可扩展性。

 4.Jacobson方法

Jacobson 方法是一种面向对象软件开发方法论,由Ivar Jacobson于20世纪80年代末和90年代初提出和发展。它是面向对象分析与设计(Object-Oriented Analysis and Design,OOAD)的一部分,旨在帮助开发人员进行系统分析、设计和实现。

Jacobson 方法强调用案例(Use Case)来描述系统的功能需求,并通过建立一个用例模型来表示系统的行为。

以下是 Jacobson 方法的一些关键特点和概念:

1. 用例建模(Use Case Modeling)

Jacobson 方法将用例作为系统分析和设计的核心概念。用例描述了系统的功能需求,以用户的角度来说明系统是如何与外部参与者进行交互的。通过识别和建模用例,开发人员可以更好地理解系统的行为。

2. 用例图(Use Case Diagram)

用例图是 Jacobson 方法中用于表示系统功能和参与者之间关系的图形表示工具。它显示了系统的用例和参与者,并描述了它们之间的交互。用例图可以帮助开发人员可视化系统的功能需求,并促进与项目相关方的沟通和理解。

3. 面向对象分析(Object-Oriented Analysis,OOA)

在这个阶段,开发人员使用面向对象的概念来进行系统分析。除了用例之外,还要识别系统中的对象、它们的属性和行为,以及它们之间的关系。通过建立对象模型,开发人员可以更深入地理解系统的结构和行为。

4. 面向对象设计(Object-Oriented Design,OOD)

在这个阶段,开发人员使用面向对象的概念和原则来设计系统的结构和组织。这包括定义类、对象、接口以及它们之间的关系,以及确定系统的行为和交互方式。

5. 交互图(Interaction Diagram)

Jacobson 方法使用交互图来描述系统中对象之间的交互和消息流。交互图包括序列图和协作图,用于表示对象之间的消息传递和协作过程。

Jacobson 方法注重用例的驱动开发,强调从用户需求出发,通过用例建模和分析来推动系统的开发过程。它提供了一种可视化的方法来描述系统的行为和功能需求,并与其他面向对象的方法和工具,如Rumbaugh 方法和Unified Modeling Language(UML)相结合使用。Jacobson 方法在敏捷开发和迭代开发中得到广泛应用,并强调可重用性、可扩展性和可维护性。


5.RDD(Responsibility-Driven Design)方法

RDD方法是Wirfs-Brock在1990年提出的。这是一个按照类、责任以及合作关系对应用进行建模的方法。首先定义系统的类与对象,然后确定系统的责任并划分给类,最后确定对象类之间的合作来完成类的责任。这些设计将进一步按照类层次、子系统和协议来完善。

RDD方法主要包含以下概念:

1.类(class)

类是面向对象编程中的基本概念之一,它是一种用于创建对象的蓝图或模板。类定义了对象的属性和方法。

2.继承(inheritance)

继承是面向对象编程中的概念,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。子类可以重用父类的代码,并添加自己的特定实现。

3.责任(responsibility)

责任是软件设计中的一个关键概念,它指的是对象或模块应该具有的职责和功能。责任驱动设计强调将职责分配给不同的对象,以实现高内聚和低耦合。

4.合作(collaboration)

在软件系统中,不同的对象或模块需要相互合作以实现系统的功能。合作包括对象之间的消息传递、方法调用和数据交换等。

5.合同(contract)

合同是指代码之间的契约或约定,描述了一个方法或函数应该做什么以及它的参数和返回值之间的关系。合同定义了代码的预期行为,并确保代码在不同模块之间的正确交互。

6.子系统(subsystem)

子系统是指一个大型软件系统中相对独立的部分或模块。子系统通常具有明确定义的功能和接口,并且可以通过协作来实现系统的整体目标。

 RDD方法按照类层次图、合作图、类规范、子系统规范、合同规范等设计规范来完成实现。


二.面向对象方法的优缺点 

1.优点

1.模块化

面向对象方法通过将系统划分为多个对象,实现了模块化和组件化的设计。每个对象都有自己的属性和方法,可以独立开发、测试和维护,提高了代码的可读性和可维护性。

2.封装和信息隐藏

面向对象方法通过封装将数据和行为组合在一起,并隐藏了对象的内部实现细节。这样可以防止外部直接访问和修改对象的状态,提高了代码的安全性和可靠性。

3.继承和重用

继承是面向对象方法的重要特性之一,它允许子类继承父类的属性和方法。通过继承,可以实现代码的重用,避免重复编写相似的代码,提高了开发效率。

4.多态性

多态性是指同一个方法可以根据调用对象的不同而表现出不同的行为。多态性提高了代码的灵活性和可扩展性,使得可以以统一的方式处理不同类型的对象。

5.可维护性和可扩展性

面向对象方法通过将系统划分为多个对象,每个对象负责自己的职责,使得代码变得结构清晰、易于理解和修改。这样可以提高代码的可维护性和可扩展性,降低了系统的耦合度。


2.缺点

1.学习和理解成本

面向对象方法需要开发人员具备面向对象的思维方式,并理解和应用面向对象的概念和原则。对于没有经验的开发人员来说,学习和理解面向对象方法可能需要一定的时间和精力。

2.性能开销

面向对象方法通常比较灵活和抽象,这可能导致一定的性能开销。对象之间的消息传递和动态绑定需要额外的计算和内存开销,这在一些性能敏感的应用中可能会成为一个问题。

3.设计复杂性

面向对象方法需要将系统分解为多个对象,并定义它们之间的关系和交互。这需要进行合适的分析和设计,避免对象之间的过度耦合或不足的关联。如果设计不当,可能会导致系统的复杂性增加。

4.可能导致过度设计

面向对象方法提供了丰富的特性和灵活性,但有时候开发人员可能会过度设计和过度使用这些特性,导致代码结构复杂、难以理解和维护。

 


  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拂尘清影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值