面向对象分析和设计

面向对象分析与设计

面向对象的基本概念

软件工程学家Coad和Yourdon给出了一个定义:面向对象(Object-Oriented)=对象(Object)+继承(Inheritance)+通信(Communication)。如果一个软件系统是使用这样四个概念设计和实现的,则可以认为这个软件系统是面向对象的。一个面向对象的程序每一成分应是对象,计算是通过新对象的建立和对象之间的通信来完成。

  • 对象对象是系统中描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和对这组属性进行操作的一组服务组成

  • 类是对象的抽象,是一组具有相同数据结构和相同操作的对象的集合。它描述了属于该对象类型的所有对象的性质。对象是该类的一个实例。

    说明:对象和类都是由属性、操作和方法构成的

    属性是类中对象所具有的数据值,它依附于类和对象,并且以某种方式描述类或对象。对象所能执行的操作称为方法,也就是类中所定义的服务。方法描述了对象执行操作的算法、响应消息的操作

  • 消息:消息是对象发出的服务请求,对象间只能通过发送消息进行联系,一个对象向另一个对象发出消息请求某项服务,接收消息的对象响应该消息,激发所要求的服务操作,并将操作结果返回给请求服务的对象

  • 封装性:封装性是把对象的属性和服务结合成一个独立的系统单位。封装是面向对象的一个重要概念。封装是一种信息隐蔽技术,用户只能见到对象封装界面上的信息,对象内部对用户是隐蔽的。用户不必知道行为实现的细节,只需用消息来访问该对象。封装增强了软件的可维护性,这也是软件技术追求的目标。

  • 继承性:继承用于描述类之间的共同性质,它减少了相似类的重复说明。继承是指子类可以自动拥有父类的全部属性和服务

    说明:继承具有传递性,如果类C继承类B,类B继承类A,则类C继承类A。因此,一个类实际继承了它上层的全部基类的所有描述

  • 多态性:多态性是指对象根据所接受的消息而做出动作,同样的消息为不同的对象接受时可导致完全不同的行动,采用相同的语言结构可以代表 不同类型的实体或者对不同类型的实体进行操作。

  • 重载:重载有两种方式:

    • 函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;
    • 运算符重载是指同一个运算符可以施加于不同类型的操作数上面。

    当参数特征不同或被操作数的类型不同时,实现函数的算法和运算符的语义是不同的。运用重载技术进一步提高了面向对象系统的灵活性和可读性。

面向对象方法

Coad & Yourdon方法,即著名的OOA / OOD,它是最早的面向对象的分析和设计方法之一。面向对象方法是一种将数据和处理相结合的方法,其开发过程分为面向对象分析(Object Oriented Analysis,OOA)面向对象设计(Object Oriented Design , OOD)两个步骤

面向对象分析

面向对象软件开发方法采用面向对象分析技术对问题进行分析建模,它将问题表述为对象 + 关联的形式,其中,对象描述问题空间中的事物,关联描述问题空间中事物和事物之间的关系

面向对象分析工作主要包括对问题空间中对象的确定和对对象之间关联的确定。对对象的确定包括对对象属性和行为的确定;对关联的确定包括对对象结构关系、实例关联关系和消息关联关系的确定,最终建立起问题域的正确模型

面向对象分析方法的核心思想是利用面向对象的概念和方法为软件需求建造模型,以使用户需求逐步精确化、一致化和完全化。面向对象分析方法的大致步骤为:识别对象、属性及外部服务,识别类及其结构,定义对象之间的消息传递等

面向对象的设计

面向对象设计概述

