百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

软考系规:面向对象系统分析与设计详解

liebian365 2025-03-03 19:17 14 浏览 0 评论

1、面向对象与面向过程

(1)面向过程:世界的一切都不是孤立的,是紧密联系在一起的,缺一不可,互相作用,并形成一个个小系统,然后小系统组合完成大系统,适合于需求明确不复杂的项目

理解:想象一下你正在做一顿大餐。面向过程的方式就是按照菜谱一步一步来,先切菜、再炒菜、最后装盘。每一步都明确且顺序执行,适合那些步骤清晰、不常变动的任务。

(2)面向对象:世界是分割开来的对象(物件)组成,对象是由数据及其操作所构成的封装体,是系统中用来描述客观事物的一个模块,是构成系统的基本单位对象包含3个基本要素,分别是对象标识、对象状态和对象行为

理解:再想象一下,你不再只是按照菜谱做菜,而是把每个食材(比如土豆、胡萝卜)都看作是一个有生命的“对象”。这些对象有自己的属性(如颜色、形状、大小),还有自己的行为(如被削皮、被切片)。你通过告诉这些对象做什么(比如“土豆,你去切一下”),它们就会完成自己的任务,而不需要你亲自去动手切每一片。面向对象的方式让系统更加灵活和可扩展,因为你可以轻松地添加新的对象或修改现有对象的行为。

(标识号、属性、动作)除非有在特定场景下,这些对象是“自私”的,其内部就是一个黑匣子,什么也看不到,叫做封装。它们之间通过消息传递信息,孤立的对象之间进行了某些信息交互才表现出我们看到的一个过程,否则它们将“老死不相往来”。对象喜欢群居,并且总是“物以类聚人以群分”,这些相似性质的对象组成一个部落,对象们寻找性质相似的群居的过程叫做抽象,它们组成的部落叫做类

如:龙生龙凤生凤,老鼠的孩子会打洞,也能飞上天等----继承继承的反关系叫做泛化

龙生九子---继承,九子各不相同----泛化

每个对象都有多个外貌,不同情况下展现不同的外貌,但是本质只有一个,叫做接口

2、面向对象基本概念

面向对象的基本概念包括对象、类、抽象、封装、继承、多态、接口、消息、组件、复用和模式等。

(1)对象:由数据及其操作所构成的封装体,是系统中用来描述客观事物的一个模块,是构成系统的基本单位。对象三个基本要素:对象标识、对象状态、对象行为

理解:比如一个“人”对象,你(男/女)朋友有姓名、年龄、体重等属性,以及吃饭、睡觉等行为。

(2)类:现实世界中实体的形式化描述,类将该实体的属性(数据)和操作(函数)封装在一起。类定义了属于该类的所有对象的共同特性一个类可以定义多个对象对象是类的实例,类是对象的模板。如果将对象比作房子,那么类就是房子的设计图纸。

理解:一群相似对象的模板,比如“人类”就是一个类,它定义了所有人共有的属性和行为,再比如“教师”类,也是有共同的属性和行为。

(3)抽象:通过特定的实例抽取共同特征以后形成概念的过程,类是一组对象的抽象

理解:从具体事物中提取出共同特征的过程,比如从“苹果”、“香蕉”等具体水果中提取出“水果”这个概念。

(4)封装:将相关的概念组成一个单元模块,并通过一个名称来引用它。

理解:把对象的属性和行为藏起来,只通过特定的接口(比如方法)与外界交互,就像手机电池,你不需要知道它里面是怎么工作的,只需要知道怎么充电和使用。

(5)继承:表示类之间的层次关系(父类与子类),这种关系使得某类对象可以继承另外一类对象的特征,继承又可分为单继承和多继承

理解:子类可以继承父类的属性和行为,就像儿子可以继承父亲的姓氏和某些特征。

(6)接口:描述对操作规范的说明,其只说明操作应该做什么,并没有定义操作如何做。

