热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:1.UML笔记UML与面向对象

篇首语:本文由编程笔记#小编为大家整理,主要介绍了1.UML笔记-UML与面向对象相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了1. UML笔记 - UML与面向对象相关的知识,希望对你有一定的参考价值。




1. UML与面向对象

前言



Through love comes calm, and through calm comes thought.


爱使人平静,而平静使人思考。



目录





  • 前言


  • 目录


  • 1.1 面向对象开发



    • 1.1.1 理解面向对象开发


    • 1.1.2 面向对象的主要概念


    • 1.1.3 面向对象开发的优点



  • 1.2 OO开发中的三层设计


  • 1.3 UML简介



    • 1.3.1 系统建模


    • 1.3.2 UML的发展


    • 1.3.3 UML的构成



  • 1.4 UML视图



    • 1.4.1 用例视图


    • 1.4.2 逻辑视图


    • 1.4.3 并发视图


    • 1.4.4 组件视图


    • 1.4.5 部署视图



  • 1.5 UML图



    • 1.5.1 用例图


    • 1.5.2 类图


    • 1.5.3 对象图


    • 1.5.4 状态图


    • 1.5.5 顺序图


    • 1.5.6 协作图


    • 1.5.7 活动图


    • 1.5.8 组件图


    • 1.5.9 部署图


    • 1.5.10 其他图



  • 1.6 模型元素



    • 1.6.1 事物


    • 1.6.2 关系



  • 1.7 通用机制



    • 1.7.1 修饰


    • 1.7.2 注释


    • 1.7.3 规格说明


    • 1.7.4 拓展机制



  • 1.8 使用UML建模







1.1 面向对象开发



面向对象哪里都有说,真的不想写那么多



1.1.1 理解面向对象开发


1. 面向对象开发


面向对象的思想一方面是从现实世界存在的事务出发来构造软件系统,并在软件系统中尽可能运用人类的自然思维方式;而另一方面则是比以往的方法更加贴近人类自然思维方式。


Simula-67是第一种面向对象的编程语言。


面向对象的工程方法主要包含面向对象分析(OOA)面向对象设计(OOD)以及面向对象编程(OOP)





  • 面向对象分析:是应用面向对象方法进行系统分析。从问题中获取

    对象,以及它们之间的关系。



  • 面向对象设计:在软件设计生命周期中发生于
    OOA之后,过程是完善OOA的成果,OOA表达了做什么,OOD表达了怎么做。



  • 面向对象编程:这个过程是用于实现OOA和OOD的成果。


2. 各种开发方法的生命周期:


迭代开发方法:先进行分析设计编写部分程序完成了系统需求的一部分,再进行分析-设计-编程完成其它需求。





  • OO开发方法:主要阶段有
    计划
    分析
    设计
    实现
    支持



  • 瀑布开发方法:设计前完成所有的
    需求分析、在以其为基础进行
    系统设计、编程工作要在前两项工作完成后再进行。


相较于瀑布开发方法,OO开发方法更适合迭代开发。


1.1.2 面向对象的主要概念





  • 对象:是对现实世界中客观存在的事物进行抽象描述。



  • 封装:是指将对象属性和操作结合在一起而构成一个独立的对象。



  • 继承:是指字类可以拥有父类的全部属性和操作。



  • 消息:对象之间进行交互时所传递的通信信息。



  • 多态:子类继承了父类之后,可以拥有不同的数据类型或表现出不同的特性/行为。



  • 关联:对象之间的连接称为
    链接,而存在对象连接的类之间的联系称为关联。



  • 聚合:在OO技术中指一个复杂的对象分解为几个简单的方法。


1.1.3 面向对象开发的优点





  • 自然性:指开发中总是以对象的形式描述现实客观的事务,因此在分析和设计系统需求时总是能够很自然地定义各类对象。



  • 重用性:指一次创建的类和对象能够多次使用。


1.2 OO开发中的三层设计


面向对象系统中相互联系的所有对象分成三类:问题域类GUI类数据访问类





  • 问题域类:指和用户相关的对象类。



  • GUI类:方便用户与问题类进行交互。



  • 数据访问类:实现问题域类与数据库的交互。



在实际开发中也会根据各种需求和化分出不同的类



1.3 UML简介


统一建模语言(UML)是一种语言,也是系统建模的标准。


1.3.1 系统建模


系统设计中采用模型化设计的重要原因是管理系统设计的复杂性。


模型是真实事物的抽象,而系统模型则是在模型的基础上去掉了任何无关或可能引用混淆的细节信息。在面向对象开发中,常用UML作为建模语言。


1.3.2 UML的发展



怎么发展我不知道,我只知道我不想了解它怎么发展。



1.3.3 UML的构成


UML的核心是由视图模型元素通用机制组成,其中模型元素由事务关系组成。



