1.什么是uml
uml(统一建模语言)是一种能够描述问题、描述解决方案、起到沟通作用的语言,即是一门用文本、图形和符号的集合来描述现实生活中各类事物、活动以及之间关系的语言。
2.uml中的事物
构建事物(静态部分,概念或物理结构):类、接口、协作、用例、构件、节点
行为事物(动态部分,空间和时间行为):交互、状态机
分组事物(组织结构):包
注释事物(解释部分):注解
3.uml中的关系
依赖:两模型元素之间的关系(可能有方向的虚线)
关联:两对象之间的关系(可能有方向的实线)
泛化:父子之间的关系(空心箭头的实线,指向父类)
实现:一个类指定了由另一个 类必须执行的约定,通常在接口和实现它的类或构建之间以及用例和实现它的协作之间容易出现这种关系)
4.uml中的图
用例图:从用户角度描述系统功能,并指出各功能的操作者
类图:图形化描述系统设计部分,帮助人们直观地了解一个系统的体系结构
对象图:是类图的实例,对象图有生命周期,只能在系统某一时间段存在
状态机图:一个实体基于事件反应的动态行为
活动图:单个业务流程的逻辑,描述一个操作中各项活动的执行流程
顺序图:对象之间进行消息传递的时间顺序
通信图:各对象执之间的组织交互关系以及各对象彼此之间的链接
构件图:描述代码部件的物理结构及各部件之间的依赖关系
部署图:描述系统中硬件和软件的物理配置情况和系统的组织结构
5.静态图和动态图
静态图:类图、对象图、构件图、部署图、包图、组织结构图
动态图:状态机图、活动图、交互图(通信图、时间图、顺序图、交互概况图)
6.什么是对象,对象的特征
对象是面向对象的基本构件单元,在系统中用来描述客观事物的一个实体(可以具体也可以抽象)
特征:模块性(外部可知功能但内部细节隐蔽,各对象之间相互独立)
? ? ? ? ? ? 继承:用已有定义作为基础来建立新的定义
? ? ? ? ? ? ?动态链接性:各对象之间通过传递消息来建立连接
7.面向对象的开发过程
面向对象分析(OOA):系统调查和需求分析,分析问题并求解
面向对象设计(OOD):整理问题,进行类的设计,在类的基础上提出程序设计的思路和方法
面向对象编程(OOP):程序实现
面向对象测试(OOT):测试
8.uml在面向对象开发过程中起到的作用是什么
可视化系统:UML提供了一套图形化的表示法,可以将系统的结构、行为和关系以图形的方式呈现出来。这样,开发团队可以更直观地理解和沟通系统的设计。
分析和设计工具:通过使用UML图表,开发者可以对系统进行分析和设计。不同的UML图表(如用例图、类图、顺序图、活动图)提供了不同的视角,帮助开发者更全面地了解系统需求和行为。
交流工具:UML是一种标准化的语言,被广泛接受和使用。通过使用UML图表,开发团队可以轻松地与其他开发者、设计师和利益相关者进行交流,促进沟通和共享理解。
文档工具:UML图表可以作为系统文档的一部分,记录系统的结构和行为。这些图表可以帮助开发者以一种清晰和一致的方式来描述和传达系统设计,从而促进团队的协作和维护。
设计验证工具:通过使用UML图表,可以在系统实现之前对设计进行验证。通过分析图表,可以检查系统的完整性、一致性和可行性,识别潜在的问题,并在实现之前进行调整和改进。
综上所述,UML在面向对象开发中提供了一种图形化的方式来描述、分析和设计系统,促进了团队的交流、共享理解和设计验证,帮助开发者更高效地开发高质量的软件系统
9.什么是建模,软件建模的用途,建模有什么优点
建模:模型是对现实存在的实体进行抽象和简化,抽象出系统的不同视图,使用精确的符号建立模型,验证模型是否符合系统需求并逐渐添加细节信息把这些模型转化为实现
用途:对复杂问题进行分层,降低软件复杂度
优点:1)使用模型便于从整体上、宏观上把握问题,以便更好地解决问题
? ? ? ? ? ? 2)软件建模可以加强软件工作人员之间的沟通,以便提早发现问题
? ? ? ? ? ? 3)模型为代码生成提供依据,帮助人们按照实际情况对系统进行可视化
? ? ? ? ? ? 4)模型允许人们详细说明系统的结构或行为,给出了一个指导人们构造系统的模版,并对人们做出的决策进行文档化
10.什么是面向对象技术
面向对象技术强调在软件开发过程中面向客观世界或问题域中的事物,采用人类在认识客观世界的过程中普遍运用的思维方法,直观、自然的描述客观世界中的有关事物
11.staruml中的11种图及其特点
类图:各种类相关的元素静态关系的可视表示
用例图:特定系统或对象中用例及外部角色间关系的可视表示
顺序图:实例间的交互
顺序图(角色):角色概念间的交互
通信图:实例间的协作
通信图(角色):角色概念间的协作
状态图:状态及其转换表示的特定对象的静态行为(一般是类的实例的行为)
活动图:表示动作执行流
构件图:软件构件之间的依赖(组成软件构件以及实现软件的元素)
部署图:物理计算机和设备硬件元素及分配给它们的软件构件、过程对象
组合结构图:表示类元内部结构的图(包含在系统与其他部分的交互点)
12.一个项目包含几个元素
模型(软件模型),子系统(子系统模型),包(最一般的元素)
13.staruml中如何创建图,如何添加元素
创建图:模型资源管理器中选择相应的模型,右键选择add diagram选择对应的图类型
添加元素:先创建好相应的图(不同的图,工具箱里面元素不一样),选择元素,单击或推动(单击添加,拖动可控制大小)
在添加元素时可以连续创建多个元素:双击工具箱中的元素,出现红色小锁,此时连续单击画面就可以创建多个元素,单击select可取消选中状态
14.正向工程和逆向工程的概念区别
正向工程指从模型直接产生一个代码框架
逆向工程是分析java代码,然后将其转换到模型的
15.什么是系统的参与者,如何确定系统的参与者
参与者是指与系统进行交互的外部实体,并不是特指人而是系统以外的在使用系统或与系统交互过程中所扮演的角色
如何确定(思考以下几个问题):
? ? ? ? ? ? ? ? ? ? 谁将使用系统的主要功能
? ? ? ? ? ? ? ? ? ? 谁需要系统的支持来完成日常工作任务
? ? ? ? ? ? ? ? ? ??谁负责维护、管理并保持系统正常运行
? ? ? ? ? ? ? ? ? ? 系统需要处理哪些硬设备
? ? ? ? ? ? ? ? ? ? 系统需要和哪些外部系统交互
? ? ? ? ? ? ? ? ? ? 系统运行所产生的结果谁比较感兴趣
16.什么是用例如何确定系统的用例
用例是对一组动作的描述,用来描述参与者可以感受到的系统服务或功能
如何识别用例:
? ? ? ? ? ? ? ? ? ? ? ? ? 每个角色执行的操作有什么
? ? ? ? ? ? ? ? ? ? ? ? ? 什么角色将要创建、存储、改变、删除或读取系统中的信息
? ? ? ? ? ? ? ? ? ? ? ? ? 什么用例会创建、存储、改变、删除或读取这个信息
? ? ? ? ? ? ? ? ? ? ? ? ? 角色需要通知系统外部的突然变化吗
? ? ? ? ? ? ? ? ? ? ? ? ? 系统需要通知角色正在发生的事情吗
? ? ? ? ? ? ? ? ? ? ? ? ? 什么用例将支持和维护系统
17.用例之间的关系
包含关系(虚线上标include),扩展关系虚线上标extend),泛化关系指向父类的空心三角形实线),分组关系
18.类与用例的区别
用例是描述系统的功能
类是描述系统的结构
19.边界类与实体类的异同
相同点:
都是面向对象分析和设计中的类,用于描述系统的一部分。
都可以包含属性和方法,用于实现其特定的功能和行为。
都可以与其他类进行交互和通信,以实现系统的协调和合作。
不同点:
边界类:边界类是系统与外部环境之间的接口,用于与外部交互。它通常负责处理用户界面、输入输出、数据格式转换等与外部环境的交互操作。边界类主要关注系统与外部世界的接口和交互,将外部信息转化为内部操作和数据。
实体类:实体类代表业务领域中的实体或对象,用于描述具体的实体和其行为。实体类通常包含与其相关的属性和方法,用于描述实体的状态和行为。实体类主要关注问题领域中的实体,封装实体的特性和行为规则。
总结来说,边界类是系统与外部环境之间的接口,负责与外部交互;而实体类代表业务领域中的实体,用于描述具体的实体和其行为。边界类与外部环境通信,实体类描述了问题领域中的具体实体。在系统设计中,这两种类通常需要协同工作以实现系统的需求。
20.类之间的关系
依赖(有向虚线),泛化(子指向父的空心三角箭头实线),关联(无箭头实线),实现(指向接口空心三角形虚线)
?
?
?
?
?
?