1、软件开发与软件工程

任何事情都必须想清楚了,才能去做!这样才不会出现很多不必要的麻烦,软件开发亦是如此。

写代码前要想好:想要做什么?做成什么样?如何去做?

软件设计就是把软件开发想清楚的过程;

软件工程就是对软件开发进行建模和管理;

所谓模型,就是对现实进行简化,帮助人们能更好的了解所要研究事物的本质,例如地图。

建模就是对现实系统进行适当的过滤,用一种适当的表现规则描绘出简洁的模型,其是一种深入解决问题的方法。

建模的原则有:1)正确的模型

       2)使用者的身份和使用场合是评价建模的好坏的关键

       3)适当的简洁,而又不掩藏事物的重要的细节。

       4)模型不能孤立

建模的作用:将现实世界的问题映射成计算机世界所能理解并解决的问题。

建模的过程:根据需求,用模型表达设计过程,然后映射成软件实现。

2、UML

UML(United modeling language)是一种基于面向对象的可视化的建模语言,它采用一种形象化的图形符号作为语言,通过建立的图形之间的关系来描绘模型。

3、UML的图和关系

UML共有10种图:1)静态模型图:用来描述系统的静态结构

          类图、对象图、包图、组件图、部署图

         2)动态模型图:用来描述系统行为的各方面

          用例图、时序图、状态图、活动图、协作图

UML的关系有四种:关联关系、依赖关系、泛化(相当于C++中的继承)、实现关系;

(一)用例图(用户模型图)

它是从客户的角度来描述系统功能。

有三个基本组件:参与者(Actor)、用例(Use Case)、关系;

其中参与者,表示使用该系统的人或者事物,在UML中,用人形表示,用例代表系统某项完整的功能,用椭圆表示;关系:表示用例之间的关系

用例之间的关系有泛化关系、扩展关系、包含关系

泛化关系:表示同一业务目的的不同技术实现;

扩展关系:在完成一个功能时,再执行另外的功能;

包含关系:一个用例可以包含其他用例具体的行为。

(二)类图

主要是用来显示系统中的类,接口以及它们之间的关系,其中关系有泛化关系、关联关系、依赖关系、实现关系。

类是类图的主要组件,由三部分组成:类名,属性和方法(函数),其中+号表示公有属性,-号表示私有属性,#表示保护属性;

接口包含方法,不包含属性。通过一条实线与它的模型元素相连。

泛化关系:表示类与类之间、接口与接口之间的继承关系。

实现关系:用来表示类与接口之间的实现关系

依赖关系:简单的理解就是,假设我开车去上班,但是我没有车,需要借别人的车才能去上班,我跟这个车之间的关系就是依赖关系,对应代码实现---》就是一个类作为另一个类的函数参数或者函数返回值;

关联关系:我的理解是,我牛逼了!我自己有车了,不需要借车去上班了,使用自己的车去上班,这时我跟这个车之间的关系就是关联关系,对应代码实现---》就是一个类是另一个类的成员变量

  1. #include<iostream>
  2. using namespace std;
  3. //依赖(虚线):一个类作为另一个类的函数参数或者函数返回值
  4.  
  5. class Car;
  6. class Lin {
  7. public:
  8. //依赖关系(
  9. void work(Car *p)
  10. {
  11.  
  12. }
  13. Car* fix()
  14. {
  15.  
  16. }
  17. protected:
  18. private:
  19. };
  20.  
  21. class Car {
  22. public:
  23. protected:
  24. private:
  25. };
  26. //关联(实现)
  27. class AdvLin {
  28. public:
  29. void work()
  30. {
  31. //m_car01->(使用方式)
  32. }
  33. protected:
  34. private:
  35. //Car *m_car01;
  36. Car m_car02;
  37. };
  38.  
  39. void main()
  40. {
  41. cout << "Hello World!" << endl;
  42. system("pause");
  43. return;
  44. }

关联关系中的角色:角色就是关联关系中一个类对另一个类所表现的职责。例如车是我的,那么我就是车的主人。

关联关系的多重性是指有多少对象可以参与该关联, 多重性可以用来表达一个取值范围, 特定值, 无限定的范围。例如我又牛逼了,我可以同时拥有多辆车,这就是关联关系的多重性。

在C++、Java中关联关系可以是单向的、也可以是双向的,它们之间是通过成员变量实现的。

-------------------------------------------------------------------------------------------------------------------华丽的分割线------------------------------------------------------------------------------------------------------------------------

ps:继上次总结UML已经过去半年多了,现在来补上之前停下来的部分.(2018/11/17)

关联关系中还有聚合和组合两种关系:

聚合关系:聚合关系是更强的关联关系,聚合是整体与部分之间的关系,关联关系涉及的类处于同一个层次上,而聚合关系,两个类处于不同的层次,一个整体一个部分。(例如,车与引擎、车轮之间的关系)

