一、面向对象

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你不应该知道?...相关推荐

  1. 身为程序员还看不懂UML类图? 一文带你零基础学会看UML类图!

    身为程序员还看不懂UML类图? 一文带你零基础学会看UML类图! 一,UML类图示例图 二,UML类图图例 三,分步解析说明 3.1 类图: 3.2 接口: 3.3 实现继承 3.4 实现接口: 3. ...

  2. java实现系统中控件类图_阅读以下关于某订单管理系统的技术说明、部分UML类图及Java程序,将Jav..._考试资料网...

    打开考生文件夹下的Word文档WORD1.doc,其内容如下:打开考生文件夹下的Word文档WORD1.doc,其内容如下:[WORD1.doc文档开始]人生要学会遗忘人生在世,忧虑与烦恼有时也会伴随 ...

  3. 四步轻松实现用Visio画UML类图

    原文链接:四步轻松实现用Visio画UML类图 四步轻松实现用Visio画UML类图 本节和大家一起学习一下用Visio画UML类图的方法,主要有四个步骤,这里和大家分享一下,相信通过本节的学习,你对 ...

  4. 快速读懂UML类图,搞懂类之间的6大关系,轻松绘制UML类图

    快速读懂UML类图,搞懂类之间的6大关系,轻松绘制UML类图 前言 一.UML类图简介 二.类之间的六大关系及UML类图 1.依赖关系及UML类图表示 2.泛化关系及UML类图表示 3.实现关系及UM ...

  5. Java设计模式—UML类图

    个人感觉总结很好的UML类图,转http://blog.csdn.net/u013467442/article/details/41808501 UML类图几种关系的总结 在UML类图中,常见的有以下 ...

  6. UML类图符号标识符解释

    来自:http://liuchuxiong2003.blog.sohu.com/168088327.html 类图Class diagram通过显示出系统的类以及这些类之间的关系来表示系统.类图是静态 ...

  7. 23种设计模式【全】 包含:模式定义 使用场景 实现步骤 优缺点 模式区别 UML类图 示例代码 注意项等

    23种设计模式(全) ***项目地址***:[GitHub](https://github.com/yjhroot/design-pattern) 声明 模式分类(3大类) 创建型模式(共5种) 结构 ...

  8. 设计模式之UML类图初步

    UML图(分为结构图和行为图) 对软件体系结构进行可视化.详述.构造和文档化,有5种最重要的互补视图:用况视图(usecaseview).设计视图(designview).进程视图(processvi ...

  9. UML类图关系大全 and 报表的基本用法

    UML类图关系大全 1.关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法. 在 GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描 ...

最新文章

  1. apache虚拟机配置步骤和修改访问端口
  2. Deepin15.7 Android8.1 编译 以及问题解决
  3. status c语言_C/C++编程笔记:C语言编程风格个人总结,初学小白可借鉴
  4. Flask-SQLAlchemy插件
  5. python入坑指南_Rust入坑指南:万物初始
  6. 华为交换机怎么关闭信息提示_iPhone 关闭支付宝自动扣费服务提示“无法解约”怎么办?...
  7. 社交类APP原型模板分享——Tinder
  8. 面试自我介绍和简历上的内容能不能相同?
  9. python爬取 东方财富/天天基金网 基金排行数据
  10. 全面了解光纤跳线的应用及使用注意事项
  11. linux su -含义,linux su命令详解步骤
  12. mysql横竖表转换
  13. Oracle索引梳理系列(十)- 直方图使用技巧及analyze table操作对直方图统计的影响(谨慎使用)...
  14. php高级程序员/php开发工程师/web技术员
  15. Oracle数据库访问性能优化
  16. SOLIDWOKS文件高版本转低版本,导入ADAMS的注意事项
  17. Win2008服务器操作系统-HTTP的WEB网页和虚拟目录
  18. ECCV 2020 实例分割+全景分割论文大盘点(14篇论文)
  19. K8S安装和NSX-T协同配置--Step to Step lab
  20. iPad上的背单词神器 — 单词播放器 HD 发布

热门文章

  1. 【java】java Parallel GC 该怎么看?
  2. Greenplum元数据信息
  3. 60-300-024-使用-延迟数据-Flink中延时调用设计与实现
  4. 【Flink】报错Could not forward element to next operator Buffer pool is destroyed
  5. 18-elasticsearch集群健康为黄色
  6. Hbase和MySQL的区别是什么?
  7. 【超全指南】Java 8 中使用 Optional 处理 null 对象
  8. SpringBoot 项目构建 Docker 镜像调优实践
  9. mysql中对象标识符的命名规则,标准规范数据库命名规范.doc
  10. WindowsXP 系统登陆原理及其验证机制概述