了解面向对象设计和方法

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
EMR Serverless StarRocks,5000CU*H 48000GB*H
可观测监控 Prometheus 版,每月50GB免费额度
简介: 【6月更文挑战第26天】本文介绍面向对象编程(OOP)强调通过对象来模拟现实世界,以数据和行为的结合体形式存在。核心概念是封装、继承和多态,关系包括依赖、实现、关联、聚合和组合。组合是强于聚合的关联,当部分与整体有相同生命周期时适用。OOP允许创建复杂系统模型,如汽车的组件,提供不同层次的抽象。

1 简介

设计不只是外表和感觉,它更是产品如何运作。

在计算机编程中,面向对象方法编程将在相当长的一段时间内占据重要位置。
---乔布斯  

我们知道现实世界的对象是什么:我们可以感知、感觉和操纵的有形事物。

人类最早接触的对象通常是玩具。木块、塑料形状和超大拼图是常见的第一对象。

并且很快学会某些物体做某些事情:铃铛响起,按下按钮,拉动杠杆。

软件开发中对象的定义并没有太大的不同。软件对象可能不是你可以拾取、感知或感觉到的有形的东西,但它们是可以做某些事情并对其完成某些事情的模型。从形式上讲,对象是数据和关联行为的集合。

现实世界或者系统是由可区分的"对象"构成的。现实:对象可以被看成一个个具有某个功能的个体。 软件系统中,对象可以被看成是一个可执行某程序的个体。

treeoflife6.png

2 面向对象方法

考虑到对象是什么,面向对象意味着什么?在字典中,定向意味着指向。

我们可能在阅读时遇到过面向对象分析、面向对象设计、面向对象分析和设计以及面向对象编程等术语。这些都是一般面向对象保护伞下的相关概念。

事实上,分析、设计和编程都是软件开发的阶段。称它们为面向对象只是指定了正在追求的软件开发类型。

面向对象编程意味着编写针对建模对象的代码。这是用于描述复杂系统动作的众多技术之一。它通过描述交互对象的数据和行为来定义。

3 面向对象分析 OOA:

面向对象分析 OOA object-Oriented Analysis

这是查看问题、系统或任务(有人想要变成一个工作软件应用程序)并识别对象和这些对象之间的交互的过程。分析阶段是关于需要做什么的。

OOA模型由5个层次(主题层、对象类层、结构层、属性层和服务层)和5个活动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成。

OOA包括九大基本原则:抽象,封装,继承,分类,聚合,关联,消息通信,粒度控制,行为分析。

基本五步骤包括依次确定: 对象和类,结构,主题,属性,方法。

OOA 面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;

设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。

4 面向对象设计 OOD:

面向对象设计方法(Object-Oriented Design,OOD)是OOA方法的延续,其基本思想包括抽象、封装和可扩展性,其中可扩展性主要通过继承和多态来实现。

这是将此类需求转换为实现规范的过程。设计器必须命名对象,定义行为,并正式指定哪些对象可以激活其他对象上的特定行为。设计阶段就是将应该做的事情转化为应该如何完成。

设计阶段的输出是实现规范。如果我们要在一步中完成设计阶段,我们将把面向对象分析期间定义的需求转换为一组类和接口,这些类和接口可以在(理想情况下)任何面向对象的编程语言中实现。

面向对象分析类可以分为边界类、控制类和实体类。

边界类是一种用于对系统外部环境与其内部运作之间交互进行建模的类。

控制类用于对一个或多个用例所特有的控制行为进行建模,描述用例业务逻辑的实现。

实体类是用于对必须存储的信息和相关行为建模的类,用于保存和更新一些现象的有关信息。

比如面向对象技术设计在线教育平台系统,“学员类”和“课程类”主要用于存储数据,所以设计为实体类;而“窗口”位于系统与外界的交接处,应设计为边界类。

5 面向对象编程 (OOP)

面向对象的程序设计 OOP Object-Oriented Programming是将设计转换为执行产品所有者最初要求的工作程序的过程。OOP包括分析(OOA)、设计(OOD)和编程。OOA识别对象及它们的交互,OOD将需求转化为实现规范,而OOP将设计变为可执行代码。

OOP达到了软件工程的3个主要目标:重用性、灵活性和扩展性。

OOP=对象+类+继承+多态+消息,其中核心概念是类和对象。

OOP 基本特征:封装,继承,多态。

数据描述对象的状态:从数据开始。数据代表某个对象的个体特征;其当前状态。类可以定义特定的特征集,这些特征集是属于该类的所有对象的一部分。

