第一章 面向对象与UML建模

1.1 面向对象思想及其应用简介

计算机技术发展,设计问题空间广阔,程序语言无法担任描述问题的重任,解决问题的关键不再是如何构建系统,而是如何理解系统问题的本质和如何准确地描述。
越来越多的公司转向面向对象技术。 面向对象思想表示现实世界是由类(对象)及其关系所组成,都具有结构和行为两个特征。

1.1.1 面向对象的问题描述

类是最最基本实体,设计时静态逻辑实体。
对象是类的实例,运行时的动态实体。
实体的3种行为:简单、连续、状态。
简单:没有记忆比如数学公式
连续:依赖于过去的连续行为,比如pid.
状态:依据触发事件改变状态,通过状态机实现。也称反应式系统比如嵌入式和用户交互(GUI)。

子系统和组件:中间部分,更具逻辑意义。(类元:描述事物的离散概念)有多个类元组成,类元之间通过各种关系进行协作和交互。
协作通常反应结构关系,交互反应类元实例(对象)的动态行为。结构关系通过协作图/类图描述,行为关系通过顺序/通信图描述。

系统:常用功能说明。黑盒/用户视角秒速。避免传统系统需求通过文本描述,考虑主观性等缺陷,加大需求分析比重,通过使用UML工具建模而使问题早期发现,通过迭代增量式开发兼容需求变更,通过用例来准确捕获系统需求。

1.1.2 面向对象的基本特征

抽象:更高逻辑层面提取问题的本质特征。相同属性和行为的对象对象被分组为一个类。
继承:公共特征提取组成父类叫泛化,继承父类添加自己属性/操作叫特化。
封装:相互作用紧密实体绑定为一个整体,整体之外隐藏必要的实现细节,例如显示器对CPU.
多态:相同操作不同的动作。

1.1.3 面向对象的其他重要概念

模式:已验证的通用问题的解决方案。分析、架构、设计和实现都存在,一般用在设计阶段,分为结构/行为模式。
复用:已存在制品的使用 。减少开发时间、节约开发成本、增加系统稳定性和可靠性。可以是一个函数、类、设计模式、分析模型等。
架构:软件系统的组织。实体、接口、协作的组合风格。全局性和策略性。体系结构:嵌入式系统范围内机械、电子和软件组成的系统构成。
框架:构建完整应用的一种程序结构。UML2.0中是包的构造型,某一领域中的应用提供可扩展的模板。部分完整的应用。
用例驱动:沿着一个从用例开始的工作流程进行的。反映了系统外部参与者与系统之间交互顺序的规格说明。目的是定义应用系统中表示某个实体的一个完整行为。
模型驱动:作用于软件周期中,作为特定目标的实施依据。是从一个特定的视角对应用系统进行的完整抽象。采用结构和行为视角并通过类模型、交互模型、状态模型形成的框架对应用系统建模描述。
迭代式开发:给系统构建带来灵活性。首先开发基点,然后逐步扩大系统范围,添加属性/行为。会交织不同的阶段。
职责分配:对多对象系统职能分配时根据不同的优化要求所采取的原则。就近解决、低耦合、高内聚、Liskov替换、开闭准则。

1.2 UML建模的基本概念

1.2.1 模型

模型是集成的、相互关联的抽象集合,准确地描述了要实现的系统。模型有语义和语义的用户视图两部分组成。语义是含义的正式说明。视图时语义在某个特定视角的可见表示法中的投影。
模型的结构主要是识别建立系统的各个实物以及它们间的关系。模型的行为定义了系统执行时结构类元是如何工作和交互的,从整体外部功能和内部观察协作两个视角完成。外部功能可通过用例、状态、活动图,内部协作可通过顺序、协作、活动图。
通常系统分析中首先从功能入手,转化成用例图来对系统行为建模。系统作为整体行为用状态图来建模,二作为某个具体功能侧面交互可用场景的顺序图来建模。
子系统级别的结构描述成为框架。结构维度用类图或者协作图建模。行为维度通过顺序图。
建模最底层是个体的类和对象,结构维度通过属性,行为维度通过操作。状态图对整个类/对象行为建模,活动图对算法建模。

1.2.2 UML建模概念简介