理解:定义了对象应该做什么,但不具体实现,就像手机充电器接口,只要符合这个接口,就可以给手机充电,但具体怎么充,由充电器自己决定。

(7)消息:体现对象间的交互,通过它向目标对象发送操作请求。

理解:对象之间交流的方式,比如你告诉天猫精灵“播放音乐”,最直观的就是你和对象聊天通过微信消息的传递,这些都是属于消息。

(8)组件:表示软件系统可替换的、物理的组成部分,封装了模块功能的实现

理解:软件系统的独立部分,可以单独开发、测试和替换,就像汽车的发动机、轮胎等。

(9)复用:指将已有的软件及其有效成分用于构造新的软件或系统,组件技术是软件复用实现的关键。

理解:利用已有的软件组件来构建新的系统,就像搭积木一样,每个积木都是可以复用的,今天你搭建的房子可以使用这些积木,明天你搭建了一个飞机也可以使用这些积木。

(10)多态:定义同一个操作或属性名称在多个类中,并在每个类中可以有不同的体现

理解:同一个操作或属性在不同对象上有不同的表现,比如“跑”这个动作,人跑和狗跑的方式就不一样。

(11)模式:描述了一个不断重复发生的问题,以及该问题的解决方案,其包括特定环境 +问题 + 解决方案3个组成部分。

理解:解决常见问题的经验总结,比如“工厂模式”就是用来创建对象的常用方式。

3、面向对象分析与设计

(1)面向面向对象系统分析的模型用例模型、类-对象模型、对象-关系模型和对象-行为模型组成。

理解:通过用例模型、类-对象模型等来分析系统需求,就像做菜前先了解需要什么食材和工具一样。

(2)面向对象系统设计基于系统分析得出的问题域模型,用面向对象的方法设计出软件基础架构(概要设计)完整的类结构(详细设计),以实现业务功能。

理解:基于分析结果,设计系统的架构和类结构,就像设计菜谱和厨房布局一样,我们可以先大概的设计,比如菜谱大概可以设为湘菜、川菜、杭帮菜,厨房布局的大概设计可以设为洗菜池、燃气灶部分,然后再针对每个大概的设计进行详细的设计,详细设计就是方方面面都考虑到了。

(3)面向对象系统设计主要包括用例设计、类设计和子系统设计

(4)RUP是使用面向对象技术进行软件开发实践的最佳实践之一。

理解:一种流行的面向对象软件开发方法,它提供了一套完整的流程和最佳实践,继续使用上面造厨房的例子,比如你是找的专业建设厨房的施工队,他们会有严格的操作流程和标准,比如他们必须要先去买水泥、瓷砖、材料,然后施工过程中必须要把误差减少到1%以内,最后结束了还必须要打扫干净。

4、统一建模语言(UML)

(1)UML是一种可视化的建模语言而不是编程语言。分为构造块、规则和公共机制三个部分。适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具。它比较适合用于迭代式的开发过程,是为支持大部分现存的面向对象开发过程而设计的。

理解:可以让不同背景的人,如开发人员、测试人员、设计师等都能理解系统的设计。UML图就像是图纸,可以用它来描述系统的各种模型和关系。静态图展示了系统的静态结构(如类、对象、组件等),而动态图则展示了系统的行为(如对象之间的交互、状态变化等)

(2)UML图提供了对系统进行建模的描述方式,主要包括:

静态图:用例图、类图、对象图、组/构件图、部署图(配置图)

动态图:序列图、状态图、协作图、活动图

理解:

静态图

静态图主要用于展示系统的静态结构,即系统的组成部分以及它们之间的关系,而不涉及这些部分的行为或动作。

(1)用例图(Use Case Diagram)

用例图是用来描述系统功能的图表,它从用户的角度展示了系统能够做什么。它主要包括参与者(用户或外部系统)和用例(系统功能)。参与者通过交互来触发这些用例,用例则展示了系统如何响应这些交互。