面向对象软件开发方法采用面向对象设计技术进行问题解决方案的设计工作,它将问题的解决方案表述为类+关联的形式,其中,类包括问题空间类、用户界面类、任务管理类和数据管理类,是从设计的角度出发对问题解决方案中对象的抽象和描述;关联则用于描述类和类之间的关系。因此,面向对象设计工作主要包括问题空间类、用户界面类、任务管理类和数据管理类的设计

  1. 首先,根据在分析阶段建立起来的问题的面向对象分析模型的基础上,设计建立问题解空间中的问题空间类;
  2. 然后通过分析用户的具体使用要求,在问题空间类的基础上设计建立用户界面类、任务管理类和数据管理类
  3. 最后,对类的设计进行详细说明,按照有关规范编写设计说明书和进行复审,完成对问题的面向对象设计建模
面向对象设计准则

面向对象设计准则有模块化、抽象、信息隐蔽、低耦合、高内聚和重用性

面向对象设计过程

面向对象的设计可以划分为系统设计对象设计两个阶段

系统设计关注于确定实现系统的策略和目标系统的高层结构。开发人员将问题分解为若干个子系统,子系统和子系统之间通过接口进行联系

一般来说,常用的系统设计的步骤:

  • 将系统分解为子系统
  • 设计问题域子系统
  • 设计人机交互子系统
  • 设计任务管理子系统
  • 设计数据管理子系统

对象设计是指对面向对象的需求分析阶段得到的对象模型进行扩充、细化和完善。

对象设计的内容包括:

  • 对象中对属性和操作的详细描述
  • 对象之间发送消息的协议
  • 类之间的各种关系的定义
  • 对象之间的动态交互行为等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/692311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式: 策略模式

文章目录 一、什么是策略模式二、策略模式结构三、使用场景案例分析1、使用场景2、案例分析(1)消除条件分支 一、什么是策略模式 策略模式是一种行为型设计模式,它允许定义一组算法,并将每个算法封装在独立的类中,使它…

如何设计出用于喜欢的界面

要设计出用户喜欢的界面,你可以考虑以下几个方面: 用户研究:首先要了解用户的需求和偏好。你可以通过用户调研、用户访谈和数据分析来获取这些信息。了解用户的行为模式、喜好和痛点,有助于设计出更吸引人的界面。 直观的布局&am…

LeetCode 2656.K个元素的最大和

给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。你需要执行以下操作 恰好 k 次,最大化你的得分: 从 nums 中选择一个元素 m 。 将选中的元素 m 从数组中删除。 将新元素 m 1 添加到数组中。 你的得分增加 m 。 请你返回执行以上操作恰好 k 次后…

easyx 枪声模拟器

作品介绍:枪声模拟器 简介: “枪声模拟器”是一个基于Windows平台的简单程序,它使用C++编写,主要目的是通过模拟枪声来增强用户的体验。程序使用了图形库来展示一个蓝色的背景屏幕,并提示用户等待片刻后按空格键模拟开枪。当用户按下空格键时,程序会播放预先设定的枪声音…

代码随想录算法训练营第十八天|235.二叉搜索树的最近公共祖先,701.二叉搜索树中的插入操作,450.删除二叉搜索树节点

235.二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树节点 235.二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近…

[Swift]定义一个全局的可管理的计时器