静态事物:用雷表达应用系统中的概念。类是一组对象。多个类可泛化,子类可继承。
设计构造:结构化类元扩展了类,表现为一组通过关系连接在一起的类的集合。
布置构造:节点,定义了物理位置。工件被布置在节点上。
动态行为:与外界交互;相关对象通信;不同活动的演变。
孤立对象:状态机。
交互:结构化类元/协作,各部分之间传递的消息流。交互用序列/通信图。
活动:一段计算过程的执行,用一组活动节点表示,各节点用控制流和数据流连接起来。
用例视图:对搜友行为视图起指导作用。序列图和文本。
模型组织:大型系统,建模信息必须划分成连贯的部分。对于小型系统,也要求将整个模型组成大小适当的具有依赖关系的包。
特性描述:构造型是一种新的模型元素,附加了约束,具有新的解释和图标。

1.2.3 uml的构造事物

三种构造块:实物;关系;图。实物是模型中最具代表成分的抽象。关系把事物结合在一起;图是相关事物的集合。
结构事物:名词元素,通常是静态部分,描述概念和物理实体。7种:类、接口、协作、用例、主动类、组件和接点。

 类:

接口:获得的服务申明。目的是将实现和具体类元的依赖种分离出来。

协作:完整的交互,描述了结构。

用例:一组动作序列的描述。包括常规主线行为和常规顺序的变化,比如可选顺序、异常行为和错误处理。

主动类:进程/线程,拥有控制任务,与其他主动类对象并发。

组件:一个逻辑/物理的可替代的模块化组件。

节点:运行时存在的物理实体。表示一种可计算的资源,通常至少有一些记忆能力和处理能力,比如显示器和处理器。组件可驻留在一个节点内,一般在布置图中出现。

行为事物:动词,描述了跨越时间和空间的行为。2种:交互和状态。

交互:消息在对象间交换。

状态:单一对象(类元)生命周期中满足满足特定条件,执行某些活动/等待时间的一种行为状况。状态分简单、复合、子状态机。

分组事物:UML模型的组织部分,主要是包。

包:组织实体的常规工具,拥有自己的内容并可定义命名空间。一种通用的名称空间,恶意拥有任何类型的模型元素。存粹是概念上的(仅在设计开发时存在)。

注释事物:描述、说明和标注任何事物。在模型级别对模型实体的说明,有重要影响,如对实体的约束。系统的非功能性(实时性、资源限制)建模主要通过约束实现。

1.2.4 UML的关系和图

UML构造事物椒单词通过关系构成了UML句子,一个以上的句子在一起构成了UML图。图就是模型。
1.UML中的关系:依赖;关联;泛化、实现。

2.UML中的图:模型元素集。

类图是系统结构方面的最重要的视图,动态特征在其他视图比如状态/通信。分析中概念的建模,设计中协作的建模以及各类模式都是通过类图实现。

对象图

  内部结构图

  协作图

  组件图

  用例图

  状态图

  活动图

  顺序图

  通信图

  布置图

  包图

  时间图

UML是一种语言,句子是事物和关系,段落是多个句子也叫图,每一种图构成描述事物的一个侧面视图,文章是所描述事物的模型,也就是说多个视图组成。
UML中,各种图都可以归结到结构和行为或者静态和动态两个方面。

  实例:用例图和顺序图描述各级别需求;类图和协作图确定系统和子系统级的静态和交互结构,顺序图捕获系统和子系统级别的交互行为;状态图确立每一个活动对象(任务,进程)的全景行为;活动图设计状态内部货对象方法;布置图适合多控制器系统。

1.3 基于模型的计算系统

狗窝->平房->别墅->大厦
建模是对索要认识的事物进行抽象的过程,也就是透过现象看本质的过程。欧姆定律简单电阻对象建模,微分对pid建模;状态机对离散状态行为建模;状态内又可以递归上述过程。