例子:一个在淘宝购物平台的用例图可能包括“顾客”作为参与者,以及“浏览商品”、“加入购物车”、“结算”等作为用例。

(2)类图(Class Diagram)

类图是用于描述系统中类的静态结构,包括类的属性(即数据)和操作(即方法或行为)。类图还展示了类之间的关系,如继承、关联、依赖等。

例子:在在淘宝购物平台中,类图可能包括“商品”、“购物车”、“用户”等类,以及它们之间的关系,如用户可以将商品添加到购物车中。

(3)对象图(Object Diagram)

对象图是类图的一个实例,它展示了在特定时间点或场景下,系统中实际存在的对象以及它们之间的关系。对象图通常用于说明系统的一个具体状态。

例子:在淘宝购物平台中,一个对象图可能展示了某个用户(对象)的购物车(对象)中包含了哪些商品(对象)。

(4)组/构件图(Component Diagram)

构件图用于描述系统的物理结构,即系统由哪些构件(如源代码文件、可执行文件、数据库等)组成,以及这些构件之间的关系。

例子:淘宝购物平台的构件图可能包括前端网页、后端服务器、数据库等构件,以及它们之间的通信关系。

(5)部署图(Deployment Diagram)

部署图展示了系统运行时软件和硬件的物理配置情况,包括节点(如服务器、计算机)和它们之间的通信关系。

例子:淘宝购物平台的部署图可能展示了哪些服务器负责处理前端请求,哪些服务器负责数据存储,以及它们之间的网络连接情况。

动态图

动态图则用于描述系统的动态行为,即系统的组成部分如何随时间进行交互和变化。

(1)序列图(Sequence Diagram)

序列图展示了对象之间交互的顺序,它按照时间顺序描述了对象之间发送和接收消息的过程。

例子:在淘宝购物平台中,序列图可能展示了用户登录时,前端界面、后端服务和数据库之间的交互过程。

(2)状态图(State Diagram)

状态图用于描述一个对象在其生命周期中的状态变化以及触发这些变化的事件。它展示了对象在不同状态下的行为和状态之间的转换。

例子:在淘宝购物平台中,订单的状态图可能包括“待支付”、“已支付”、“已发货”等状态,以及触发这些状态变化的事件(如用户支付、仓库发货等)。

(3)协作图(Collaboration Diagram)

协作图与序列图类似,也用于描述对象之间的交互。但协作图更侧重于展示对象之间的空间布局和关系,而不是时间顺序。

例子:在淘宝购物平台中,协作图可能展示了在订单处理过程中,订单处理系统、支付系统和物流系统之间的协作关系。

(4)活动图(Activity Diagram)

活动图用于描述系统中从一个活动到另一个活动的流程,它展示了为了完成某个目标而需要执行的一系列动作和决策点。

例子:在淘宝购物平台中,活动图可能展示了从用户选择商品到完成支付的整个流程,包括浏览商品、加入购物车、结算、支付等活动。

(3)视图描述

写在最后

如果你正在备考或计划备考系规、软考高项,需要资料的可以私我,有很多最新的电子资料,有视频课程、讲义、资料、考试要点、论文写作、论文集等需要这方面资料的可私.我。
(绿.泡.泡:stypanda)

相关推荐

“版本末期”了?下周平衡补丁!国服最强5套牌!上分首选

明天,酒馆战棋就将迎来大更新,也聊了很多天战棋相关的内容了,趁此机会,给兄弟们穿插一篇构筑模式的卡组推荐!老规矩,我们先来看10职业胜率。目前10职业胜率排名与一周前基本类似,没有太多的变化。平衡补丁...

VS2017 C++ 程序报错“error C2065:“M_PI”: 未声明的标识符"

首先,程序中头文件的选择,要选择头文件,在文件中是没有对M_PI的定义的。选择:项目——>”XXX属性"——>配置属性——>C/C++——>预处理器——>预处理器定义,...

东营交警实名曝光一批酒驾人员名单 88人受处罚