也有说法是UML由构造块、规则、通用机制三部分组成,其中构造块由事物、关系、图组成,而规则含有模型元素的其它概念,所以基本上不会差多少。






  • 视图:是表达系统的某一方面特征的UML建模元素的子集,由一个或多个图组成对系统某个角度的抽象。



  • 图:由各种图片组成,用于描述一个视图的内容,是某一个抽象层上对建模系统的抽象表示。



  • 模型元素:包含了事物和事物之间的各种联系(关系),其中事物描述了面向对象概念,如类、对象等。



  • 通用机制:用于为模型元素提供额外信息,如注释,同时还提供了用户对UML的拓展机制。


不管各资料如何解释UML的组成,其作为面向对象的设计方法所使用的语言,则终是由面向对象的四个模型层次定义了UML的全部内容,四层结构自下向上如下:





  • 用户模型层:这个层次在不同的标准/场合中也有很多不同的名称,如
    信息层
    数据、对象模型层
    实例模型层等等,该层是模型层和元模型层概念的实例,MOF的描述中该层是执行模型时所创建的运行元素组成。



  • 模型层:是元模型的实例,用于描述对象的属性等信息。



  • 元模型层:是组成UML的基本元素,包含了面向对象和面向组件的概念。该层定义了模型层的属性信息,而其又是元元模型层的实例。



  • 元元模型层:用于描述元模型的体系结构,定义了元模型的原型和规则。该层组成了UML最基本的元素
    事物,代表要定义的所有事物,其虽然位于结构的最上层,但元元模型层还能是某一层的"实例"。


1.4 UML视图


1.4.1 用例视图


用例视图强调从系统的外部参与者(用户)角度需要的功能,描述系统应该具有的功能。用例视图是其他视图的核心,其内容直接驱动了其它视图的开发,即系统需要提供的功能都会用用例视图进行描述,如果用例视图被修改,也会对其它视图造成影响。


1.4.2 逻辑视图


逻辑视图注重于描述系统功能的内部,即提出对用例视图中的功能的实现。其既使用类图对象图描述系统的静态结构,也用状态图时序图协作图活动图描述系统内部的动态协作关系。


1.4.3 并发视图


并发视图主要考虑资源的有效利用、代码的并行执行以及系统中异步事件的处理,也需要处理线程之间的通信和同步。其主要使用状态图协作图活动图进行描述。


1.4.4 组件视图


一个组件也可以看作是一个模块,组件视图是描述系统的实现模块以及它们之间的依赖关系,其描述主要也就是组件图


1.4.5 部署视图


部署视图显示系统的物理部署,描述位于节点上的运行实例的部署情况,也允许评估分配结果和资源分配。部署视图一般使用部署图描述。


1.5 UML图


UML 1.x提供九种不同的图,分有静态图动态图两类:





  • 静态图:用例图、类图、对象图、组件图和部署图。



  • 动态图:顺序图、协作图、状态图和活动图。


UML 2.x将静态图和动态图化分成7+6种,即总共有13种:





  • 静态图:
    包图
    用例图
    类图
    构件图
    部署图
    对象图
    组合结构图



  • 动态图:
    活动图
    状态机图
    顺序图
    定时图
    交互概览图
    通信图


需要注意的是UML1.xUML2.x相较,后者新增了包图组合结构图交互概览图定时图,并且将状态图协作图分别更名为状态机图以及通信图,且在上述的动态图中,后四者都是有消息概念的交互图


1.5.1 用例图


用例图显示多个外部参与者以及它们与系统提供的用例之间的连接。用例是系统中的一个功能单元,可以被描述为参与者与系统之间的一次交互作用。




image-20210316210532602


1.5.2 类图


类图以类为中心,描述了类于类之间的连接关系:关联依赖特殊化



1. UML笔记 - UML与面向对象

image-20210316210547480


1.5.3 对象图


对象图使用与类图相似的符号描述,而与类图不同的是其描述的是类的多个对象实例之间的关系。


[无图,懒得做]


1.5.4 状态图


状态图是对类描述的补充,用于描述类的对象可能所具备的状态,以及引起状态改变的事件。状态之间的变化称为转移,事件的发生会触发状态间的转移。



1. UML笔记 - UML与面向对象

image-20210316210603675


1.5.5 顺序图


也成为时序图,用于显示多个对象之间的动态协作,侧重于描述对象之间发送消息的时间顺序。



1. UML笔记 - UML与面向对象

image-20210316211012982


1.5.6 协作图


协作图用于对一次交互有意义的对象和对象间链建模,描述了消息的交互以及描述对象以及它们之间的关系。



1. UML笔记 - UML与面向对象

image-20210316211325916


1.5.7 活动图


活动图用于描述执行算法的工作流程中设计的活动。



1. UML笔记 - UML与面向对象

image-20210316211420485


1.5.8 组件图