定义一个全局计时器,延迟执行操作。可以对计时器进行全局控制,能手动控制暂停/重启/停止,并在计时结束后释放掉计时器。 import Foundationclass TimerManager {static let shared TimerManager()private var timer: DispatchSourceTimer?…

基于Java+Springboot+vue体育用品销售商城平台设计和实现

基于JavaSpringbootvue体育用品销售商城平台设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写> 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领…

在 Vue 中将 DOM 导出为图片

你好,我是小白Coding日志,一个热爱技术的程序员。在这里,我分享自己在编程和技术世界中的学习心得和体会。希望我的文章能够给你带来一些灵感和帮助。欢迎来到我的博客,一起在技术的世界里探索前行吧! 在日常的工作中&…

【 Maven 】花式玩法之多模块项目

目录 一、认识Maven多模块项目 二、maven如何定义项目的发布策略 2.1 版本管理 2.2 构建配置 2.3 部署和发布 2.4 依赖管理 2.5 发布流程 三、使用Jenkins持续集成Maven项目 四、总结 如果你有一个多模块项目,并且想将这些模块发布到不同的仓库或目标位置&…

Javai递归实现遍历父子级菜单

目录 准备工作 递归实现 未带有显示顺序的递归遍历 准备工作 create table dormitory_management.fuzi (menu_id bigint auto_increment comment 菜单IDprimary key,menu_name varchar(50) not null comment 菜单名称,parent_id bigint default 0 null c…

在UE5中使用OverlayMaterial制作多材质效果

UE5.1中新增了OverlayMaterial,可以让物体套用2个材质球效果,如A材质球为正常材质内容,B材质球为菲涅尔,或是B材质球是法线外拓描边等,该功能类似Unity的多pass效果,方便了日常使用。 下面就讲将怎么用Ove…

开源软件的利弊

目录 开源软件 优势 免费 透明 可更改 可协作 影响力 坏处 安全隐患 良莠不齐 学习成本 持续性问题 未知风险 开源软件 开源软件是一种基于开放协作和共享的软件开发模式,其利弊对于软件产业和社会发展具有重要意义 优势 免费 谁能拒绝不要钱的东西…

如何接口调优?

接口调优是一个涉及多个方面的过程,旨在提高接口的性能、稳定性和可伸缩性。下面是一些常见的接口调优建议: 性能分析: 使用性能分析工具(如Profiler、JMeter、LoadRunner等)对接口进行压力测试和性能分析,…

多线程相关(1)

线程调度 线程状态:状态切换阻塞与唤醒阻塞唤醒 wait 与 sleep创建线程方式 线程是cpu任务调度的最小执行单位,每个线程拥有自己独立的程序计数器、虚拟机栈、本地方法栈。 线程状态: 线程状态包括:创建、就绪、运行、阻塞、死亡…

2024.2.20

使用多进程完成两个文件的拷贝&#xff0c;父进程拷贝前一半&#xff0c;子进程拷贝后一半&#xff0c;父进程回收子进程的资源 #include<myhead.h> int main(int argc, const char *argv[]) {char str[100]"";puts("please input str:");//从终端读…

深入剖析Nginx:技术解析、最佳实践和高级使用指南(二)

本系列文章简介: 本系列文章通过分析Nginx的内部机制和原理,讲解了Nginx的架构、性能优化和高可用性配置等方面的知识。此外,还介绍了Nginx的最佳实践和高级使用技巧,帮助读者更好地理解和应用Nginx。本系列文章内容详实且深入,适合对Nginx感兴趣的开发人员、系统管理员和…

软件实例分享,饭店餐饮会员卡管理系统怎么弄会员充值怎么记账

软件实例分享&#xff0c;饭店餐饮会员卡管理系统怎么弄会员充值怎么记账 一、前言 以下软件教程以 佳易王餐饮会员管理系统软件V16为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、会员可以登记电子会员卡或使用vip卡片 2、卡类型可以自由…

单片机技术的未来发展趋势:人工智能与物联网的融合

单片机技术在未来的发展趋势中&#xff0c;人工智能&#xff08;AI&#xff09;和物联网&#xff08;IoT&#xff09;的融合将会是一个重要的方向。以下是关于单片机技术未来发展趋势中人工智能与物联网融合的几个小点&#xff1a; 1.智能化设备和系统&#xff1a; 随着人工智…

从零学算法322

322.给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。 你可以认为每种硬币的数量是无限的。 …

【LeetCode】无权图的最短路精选7题——单源、多源

目录 无权图的单源最短路问题&#xff1a; 1. 迷宫中离入口最近的出口&#xff08;中等&#xff09; 2. 最小基因变化&#xff08;中等&#xff09; 3. 单词接龙&#xff08;困难&#xff09; 4. 为高尔夫比赛砍树&#xff08;困难&#xff09; 无权图的多源最短路问题&a…