组合关系:又称为强聚合,比聚合更强的关联关系,代表着整体的对象负责代表部分对象的生命周期。(例如,公司和部门的关系)。

UML(统一的建模语言)的更多相关文章

  1. 技术人应该学习的行话--UML统一建模语言

    新生代码农如何在硝烟弥漫的商业丛林中生存和崛起? 洞见,让一部分先遇见未来. 最近公司技术部在组织架构师培训,有幸参与.导师老刘特别推荐了UML语言的学习.回想多年来,自己习惯做一些流程图,框图或者所 ...

  2. 设计模式学习总结(一)——设计原则与UML统一建模语言

    一.概要 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. 设计 ...

  3. 2017.12.23 第二章 统一建模语言UML概述

    第二章 统一建模语言UML概述 (1)为什么要建模 模型是某个事物的抽象,其目的是在构建这个事物之前先来理解它,因为模型忽略了那些非本质的细节,这样有利于更好的理解和表示事物: 在软件系统开发之前首先 ...

  4. 统一建模语言UML

    目录 1. UML定义 2. UML结构 2.1 视图(View) 2.2 图(Diagram) 2.3 模型元素(Model element) 2.4 通用机制(General mechanism) ...

  5. 【UML】统一建模语言

    如果是准备学习设计模式的同学,可以只了解类图相关的知识 而如果是在准备软件设计师考试的同学,或许会对你有点帮助 正在施工...... 参考博客:https://blog.csdn.net/unique ...

  6. 1. UML统一建模语言

    (1)UML概述: 建模: 对现实系统进行适当的过滤, 用适当的表现规则描述出简洁的模型. 建模是一种深入解决问题的方法. UML: UML(United Modeling Language, 统一建 ...

  7. UML标准建模语言与应用实例

    一.基本信息 标题:UML标准建模语言与应用实例 时间:2012 出版源:科技创新导报 领域分类:UML标准建模语言 面向对象 系统分析与设计 二.研究背景 问题定义:UML建模语言用图形来表现典型的 ...

  8. 面向对象基础及UML建模语言

    1.面向对象的方法起源于面向对象程序设计语言,其发展过程大体经历了初始阶段.发展阶段和成熟阶段. 2.面向对象方法主要优点 (1)从认识论的角度可以看出,面向对象方法改变了开发软件的方式. (2)面向 ...

  9. 统一建模语言UML---类图

    什么是统一建模语言,来看看百科中的介绍统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明.可视化和编制文档的一种标准语言,是非专利的第三代建模 ...

随机推荐

  1. 51nod 1103 N的倍数

    1103 N的倍数   一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍数. 例如:N = 8,数组A包括:2 5 6 3 18 7 11 19,可以选2 6,因为2 + 6 = 8, ...

  2. Linux 操作 mysql

    linux mysql 操作命令 [转 来源] 1.linux下启动mysql的命令:mysqladmin start/ect/init.d/mysql start (前面为mysql的安装路径) 2 ...

  3. 关于C++中的友元函数的总结

    1.友元函数的简单介绍 1.1为什么要使用友元函数 在实现类之间数据共享时,减少系统开销,提高效率.如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数.具 ...

  4. UOJ 171 【WC2016】挑战NPC

    一开始还真没想到是一般图匹配这种模型(毕竟才会的带花树) 把每一个盒子拆成3个,每一个可以放置进它的小球分别向这三个点连边,然后这三个点在连成一个三元环,最终答案就是小球数目-匹配数. 由于是一般图, ...

  5. 如何学好Java大数据并快速提升

    Java作为一种最流行的,最热门的编程语言,可以说它无处不在,目前全球有着数十亿的设备正在运行着Java,很多服务器程序都是用Java编写,用以处理每天超过数以千万的数据.无论是手机软件.手机Java ...

  6. unity中实现静态的3D对象对其他对象的跟随

    using UnityEngine; public class FollowPosition : MonoBehaviour { public Transform targetTrans; publi ...

  7. 小行星碰撞 Asteroid Collision

    2018-08-07 11:12:01 问题描述: 问题求解: 使用一个链表模拟栈,最后的状态一定是左侧全部是负值,表示的是向左飞行,右侧的全部是正值,表示的是向右飞行. 遍历整个数组,对于每个读到的 ...

  8. spring boot 启动报错(spring-boot-devtools热部署后):The elements [spring.resources.cache-period] were left unbound. Update your application's configuration

    详细错误代码: *************************** APPLICATION FAILED TO START *************************** Descript ...

  9. ASP.NET调用dos命令获取交换机流量

    protected void btn_Cisco_Click(object sender, EventArgs e) { try { string ip = txt_ip.Value; string ...

  10. [INS-20802] Oracle Net Configuration Assistant failed,Caught UnknownHostException

    在64位Centos上安装64的oracle 11g R2,出现错误: [INS-20802] Oracle Net Configuration Assistant failed 根据提示查看日志文件 ...