齐鲁网·闪电新闻5月24日讯酒后驾驶是对自己和他人生命安全极不负责的行为,为守护大家的平安出行路,东营交警一直将酒驾作为重点打击对象。5月23日,东营交警公布最新一批饮酒、醉酒名单。对以下驾驶人醉酒...

Qt界面——搭配QCustomPlot(qt platform)

这是我第一个使用QCustomPlot控件的上位机,通过串口精确的5ms发送一次数据,再将读取的数据绘制到图表中。界面方面,尝试卡片式设计,外加QSS简单的配了个色。QCustomPlot官网:Qt...

大话西游2分享赢取种族坐骑手办!PK趣闻录由你书写

老友相聚,仗剑江湖!《大话西游2》2021全民PK季4月激燃打响,各PK玩法鏖战齐开,零门槛参与热情高涨。PK季期间,不仅各种玩法奖励丰厚,参与PK趣闻录活动,投稿自己在PK季遇到的趣事,还有机会带走...

测试谷歌VS Code AI 编程插件 Gemini Code Assist

用ClaudeSonnet3.7的天气测试编码,让谷歌VSCodeAI编程插件GeminiCodeAssist自动编程。生成的文件在浏览器中的效果如下:(附源代码)VSCode...

顾爷想知道第4.5期 国服便利性到底需优化啥?

前段时间DNF国服推出了名为“阿拉德B计划”的系列改版计划,截至目前我们已经看到了两项实装。不过关于便利性上,国服似乎还有很多路要走。自从顾爷回归DNF以来,几乎每天都在跟我抱怨关于DNF里面各种各样...

掌握Visual Studio项目配置【基础篇】

1.前言VisualStudio是Windows上最常用的C++集成开发环境之一,简称VS。VS功能十分强大,对应的,其配置系统较为复杂。不管是对于初学者还是有一定开发经验的开发者来说,捋清楚VS...

还嫌LED驱动设计套路深?那就来看看这篇文章吧

随着LED在各个领域的不同应用需求,LED驱动电路也在不断进步和发展。本文从LED的特性入手,推导出适合LED的电源驱动类型,再进一步介绍各类LED驱动设计。设计必读:LED四个关键特性特性一:非线...

Visual Studio Community 2022(VS2022)安装图文方法

直接上步骤:1,首先可以下载安装一个VisualStudio安装器,叫做VisualStudioinstaller。这个安装文件很小,很快就安装完成了。2,打开VisualStudioins...

Qt添加MSVC构建套件的方法(qt添加c++11)

前言有些时候,在Windows下因为某些需求需要使用MSVC编译器对程序进行编译,假设我们安装Qt的时候又只是安装了MingW构建套件,那么此时我们该如何给现有的Qt添加一个MSVC构建套件呢?本文以...

Qt为什么站稳c++GUI的top1(qt c)

为什么现在QT越来越成为c++界面编程的第一选择,从事QT编程多年,在这之前做C++界面都是基于MFC。当时为什么会从MFC转到QT?主要原因是MFC开发界面想做得好看一些十分困难,引用第三方基于MF...

qt开发IDE应该选择VS还是qt creator

如果一个公司选择了qt来开发自己的产品,在面临IDE的选择时会出现vs或者qtcreator,选择qt的IDE需要结合产品需求、部署平台、项目定位、程序猿本身和公司战略,因为大的软件产品需要明确IDE...

Qt 5.14.2超详细安装教程,不会来打我

Qt简介Qt(官方发音[kju:t],音同cute)是一个跨平台的C++开库,主要用来开发图形用户界面(GraphicalUserInterface,GUI)程序。Qt是纯C++开...

Cygwin配置与使用(四)——VI字体和颜色的配置

简介:VI的操作模式,基本上VI可以分为三种状态,分别是命令模式(commandmode)、插入模式(Insertmode)和底行模式(lastlinemode),各模式的功能区分如下:1)...

取消回复欢迎 发表评论: