软件工程 选课系统的uml类图_想成为高级程序猿,面向对象建模和UML你不应该知道?...
一、面向对象
1、基本概念
软件对象,是一种将状态和行为有机集合起来形成软件构造模型
对象和类
对象是状态和行为构成的
类是相同属性和操作的一组对象的组合
消息和事件
消息是指描述事件发生的信息,是对象间相互联系和作用的方式
事件是指一种由系统预先定义而由用户或系统发出的动作
2、基本特征
抽象
封装
通过公共访问控制器来限制对象的私有属性的好处:
避免对封装数据的未授权访问
帮助保护数据的完整性
当类的私有方法必须修改时,限制了在整个应用程序内的影响
继承
继承的目的:
使派生类能够比不使用继承直接进行描述的类更加简洁
能够重用和扩展现有类库资源
使软件易于维护和修改
多态
3、方法论
获取问题域陈述
建立系统的对象模型
标实和确定类
准备数据字典
确定关联
确定属性
使用继承来细化类
完善对象模型
建立对象的动态模型
准备脚本
确定事件
准备事件跟踪表
构造状态图
建立系统的功能模型
4、面向对象的设计准则
模块化
抽象
信息隐藏—对象的封装
低耦合-有助于类的维护
高内聚-一个对象类中应尽量多地汇聚逻辑上相关的计算资源
5、面向对象的实用规则
设计的结果应该清晰易懂
避免模糊的定义
一般到具体结构的深度应适当
尽量设计小而简单的类
使用简单的消息协议
使用简单的函数或方法
把设计变动减至最小
6、系统设计
子系统分解
确定并发性
处理器及任务分配
数据存储管理
全局资源的处理
选择软件控制机制
人机交互接口设计
二、面向对象建模
1、Unified Modeling Language
统一建模语言UML
2、开发模式
瀑布模型
项目计划->需求分析->软件设计->软件实现->软件测试->软件运行和维护
缺点:
开发模式呈线性,开发成果尚未经过测试时,用户无法看到软件效果,增加项目的风险(数据概览)
瀑布模型强制固定的完成日期和里程碑进行项目跟踪,项目开发过程中缺乏足够的灵活性
软件需求分析阶段,要完全确定系统用户所需要的所有需求是一件比较困难的事情
喷泉模型
分析->设计->实现->维护->演化
缺点:
大量开发,不利于管理
严格的文档管理,审核难度加大
基于构件的开发模式
软件计划->需求分析和定义->软件的快速原型->原型评审->软件设计和实现
缺点:
自定义的组装结构标准,引入了较大的风险
可重用性和软件高效性不易协调
过分依赖构件
XP方法
核心思想:
交流、简单、反馈、进取
Communication、Simplicity、FeedbackAggressiveness
优点:
采用简单计划策略,不需要长期计划和复杂模型,开发周期短
全过程采用迭代增量的开发,反馈修正和反复测试的方法,软件质量有保证
能够适应用户经常变化的需求,提供用户满意的高质量软件
三、Unified Modeling Language概述
1、视图
静态视图
关联
泛化
依赖->使用、实现
用例视图
交互视图
状态机视图
活动视图
物理视图
模型管理视图
2、图
用例图
帮助开发团队以一种可视化的方式理解系统的功能需求,包括基于流程的”角色"关系以及系统用例之间的关系
表达系统或者系统范畴的高级功能
类图
显示了系统的静态结构,表示不同的实体是如何彼此相关联的
序列图
显示一个具体用例或者用例一部分的详细流程
状态图
某个类所处的不同状态以及该类在这些状态中的转换过程
初始状态:使用一个实心圆来绘制
状态之间转换:开箭头的线段
状态:圆角矩形
判断点:空心圆
一个或多个终止点:内部包含实心圆来绘制
活动图
表示二个或者更多的对象之间在处理某个活动时的过程控制流程
构件图
指出某些功能实际存在于那些地方
部署图
该软件系统如何部署到硬件环境中的
3、模型元素
事物
结构事物
分组事物
注释事物
关联
依赖
关联
泛化
实现
4、UML的通用机制
规格说明
修饰
这里表示class2对class是1对多的关系
通用划分
5、UML的扩展机制
构造型
比如:
<><><>
标记值
约束
四、总结
主要讲了面向对象的一些基本概念和设计的方法论(获取限定上下文,建立对象模型,动态模型,功能模型)和原则,包括设计准则(低耦合高内聚、抽象、模块化和封装)和实用原则,介绍了软件开发的四种模式(瀑布、喷泉、构件、XP),最后简单介绍了一下UML,包括了UML的视图、图、模型元素三个方面,后面还有一部分UML的公共机制,包含了通用机制和扩展机制。
谈谈自己的一些感悟吧,在平时的工作中,用到比较多的是用例图、类图、时序图、状态越迁图,类图现在其实用到的也不多了,现在有个很概念叫做领域驱动设计(DDD),类图画的越来越少,工作上都在用领域图。以前都是野路子画法,2019年的第一个月,我准备把UML系统的学习一遍。还是发现之前画的图还是很不规范的,比如说类的约束和修饰,之前的详细设计中都没有体现,至于构件图、活动图、部署图,之前也有画过,不过画成了四不像,后期主要会针对这些没有涉及过的UML模型进行学习。
最后分享一下本章的思维导图
软件工程 选课系统的uml类图_想成为高级程序猿,面向对象建模和UML你不应该知道?...相关推荐
- 身为程序员还看不懂UML类图? 一文带你零基础学会看UML类图!
身为程序员还看不懂UML类图? 一文带你零基础学会看UML类图! 一,UML类图示例图 二,UML类图图例 三,分步解析说明 3.1 类图: 3.2 接口: 3.3 实现继承 3.4 实现接口: 3. ...
- java实现系统中控件类图_阅读以下关于某订单管理系统的技术说明、部分UML类图及Java程序,将Jav..._考试资料网...
打开考生文件夹下的Word文档WORD1.doc,其内容如下:打开考生文件夹下的Word文档WORD1.doc,其内容如下:[WORD1.doc文档开始]人生要学会遗忘人生在世,忧虑与烦恼有时也会伴随 ...
- 四步轻松实现用Visio画UML类图
原文链接:四步轻松实现用Visio画UML类图 四步轻松实现用Visio画UML类图 本节和大家一起学习一下用Visio画UML类图的方法,主要有四个步骤,这里和大家分享一下,相信通过本节的学习,你对 ...
- 快速读懂UML类图,搞懂类之间的6大关系,轻松绘制UML类图
快速读懂UML类图,搞懂类之间的6大关系,轻松绘制UML类图 前言 一.UML类图简介 二.类之间的六大关系及UML类图 1.依赖关系及UML类图表示 2.泛化关系及UML类图表示 3.实现关系及UM ...
- Java设计模式—UML类图
个人感觉总结很好的UML类图,转http://blog.csdn.net/u013467442/article/details/41808501 UML类图几种关系的总结 在UML类图中,常见的有以下 ...
- UML类图符号标识符解释
来自:http://liuchuxiong2003.blog.sohu.com/168088327.html 类图Class diagram通过显示出系统的类以及这些类之间的关系来表示系统.类图是静态 ...
- 23种设计模式【全】 包含:模式定义 使用场景 实现步骤 优缺点 模式区别 UML类图 示例代码 注意项等
23种设计模式(全) ***项目地址***:[GitHub](https://github.com/yjhroot/design-pattern) 声明 模式分类(3大类) 创建型模式(共5种) 结构 ...
- 设计模式之UML类图初步
UML图(分为结构图和行为图) 对软件体系结构进行可视化.详述.构造和文档化,有5种最重要的互补视图:用况视图(usecaseview).设计视图(designview).进程视图(processvi ...
- UML类图关系大全 and 报表的基本用法
UML类图关系大全 1.关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法. 在 GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描 ...
最新文章
- apache虚拟机配置步骤和修改访问端口
- Deepin15.7 Android8.1 编译 以及问题解决
- status c语言_C/C++编程笔记:C语言编程风格个人总结,初学小白可借鉴
- Flask-SQLAlchemy插件
- python入坑指南_Rust入坑指南:万物初始
- 华为交换机怎么关闭信息提示_iPhone 关闭支付宝自动扣费服务提示“无法解约”怎么办?...
- 社交类APP原型模板分享——Tinder
- 面试自我介绍和简历上的内容能不能相同?
- python爬取 东方财富/天天基金网 基金排行数据
- 全面了解光纤跳线的应用及使用注意事项
- linux su -含义,linux su命令详解步骤
- mysql横竖表转换
- Oracle索引梳理系列(十)- 直方图使用技巧及analyze table操作对直方图统计的影响(谨慎使用)...
- php高级程序员/php开发工程师/web技术员
- Oracle数据库访问性能优化
- SOLIDWOKS文件高版本转低版本,导入ADAMS的注意事项
- Win2008服务器操作系统-HTTP的WEB网页和虚拟目录
- ECCV 2020 实例分割+全景分割论文大盘点(14篇论文)
- K8S安装和NSX-T协同配置--Step to Step lab
- iPad上的背单词神器 — 单词播放器 HD 发布
热门文章
- 【java】java Parallel GC 该怎么看?
- Greenplum元数据信息
- 60-300-024-使用-延迟数据-Flink中延时调用设计与实现
- 【Flink】报错Could not forward element to next operator Buffer pool is destroyed
- 18-elasticsearch集群健康为黄色
- Hbase和MySQL的区别是什么?
- 【超全指南】Java 8 中使用 Optional 处理 null 对象
- SpringBoot 项目构建 Docker 镜像调优实践
- mysql中对象标识符的命名规则,标准规范数据库命名规范.doc
- WindowsXP 系统登陆原理及其验证机制概述