面向对象嵌入式系统开发笔记1相关推荐

  1. 嵌入式系统开发笔记0_0:目录

    本系列文章将向大家介绍嵌入式系统开发的各方面知识. 本系列文章所介绍的知识和内容,除电路图设计外,其它均采用开源系统,所以你不会在这个系列文章中看到Keil.IAR等软件. 本系列文章涉及C.C++. ...

  2. 面向对象嵌入式系统开发7-嵌入式系统的实现

    面向对象嵌入式系统开发7-嵌入式系统的实现  如果说嵌入式系统的面向对象分析与设计涉及到抽象.思考和经验的话,那么嵌入式系统的实现则涉及更多的实施细节.无论使用咋样前言的技术方法,最终都需要把整个系统 ...

  3. 面向对象嵌入式系统开发4-嵌入式系统分析

    面向对象嵌入式系统开发4-嵌入式系统分析 4.1 嵌入式系统分析的内容与目标  分析的目的是定义待开发系统的基本性质.所谓基本性质指的是如果没有他们,系统机会出错或者不完整的那些性质.换句话说&quo ...

  4. 嵌入式系统开发笔记25:win10防火墙打开特定端口

    本系列文章将向大家介绍嵌入式系统开发的各方面知识. 本文将向大家介绍dakaiwin10防火墙特定端口的方法. 1.引言 win10上位机编写程序,启动TCP服务器应用程序,并绑定1000端口:lin ...

  5. 嵌入式系统开发笔记2:Linux的主流发行版本

    本系列文章将向大家介绍嵌入式系统开发的各方面知识. 本文将向大家介绍Linux的主流发行版本. 本文为转载文章,原文网址:Linux各个发行版本对比与简介 首先我们要能够清晰的区分Linux系统内核与 ...

  6. 嵌入式系统开发笔记80:应用Qt Designer进行主界面设计

    前言   本篇文章讲解PyQt的基本使用方法,我们将应用Qt Designer来设计一个主界面,学习完本篇文章的内容后,你将获得如下技能.   (1)在VS Code中启动Qt Designer    ...

  7. 嵌入式系统开发笔记91:认识ARM微控制器架构

    文章目录 前言 一.ARM 二.ARM微控制器的市场占有率 1.95%的智能手机 2.90%的平板电脑 3.96%的硬盘驱动器 4.85%的无人机 5.83%的数字电视 6.75%的工业机器人 三.A ...

  8. 嵌入式系统开发笔记81:嵌入式系统的本质

    文章目录 前言 一.什么是嵌入式系统? 二.什么是单片机系统? 三.什么是计算机? 1.世界上最早的计算机(计算器) 2.机械计算机(计算器) 3.模拟电子计算机 4.第1台数字电子计算机 5.第1台 ...

  9. 嵌入式系统开发笔记107:层次化软件设计思想

    文章目录 前言 一.嵌入式系统设计的本质 二.基于寄存器结构的程序设计 三.嵌入式系统优良程序的评判标准 四.计算机上的软件分层 五.嵌入式程序的分层设计 前言   本文以思维导图的形式介绍层次化软件 ...

最新文章

  1. 神器:REST测试工具[wiztools.org restclient]客户端Jar依赖Java安装环境
  2. 一起谈.NET技术,ASP.NET Eval如何进行数据绑定
  3. 基本的Socket通信
  4. CodeSmith基础(二)
  5. vuex保存用户信息_Vuex状态管理
  6. iphone开发我的新浪微博客户端-用户登录准备篇(1.1)
  7. HugeGraph Server/Hubble安装使用
  8. 【特别关注】2021数据技术嘉年华直播观看指南
  9. 华为云数据库GaussDB(for Cassandra)揭秘第二期:内存异常增长的排查经历
  10. python内置模块~shutil
  11. bzoj 1552: [Cerc2007]robotic sort bzoj 3506: [Cqoi2014]排序机械臂(splay区间翻转)
  12. 一分六钱用计算机怎么算,交行信用卡分期付款计算器:5000元分6期手续费
  13. idea的tomcat改端口号_Tomcat修改端口
  14. Windows中删除文件时提示没有权限怎么办?
  15. ARM发布Cortex-X1,是为了向苹果自研A系列处理器发起冲击吗?
  16. linux安装vsftpd
  17. cobbler简单入门
  18. vue2、vue3中自定义v-model的使用和区别
  19. 使用UmiJS封装请求umi-request
  20. Centos7中创建RSA非对称密钥对及搭建私有CA并为客户端颁发证书

热门文章

  1. AD9361结构及功能解析
  2. ret_from_fork
  3. 如何理解产品的海关编码(HS Code),编码归类的主要依据是什么?
  4. leetcode 滴滴_拿到腾讯字节快手offer后,他的LeetCode刷题经验GitHub获1300星
  5. 三千字乱弹QQ和360大战【慎入】
  6. 关于地方金融机构穿透式监管的几个观点
  7. c语言编程 打印田字格,python用函数输出田字格
  8. 新版Github+jsDelivr搭建永久免费的图床全球CDN加速
  9. android手机如何接收google安全码
  10. cf1362E. Johnny and Grandmaster,贪心+数学,一个序列划分成两部分,差最小