组件图用代码组件来显示代码物理结构,一般是用于实际的编程中。



1. UML笔记 - UML与面向对象

image-20210316211459552


1.5.9 部署图


部署图用于描述系统的硬件和软件物理结构,既描述了实际动计算机和节点,也描述了它们之间的连接和连接类型。



1. UML笔记 - UML与面向对象

image-20210316211554101


1.5.10 其他图


上述的图是UML 1.x所定义的九种图,除了没有说明包图外,其它的基本上应该都能用来初期学习了,在后续是也会用到UML 2.x的概念的,大概,是吧。


1.6 模型元素


1.6.1 事物


事物是UML模型中面向对象基本的模块,属于静态部分,代表着物理上或概念上的元素。事物也分有四种:结构事物动作事物分组事物注释事物


1. 结构事物


每一个结构事物都有自己的图形表示,用于组成各种图,共有七种类型:类、接口、协作、用例、活动类、组件和节点。





  • 类:是对具有相同的属性、方法、关系和语义的对象的抽象,一个类可以有一个或多个接口。



  • 接口:是为类或组件提供特定服务的一组操作的集合。



  • 协作:定义了交互操作,一个给定的类可以是几个协作的组成部分,这些协作代表构成系统模式的实现。



  • 用例:描述系统中特定参与者执行的一系列动作。



  • 活动类:是类对象有一个或多个进程或线程的类。



  • 组件:是实现了一个接口集合的物理上可替换的系统部分。



  • 节点:是运行时存在的一个个物理元素,它代表一个可计算的资源。



1. UML笔记 - UML与面向对象

image-20210318011909550


2. 动作事物


动作事物是UML模型中的状态部分,代表时间和空间上的动作,最基本的元素是交互状态机





  • 交互:是一组对象在上下文中,为达到特定目的而进行的一系列
    消息交换组成的动作。



  • 状态机:由一系列对象的
    状态组成。



1. UML笔记 - UML与面向对象

image-20210318012803351


3. 注释事物


注释事物是UML中模型元素的解释部分。



1. UML笔记 - UML与面向对象

image-20210318012926590


1.6.2 关系


UML中关系分关联关系依赖关系泛化关系实现关系聚合关系


1. 关联关系


关联关系连接元素和链接实例,它连接两个模型元素。



1. UML笔记 - UML与面向对象

image-20210318013616366


2. 依赖关系


依赖关系描述一个元素对另一个元素的依附。



1. UML笔记 - UML与面向对象

image-20210318013839366


3. 泛化关系


又名继承关系,即一个元素是另一个元素的特例。



1. UML笔记 - UML与面向对象

image-20210318014715669


4. 实现关系


实现关系描述一个元素实现另一个元素。



1. UML笔记 - UML与面向对象

image-20210318015111295


5. 聚合关系


聚合关系描述元素之间部分与整体的关系。



1. UML笔记 - UML与面向对象

image-20210318015538923


1.7 通用机制


通用机制可以为UML模型元素增添注释、信息或语义,还能够对UML进行拓展。通用机制包括修饰注释规格说明拓展机制四种。


1.7.1 修饰


修饰是为图中的模型元素增加语义而提供了可视化表示。通常可以对元素的图形和文字进行修饰。




image-20210318020602240


1.7.2 注释


注释是以自由文本的形式出现的,可以附加到任何模型中的任意位置,用于为模型元素添加额外信息与说明。




image-20210318020637635


1.7.3 规格说明


规格说明是对模型元素本身的描述,模型元素应具有数据值特性,其中特性用名称和标记值定义,而标记值是一种特定的类型,如整形或字符串。


1.7.4 拓展机制


UML允许在控制的方式下进行拓展,而使用拓展机制可可以定义使用自己的元素。UML拓展机制由构造型标记值约束构成。


1.8 使用UML建模


从软件开发的角度出发,在进行面向对象软件开发建模时有需求分析分析设计构造测试





  • 需求分析:定义了客户的需求以及系统对应的功能,使用的是UML的用例图,描述系统
    需要做什么



  • 分析:主要考虑功能内部逻辑的问题,可以用逻辑视图和动态视图来描述,但仅针对问题域类建模,不定义系统解决方案的细节。



  • 设计:将分析阶段的结果进行细化分析。



  • 构造:敲代码。



  • 测试:通常分
    单元测试
    系统测试
    接受测试




推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 关于CMS收集器的知识介绍和优缺点分析
    本文介绍了CMS收集器的概念、运行过程和优缺点,并解释了垃圾回收器的作用和实践。CMS收集器是一种基于标记-清除算法的垃圾回收器,适用于互联网站和B/S系统等对响应速度和停顿时间有较高要求的应用。同时,还提供了其他垃圾回收器的参考资料。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
author-avatar
HE-KILL-MY-EGO
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有