对于给定特征,任何特定对象都可以具有不同的数据值。

例如,我们桌子上的三个橙子(如果我们没有吃过的话)每个橙子的重量可能不同。

橙色类可以具有表示该基准面的权重属性。橙色类的所有实例都有一个权重属性,但每个橙色都有此属性的不同值。但是,属性不必是唯一的;任何两个橙子的重量可能相同。

6 面向对象关系

面向对象关系主要包括: 封装、继承、多态,实现、依赖、关联、聚合、组合。

这里简单介绍OOA的几个关系:

依赖

指两个相对独立的对象,当一个对象负责构造另一个对象的实例,
或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系

实现

指的是一个类实现一个接口的功能,在Java中一个类可以实现多个接口,
使用implements作为关键字。

关联

指一个类的实例A使用另外一个类的实例B,这两个对象之间为关联关系,
关联关系分为单项关联和双向关联

聚合

 聚合关系是关联关系的一种,耦合度强于关联,他们的代码表现是相同的,
 仅仅是在语义上有所区别:关联关系的对象间是相互独立的,
 而聚合关系的对象之间存在着包容关系,他们之间是“整体-个体”的相互关系。

组合

相比于聚合,组合是一种耦合度更强的关联关系。
存在组合关系的类表示“整体-部分”的关联关系,
“整体”负责“部分”的生命周期,他们之间是共生共死的;
并且“部分”单独存在时没有任何意义

例子:

当部分属于多个整体,则属于聚合。

当部分和整体有相同生命周期,属于组合。

7 小结

面向对象(OO)通常用于将多个对象收集在一起以创建新对象的行为。

当一个对象是另一个对象的一部分并且有相同生命周期时,组合通常是一个不错的选择。比如在谈论汽车时,我们就已经看到了构图。

化石燃料汽车由发动机、变速箱、起动机、前灯和挡风玻璃等众多部件组成。

对应的,发动机由活塞、曲轴和气门组成。在此示例中,组合是提供抽象级别的好方法。
汽车对象可以提供驾驶员所需的接口,同时还提供对其组件的访问,从而提供适合机械师的更深层次的抽象。如果机械师需要更多信息来诊断问题或调整发动机,这些组件可以进一步分解为细节。

有趣的是,SOA结构方法,也受启发于面向对象方法,在后续我们继续探讨。

目录
相关文章
|
4月前
|
Java 关系型数据库
JAVA面向对象设计原则
JAVA面向对象设计原则
58 1
|
4月前
|
Serverless PHP
当谈论面向对象编程时,这四个概念是非常重要的。以下是对接口、继承、封装和多态的简要说明
本文介绍了面向对象编程的四个核心概念:接口、继承、封装和多态。接口定义对象的行为规范,类通过实现接口确保符合所需行为。继承允许在已有类基础上创建新类,实现代码重用。封装是将数据和操作捆绑并隐藏内部细节,提高安全性和可维护性。多态使对象在运行时能表现出不同行为,增加代码灵活性和可扩展性。文中还提供了代码示例来说明这些概念。
28 0
什么是面向对象设计领域的 Covariance 概念
什么是面向对象设计领域的 Covariance 概念
|
Java
面向对象思想(3)之方法1
面向对象思想(3)之方法1
60 0
|
编译器 C++
C++面向对象设计一个类需要注意的事情
C++代码千千万万,好的代码风格会让我们代码编写变得简洁高效,还会避免很多bug的出现,本期将讨论一个好的代码风格应该是怎样的。
|
存储 设计模式 安全
【Java设计模式 面向对象设计思想】七 面向对象分析、面向对象设计和面向对象编程
【Java设计模式 面向对象设计思想】七 面向对象分析、面向对象设计和面向对象编程
177 0
|
设计模式 消息中间件 Java
【Java设计模式 面向对象设计思想】三 再谈抽象类和接口
【Java设计模式 面向对象设计思想】三 再谈抽象类和接口
154 0
|
存储 设计模式 前端开发
【Java设计模式 面向对象设计思想】四 基于接口而非实现编程
【Java设计模式 面向对象设计思想】四 基于接口而非实现编程
91 0
|
设计模式 存储 安全
【Java设计模式 面向对象设计思想】一 再谈面向对象和封装、抽象、继承、多态四大特性
【Java设计模式 面向对象设计思想】一 再谈面向对象和封装、抽象、继承、多态四大特性
73 0
|
设计模式 SQL 开发框架
【Java设计模式 面向对象设计思想】八 面向对象设计思想小结
【Java设计模式 面向对象设计思想】八 面向对象设计思想小结
70 0