农业物联网应用软件设计-软件设计模式与方法_第1页
农业物联网应用软件设计-软件设计模式与方法_第2页
农业物联网应用软件设计-软件设计模式与方法_第3页
农业物联网应用软件设计-软件设计模式与方法_第4页
农业物联网应用软件设计-软件设计模式与方法_第5页
已阅读5页,还剩224页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

农业物联网工程设计与实施项目六物联网应用软件设计6.3UML中的类图1类、接口和类图

1.类(Class)类是指具有相同属性、方法和关系的对象的抽象,它具有封装性、继承性和多态性等三大特性。在UML中类包含:⑴类名(Name)是一个字符串,如:Student。⑵属性(Attribute)是指类的特性,即类的成员变量。格式:[可见性]属性名:类型[=缺省值]注意:“可见性”表示该属性对于类外的元素而言是否可见,在类图中分别用符号+、-、#、~表示。如:-name:String⑶操作(Operations)是类的成员方法。格式:[可见性]名称(参数列表)[:返回类型]项目六物联网应用软件设计6.3UML中的类图下图是学生类的UML表示:项目六物联网应用软件设计6.3UML中的类图1类、接口和类图

2.接口(Interface)接口是一种特殊的类,它包含抽象操作,但不包含属性。它描述了类或组件对外可见的动作。下图是图形类接口的UML表示:项目六物联网应用软件设计6.3UML中的类图1.类、接口和类图

3.类图(ClassDiagram)类图是用来显示系统中的类、接口、协作以及它们之间的静态结构和关系的一种静态模型。右边是“计算长方形和圆形的周长与面积”的类图:项目六物联网应用软件设计6.3UML中的类图2类之间的关系

1.依赖(Dependency)关系依赖关系是一种使用关系,它是对象之间耦合度最弱的一种关联方式。在代码中,某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。项目六物联网应用软件设计6.3UML中的类图2类之间的关系

2.关联(Association)关系关联关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,如老师和学生、师傅和徒弟、丈夫和妻子等。关联关系分为一般关联关系、聚合关系和组合关系,我们先介绍一般关联。关联可以是双向的,也可以是单向的。项目六物联网应用软件设计6.3UML中的类图2类之间的关系

3.聚合(Aggregation)关系聚合关系是强关联关系,是整体和部分之间的关系,是has-a的关系。聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。例如,学校与老师的关系,学校包含老师,但如果学校停办了,老师依然存在。项目六物联网应用软件设计6.3UML中的类图2类之间的关系

4.组合(Composition)关系组合关系也表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系,是contains-a关系。整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。例如,头和嘴的关系,没有了头,嘴也就不存在了。项目六物联网应用软件设计6.3UML中的类图2类之间的关系

5.泛化(Generalization)关系泛化关系是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与子类之间的关系,是一种继承关系,是is-a的关系。项目六物联网应用软件设计6.3UML中的类图2类之间的关系

6.实现(Realization)关系实现关系是接口与实现类之间的关系。在UML类图中,实现关系使用带空心三角箭头的虚线来表示,箭头从实现类指向接口。例如,汽车和船实现了交通工具,其类图如下:项目六物联网应用软件设计6.3UML中的类图农业物联网工程设计与实施项目六物联网应用软件设计6.3嵌入式软件开发技术与方法嵌入式软件的应用与特点微处理器已嵌入到你见到的几乎所有的电器中汽车、飞机、停车场、超市、手机嵌入式软件的开发需求日益激增多线程编程风格&嵌入式软件高可靠性嵌入式软件中常使用的C语言功能和特性多数学生具有高级语言编写桌面应用程序的经验嵌入式应用程序的特点可靠性性能成本项目六物联网应用软件设计6.3嵌入式软件开发技术与方法嵌入式软件的成本消费产品的流行性和物美价廉的需要大批量生产的需要快速生产的需要项目六物联网应用软件设计6.3嵌入式软件开发技术与方法嵌入式软件的可靠性嵌入式软件及其系统运行时间可能是一天、一月、一年等。运行中发生错误,无法重启。良好的编程实践能力&充分的测试项目六物联网应用软件设计6.3嵌入式软件开发技术与方法嵌入式软件的性能指标应用程序新技术多任务处理和调度与各类外部设备的交互方法、速度、成本、复杂度等汇编语言的使用由于数的可表示范围,程序中关于越界的处理机制项目六物联网应用软件设计6.3嵌入式软件开发技术与方法嵌入式软件设计与特点嵌入式软件全生命周期开发工具链硬件与软件的Co-Design:Verilog+C=?VerilogHDL是应用广泛的硬件描述语言.VerilogHDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等。适合算法级,寄存器级,逻辑级,开关级、系统级和版图级等各个层次的设计和描述.

驱动程序的设计和生成技术(嵌入式软件开发中最令人头疼的问题)嵌入式软件的可靠性问题:正确性验证技术、测试技术、调试技术等(可靠性问题是嵌入式软件开发的基本问题)可重构计算(ReconfigurableComputing)技术可构件化的嵌入式实时操作系统及其开发环境项目六物联网应用软件设计6.3嵌入式软件开发技术与方法开发技术、开发方法——设计流程—自顶向下或自底向上设计需求设计说明体系结构构件设计系统集成自顶向下设计自底向上设计项目六物联网应用软件设计6.3嵌入式软件开发技术与方法需求分析作用使用户和设计者有效交流、沟通,明确设计目标设计者-设计什么?有哪些要求?用户-将得到的系统是什么样的?目标形成需求文档内容功能性需求做什么?输入,输出,功能,……非功能性需求其他属性可靠性,速度,功耗,……成本,大小,重量,设计时间,……项目六物联网应用软件设计6.3嵌入式软件开发技术与方法GPS移动地图系统:示例项目说明名称GPS移动地图目的为司机等用户提供图形状的移动地图输入一个电源开关、两个操作按钮、GPS信号输入输出LCD显示器,分辨率为400×600功能可接5种GPS接收器;三种用户可选的地图比例;总是显示当前经纬度性能0.25秒内即可更新一次屏幕,常温下工作生产成本1500元(人民币)功耗四节电池供电应连续工作8小时,功耗约100mW尺寸重量尺寸不大于20cm×30cm,重量不大于0.25公斤GPS移动地图是一种手持设备,该设备为用户(如汽车驾驶员)显示他当前所处位置周围的地图;显示的地图内容应随用户以及该设备所处位置的改变而改变。该设备从GPS上得到其位置信息,移动地图看起来类似纸张上的地图。针对用户的初步要求的系统需求表项目六物联网应用软件设计6.3嵌入式软件开发技术与方法评价标准正确性无二义性完整性可检验性一致性可修改性可追踪性项目六物联网应用软件设计6.3嵌入式软件开发技术与方法

硬件单片机,X86,PowerPC,ARM,MIPS,……板级支持程序嵌入式操作系统应用软件监控程序嵌入式计算机系统基本结构项目六物联网应用软件设计6.3嵌入式软件开发技术与方法嵌入式软件子系统项目六物联网应用软件设计6.3嵌入式软件开发技术与方法嵌入式系统的开发——流程需求分析及规格说明选择主要芯片确定编程语言选择开发环境RTOS的使用选择开发方案设计与调试测试与集成测试工具与其他辅助设备产品项目六物联网应用软件设计6.3嵌入式软件开发技术与方法什么是嵌入式开发环境:源程序编译器目标文件链接器可重定位程序定位器可执行文件编译器/汇编器/链接定位器调试器/仿真器主机(Host)及其工作平台实时操作系统(可选)目标评估系统(可选)测试工具(软件/硬件/协议等,可选)其他辅助设备(可选)

典型的开发环境项目六物联网应用软件设计6.3嵌入式软件开发技术与方法选择实时操作系统RTOS对于复杂的嵌入式系统应考虑使用RTOSRTOS的作用:提供API(应用编程接口):操作系统为应用程序员提供可供调用的API,允许程序员致力于应用程序的开发

简化系统设计:实时嵌入式系统比非实时系统更难设计.使用实时多任务的内核能简化系统设计,可将复杂的应用程序分为几个不同的任务,由内核去对他们协调处理实验平台如下支持ARM的实时操作系统:uC/OSLinux项目六物联网应用软件设计6.3嵌入式软件开发技术与方法嵌入式系统编程语言DatafromJapanITRONsurveyfornewembeddedsystems项目六物联网应用软件设计6.3嵌入式软件开发技术与方法实时内核的作用有效管理响应时间管理并发线程的CPU时间管理并发线程间内存的使用比如专门用于消费市场的典型的小型嵌入式系统内核标准化工作,确立标准,使各种嵌入式内核能够兼容。项目六物联网应用软件设计6.3嵌入式软件开发技术与方法如何构建嵌入式应用程序-1桌面应用程序的构建和加载运行工具软件组件过程:编译器或汇编器产生一个或多个目标文件,与动态连接库或运行时库进行链接,生成一个可执行程序,作为文件存放在磁盘上。运行:通过操作系统的加载程序,将可执行文件从磁盘加载到内存,运行。桌面系统可运行许多程序,可快速容易地加载运行。项目六物联网应用软件设计6.3嵌入式软件开发技术与方法如何构建嵌入式应用程序-2嵌入式系统软件工具软件组件过程:编译器或汇编器产生一个或多个目标文件,与实时内核或可充入函数库进行链接,经重定位后,生成一个ROM映像文件,经ROM烧录器,存入ROM只读存储器中。运行:通电后通过程序初始化,将可执行映像从磁盘加载到RAM存储器中,运行。桌面系统可运行许多程序,可快速容易地加载运行。项目六物联网应用软件设计6.3嵌入式软件开发技术与方法嵌入式系统开发及其环境

嵌入式系统开发需要宿主机(Host)和目标机(Target)的支持。宿主机属于嵌入式软件的开发平台,宿主机用于嵌入式软件的设计、实现、调试和运行等;目标机属于最终系统的运行平台,目标机作为可执行程序的最终运行平台,目标机是嵌入式系统的硬件部分,运行程序属于嵌入式系统的软件部分。项目六物联网应用软件设计6.3嵌入式软件开发技术与方法交叉开发环境是指用于嵌入式软件开发中使用的所有工具软件的集合一般包括文本编辑器、交叉编译器、交叉调试器、仿真器、下载器等工具。交叉开发环境由宿主机和目标机组成,宿主机与目标机之间在物理连接的基础上建立起逻辑连接。使得嵌入式软件可在两个平台上得以运行,项目六物联网应用软件设计6.3嵌入式软件开发技术与方法什么是交叉编译技术?把在宿主机上编写的高级语言程序,编译成可以运行在目标机上的代码,即在宿主机上能够编译生成另一种CPU(嵌入式微处理器)上的二进制程序。采用交叉编译技术的原因在于,嵌入式软件必须在开发过程中,进行反复调试才能产生正确的运行结果。此时才有必要将可执行程序移植到目标机上,移植技术关键在于在宿主机上可以生成目标机上运行的可执行程序。具有交叉编译技术的编译程序,实现了这一目标。项目六物联网应用软件设计6.3嵌入式软件开发技术与方法采用宿主机和目标机支持嵌入式系统开发的原因宿主机是用于开发嵌入式系统的计算机,一般为PC机或者工作站,具备丰富的软硬件资源,为嵌入式软件的开发提供方便易行的全过程支持。目标机即所开发的嵌入式系统,是嵌入式软件的运行环境,其硬件软件是为特定应用定制的,一般由处理器、装入嵌入式系统的ROM映像的ROM内存芯片、堆栈、中间变量、缓冲区、外设和接口组成。项目六物联网应用软件设计6.3嵌入式软件开发技术与方法嵌入式软件开发的实现阶段可分为三个步骤:生成、调试和固化运行。软件生成主要是在宿主机上进行,利用各种工具完成对应用程序的编辑、交叉编译和链接工作,生成可供调试或固化的目标程序。软件调试是通过交叉调试器完成软件的调试工作。调试完成后还需进行必要的测试工作。软件固化运行是先用一定的工具将应用程序固化到目标机上,然后启动目标机,在没有任何工具干预的情况下应用程序能自动地启动运行。项目六物联网应用软件设计6.3嵌入式软件开发技术与方法采用交叉调试方法的嵌入式软件开发存在一定的缺陷。比如:依赖硬件支持,必须有目标机或评估板;普通编程人员不易熟悉;开发成本高;可移植性、可扩展性不强;较难进行团队开发;开发周期较长等。项目六物联网应用软件设计6.3嵌入式软件开发技术与方法采用非交叉调试方式的优点即仿真开发方式,这几点理由在某种程度上,解决了交叉调试开发方法的缺陷。嵌入式应用的开发经常会遭遇这样的问题,由于经费和构建条件所限,缺少目标机环境、缺乏目标机芯片等资源。而开发过程又不可能停止,因此自然就提出了根据不同的应用需要,利用较易构建的仿真器件及仿真环境进行开发的方法。项目六物联网应用软件设计6.3嵌入式软件开发技术与方法软件仿真开发软件仿真开发(Simulator)的基本思路是,在宿主机机器上安装一种软件仿真器,即仿真程序,利用该仿真程序的运行,在宿主机上创建一个虚拟的目标机环境,再将应用系统下载到这个虚拟目标机上运行、调试。项目六物联网应用软件设计6.3嵌入式软件开发技术与方法软件仿真开发环境嵌入式软件开发人员只需要了解所使用的编程语言、编译器及其使用方法、操作系统系统API接口及系统函数,就可以实施并完成嵌入式软件的程序设计,生成虚拟机环境下可运行的可执行程序。可以在宿主机环境下查看到运行的结果,进行运行结果的分析,并反复进行软件的调试,最终生成一个认可的可执行软件。待时机条件具备时安装到目标机上运行。项目六物联网应用软件设计6.3嵌入式软件开发技术与方法实时软件分析设计方法

嵌入式实时软件系统的生命周期分为以下几个阶段:需求分析与详细说明:对系统功能及性能的需求进行描述。系统设计:任务分解,定义任务间接口关系。任务设计:按模块方式设计每个任务,定义模块间接口。模块设计与实现:完成每个模块的详细设计、编码和单元测试。任务与系统集成:任务单独运行及并发运行调试,查看每个任务的运行结果。系统测试:针对需求分析结果,对系统功能性能进行测试和验证。项目六物联网应用软件设计6.3嵌入式软件开发技术与方法一个基于实时操作系统内核的实时软件开发模型下图表示实时软件设计编程和运行层次结构。该图对实现实时应用程序功能设计接口和运行机制进行层次划分。指明基于操作系统内核进行应用开发的编程层次和接口。从而形成实时应用程序内部结构。项目六物联网应用软件设计6.3嵌入式软件开发技术与方法调用调度RTOS内核任务调度管理具体业务逻辑功能硬件系统RTOS内核系统函数接口实时软件结构图项目六物联网应用软件设计6.3嵌入式软件开发技术与方法实现具体实时应用业务逻辑一般采用分解任务的方法将一个实时应用功能划分为多个并发执行的任务。分配任务不同的优先级,赋予任务自主延迟功能,进行必要的任务通信,设置关键任务的中断响应。明确任务的执行条件、中断条件和挂起条件等因素。每个任务是系统中一个独立的执行调度单位和资源分配单位。调用RTOS内核系统函数接口,创建实时任务;任务的运行从接受内核调度开始,按照自身流程设计循环执行。直至系统运行结束。项目六物联网应用软件设计6.3嵌入式软件开发技术与方法实时应用软件功能运行界面实时操作系统内核系统硬件平台实时应用任务2实时应用任务1实时应用任务n……项目六物联网应用软件设计6.3嵌入式软件开发技术与方法任务模型的框架结构与构建

任务分解任务通信任务创建任务响应任务与内核连接项目六物联网应用软件设计6.3嵌入式软件开发技术与方法任务分解任务分解是如何将一个实时应用业务逻辑,按照任务的管理和控制接口,划分为若干独立的任务,并发运行,实现应用功能。简单地分为设计阶段、编码阶段。项目六物联网应用软件设计6.3嵌入式软件开发技术与方法任务分解的设计阶段、编码阶段设计阶段的主要工作包括:根据应用程序功能需求,将应用程序功能划分为若干并发任务。首先将需要并发执行的子功能确立为任务,任务优先级按响应的迫切程度确定。确定每个任务处理流程,确保完成任务功能。确定任务功能实现是否与其它任务的执行有关联。编码阶段的主要工作包括完成每个任务的程序设计。将任务流程使用C语言编写为独立的函数。根据应用需求,不同的任务也可共用同一个函数的代码段。由于实时任务有确定优先级,为确保低优先级任务有机会运行。每个任务函数中需包括睡眠、挂起、等待指定时间等一些自主放弃CPU的语句,调用内核函数实现。项目六物联网应用软件设计6.3嵌入式软件开发技术与方法技术、平台——开发平台

基于嵌入式实时操作系统µC/OS-II的内核及其软件开发工具BorlandC/C++V4.5,Makefile工程管理程序等,完成应用程序的设计、编码、编译、链接、运行等基本过程。项目六物联网应用软件设计6.3嵌入式软件开发技术与方法农业物联网工程设计与实施项目六物联网应用软件设计6.3面向对象的设计原则1

开闭原则

1.开闭原则的定义开闭原则(OCP):软件实体应当对扩展开放,对修改关闭。勃兰特·梅耶(BertrandMeyer)在1988年的著作《面向对象软件构造》中提出,这里的软件实体包括以下几个部分:1)项目中划分出的模块;2)类与接口;3)方法。2.开闭原则的重要性⑴对软件测试的影响,软件测试时只需要对扩展的代码进行测试就。⑵可以提高代码的可复用性。⑶可以提高软件的可维护性,易于扩展和维护。项目六物联网应用软件设计6.3面向对象的设计原则开闭原则的实现方法可以通过“抽象约束、封装变化”来实现开闭原则,即通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中。【例1.1】Windows的桌面主题设计。项目六物联网应用软件设计6.3面向对象的设计原则2里氏替换原则

1.里氏替换原则的定义里氏替换原则(LSP):继承必须确保超类所拥有的性质在子类中仍然成立。(面向对象技术的高峰会议)上发表的一篇文章《数据抽象和层次》里面提出来的。2.里氏替换原则的重要性⑴里氏替换原则是实现开闭原则的重要方式之一。⑵它克服了继承中重写父类造成的可复用性变差的缺点。⑶它是动作正确性的保证。即类的扩展不会给已有的系统引入新的错误,降低了代码出错的可能性。项目六物联网应用软件设计6.3面向对象的设计原则2.里氏替换原则的实现方法子类可以扩展父类的功能,但不能改变父类原有的功能。【例1.2】里氏替换原则在“几维鸟不是鸟”实例中的应用。分析:鸟一般都会飞行,如燕子的飞行速度大概是每小时可达120公里。但是新西兰的“几维鸟”,由于翅膀退化,因此无法飞行。//程序代码见附件说明:以上类图违背了“里氏替换原则”,要改。项目六物联网应用软件设计6.3面向对象的设计原则以上程序运行错误的原因是:几维鸟类重写了鸟类的setSpeed(doublespeed)方法,这违背了里氏替换原则。正确的做法是:取消几维鸟原来的继承关系,定义鸟和几维鸟的更一般的父类,如动物类,它们都有奔跑的能力。右边是其类图:项目六物联网应用软件设计6.3面向对象的设计原则3依赖倒置原则

1.依赖倒置原则的定义依赖倒置原则(DIP)的含义是:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。其核心思想是:要面向接口编程,不要面向实现编程。是ObjectMentor公司总裁RobertC.Martin于1996年在C++Report上发表的文章中提出的。2.依赖倒置原则的重要性⑴依赖倒置原则可以降低类间的耦合性。⑵依赖倒置原则可以提高系统的稳定性。⑶依赖倒置原则可以减少并行开发引起的风险。⑷依赖倒置原则可以提高代码的可读性和可维护性。项目六物联网应用软件设计6.3面向对象的设计原则3.依赖倒置原则的实现方法我们在实际编程中只要遵循以下四点,就能在项目中满足这个规则:⑴每个类尽量提供接口或抽象类,或者两者都具备。⑵变量的声明类型尽量是接口或者是抽象类。⑶任何类都不应该从具体类派生。⑷使用继承时尽量遵循里氏替换原则。【例1.3】依赖倒置原则在“顾客购物程序”中的应用。分析:如顾客类的shopping(ShaoguanShopshop)方法只访问韶关网店,如果该顾客想从另外一家商店(如:婺源网店WuyuanShop)购物,就要修改该方法的参数类型,这违背了“依赖倒置”原则。解决方法是:定义一个商店接口Shop,顾客类面向该接口编程,其类图如下。项目六物联网应用软件设计6.3面向对象的设计原则下面是顾客购物程序的类图,其程序源代码见附件。项目六物联网应用软件设计6.3面向对象的设计原则4单一职责原则

1.单一职责原则的定义单一职责原则(SRP)规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。由罗伯特·C·马丁(RobertC.Martin)于《敏捷软件开发:原则、模式和实践》一书中给出的。2.单一职责原则的重要性⑴降低类的复杂度。⑵提高类的可读性。复杂性降低,自然其可读性会提高。⑶提高系统的可维护性。可读性提高,那自然更容易维护了。⑷变更引起的风险降低。变更是必然的,如果单一职责原则遵守得好,当修改一个功能时,可以显著降低对其他功能的影响。项目六物联网应用软件设计6.3面向对象的设计原则4.单一职责原则的实现方法单一职责原则是最简单但又最难运用的原则,需要设计人员发现类的不同职责并将其分离,再封装到不同的类或模块中。而发现类的多重职责需要设计人员具有较强的分析设计能力和相关重构经验。【例1.4】大学学生工作管理程序。分析:大学学生工作主要包括学生生活辅导和学生学业指导两个方面的工作,其中生活辅导主要包括班委建设、出勤统计、心理辅导、费用催缴、班级管理等工作,学业指导主要包括专业引导、学习辅导、科研指导、学习总结等工作。如果将这些工作交给一位老师负责显然不合理,正确的做法是生活辅导由辅导员负责,学业指导由学业导师负责,其类图如下。项目六物联网应用软件设计6.3面向对象的设计原则大学学生工作管理程序的类图如下:项目六物联网应用软件设计6.3面向对象的设计原则5接口隔离原则

1.接口隔离原则的定义接口隔离原则(ISP)含义是:客户端不应该被迫依赖于它不使用的方法。2002年罗伯特·C·马丁在《敏捷软件开发:原则、模式和实践》一书中提出,它要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。2.接口隔离原则的重要性⑴将臃肿庞大的接口分解,可以预防外来变更的扩散。⑵接口隔离提高了系统的内聚性,减少了对外交互。⑶如果接口的粒度大小定义合理,能够保证系统的稳定性。⑷使用多个专门的接口还能够体现对象的层次。⑸能减少项目工程中的代码冗余。过大的接口里面通常放置许多不用的方法。项目六物联网应用软件设计6.3面向对象的设计原则5.接口隔离原则的实现方法在具体应用接口隔离原则时,应该根据以下几个规则来衡量:⑴接口尽量小,但是要有限度。⑵只提供调用者需要的方法,屏蔽不需要的方法。⑶了解环境,拒绝盲从。⑷提高内聚,减少对外交互。【例1.5】学生成绩管理程序。分析:学生成绩管理程序一般包含插入成绩、删除成绩、修改成绩、计算总分、计算均分、打印成绩信息、查询成绩信息等功能,如果将这些功能全部放到一个接口中显然不太合理,正确的做法是将它们分别放在输入模块、统计模块和打印模块等3个模块中,其类图如下。项目六物联网应用软件设计6.3面向对象的设计原则5.接口隔离原则的实现方法右边是学生成绩管理程序的类图://其程序代码见附件项目六物联网应用软件设计6.3面向对象的设计原则6迪米特法则

1.迪米特法则的定义迪米特法则(LoD)又叫作最少知识原则(LKP),其定义是:只与你的直接朋友交谈,不跟“陌生人”说话。1987年美国东北大学的IanHolland提出,后来又因为在经典著作《程序员修炼之道》而广为人知。迪米特法则中的“朋友”是指:当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等,这些对象同当前对象存在关联、聚合或组合关系,可以直接访问这些对象的方法。2.迪米特法则的重要性⑴降低了类之间的耦合度,提高了模块的相对独立性。⑵由于耦合度降低,从而提高了类的可复用率和系统的扩展性。项目六物联网应用软件设计6.3面向对象的设计原则6.迪米特法则的实现方法在运用迪米特法则时要注意以下六点:⑴在类的划分上,应该创建弱耦合的类。⑵在类的结构设计上,尽量降低类成员的访问权限。⑶在类的设计上,优先考虑将一个类设置成不变类。⑷在对其他类的引用上,将引用其它对象的次数降到最低。⑸不暴露类的属性成员,而应该提供相应的访问器(set和get方法)。⑹谨慎使用序列化(Serializable)功能。项目六物联网应用软件设计6.3面向对象的设计原则

【例】明星与经纪人的关系实例。分析:明星由于全身心投入艺术,所以许多日常事务由经纪人负责处理,如:与粉丝的见面会,与媒体公司的业务洽淡等。这里的经纪人是明星的朋友,而粉丝和媒体公司是陌生人,所以适合使用迪米特法则,右边是其类图:项目六物联网应用软件设计6.3面向对象的设计原则7合成复用原则

1.合成复用原则的定义合成复用原则(CRP)又叫组合/聚合复用原则(CARP)。它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。如果要使用继承关系,则必须遵循里氏代换原则。2.合成复用原则的重要性⑴它维持了类的封装性。因为成分对象的内部细节是新对象看不见的,所以这种复用又称为“黑箱”复用;⑵新旧类之间的耦合度低。这种复用所需的依赖较少,新对象存取成分对象的唯一方法是通过成分对象的接口;⑶复用的灵活性高。这种复用可以在运行时动态进行,新对象可以动态地引用与成分对象类型相同的对象。项目六物联网应用软件设计6.3面向对象的设计原则7.合成复用原则的实现方法合成复用原则是通过将已有的对象纳入到新对象中,作为新对象的成员对象来实现的,新对象可以调用已有对象的功能,从而达到复用。下面以汽车分类管理程序为例来介绍合成复用原则的应用。

【例】汽车分类管理程序。分析:汽车按“动力源”划分可分为汽油汽车、电动汽车等,按“颜色”划分可分为白色汽车、黑色汽车和红色汽车等,如果同时考虑这两种分类,其组合就很多。项目六物联网应用软件设计6.3面向对象的设计原则以下是用继承关系实现的汽车分类的类图:项目六物联网应用软件设计6.3面向对象的设计原则可能看出可以看出用继承关系实现会产生很多子类,而且增加新的“动力源”或者增加新的“颜色”都要修改源代码,这违背了“开-闭”原则,显然不可取。但如果改用组合关系实现就能很好地解决以上问题,其类图如下:项目六物联网应用软件设计6.3面向对象的设计原则农业物联网工程设计与实施项目六物联网应用软件设计6.3接入层核心技术与软件设计----接入层核心技术在物联网体系结构中,接入层位于感知层与网络层(或服务层)之间,由基站结点和接入网关组成,负责将感知层的异构组件联入IOT网络,完成数据与控制指令的双向传输。项目六物联网应用软件设计6.3接入层核心技术与软件设计1接入层的主要功能感知层信息的汇聚、校验和转换担任局域网络和主干网络之间的网关,完成数据的网络封包与传输目前在物联网应用系统中,接入层的职责主要由传感器网络承担。项目六物联网应用软件设计6.3接入层核心技术与软件设计2接入层核心技术2.1无线传感器网络(WirelessSensorNetwork,WSN)技术2.1.1WSNWSN是由部署在监测区域内的大量传感器单元结点组成,通过无线通信方式形成的一个多跳传输、自组织网络。WSN与感知层的传感器联系紧密,广泛应用在情境参数测量结点中。项目六物联网应用软件设计6.3接入层核心技术与软件设计2接入层核心技术2.1.2WSN体系结构结构组成:WSN是由无线传感器结点、汇聚结点、数据处理中心以及数据浏览中心等构成的一种新型信息获取系统。WSN网络层次:WSN网络层次结构继承了传统的ISOOSI层次模型,分为物理层、链路层、网络层、传输层和应用层,在此基础上,增加了纵向的能量管理和网络管理。项目六物联网应用软件设计6.3接入层核心技术与软件设计2接入层核心技术2.1.2WSN体系结构结点结构:在WSN结点的基本结构中,包括传感单元、数据处理单元、无线通信单元和能量单元,此外还可以包括定位子单元、承载网络通信单元等可选模组。项目六物联网应用软件设计6.3接入层核心技术与软件设计2接入层核心技术2.1.2WSN体系结构WSN组网结构通常有两种描述方式:平面拓扑结构,逻辑分层结构。前者常用于描述网路布设组织形式,后者在网络路由算法中常用。项目六物联网应用软件设计6.3接入层核心技术与软件设计2接入层核心技术2.1.3WSN特点硬件资源有限,计算能力和存储空间受限;电源容量有限,需要高效率的能源分配;无核心结点,对等网络;自组织结构,结点发现与路由配置自组织;多跳路由;动态拓扑,结点的接入与脱离都会造成拓扑结构的变化;结点数量众多,分布密集;传感器结点故障概率高,需要较好的容错性;项目六物联网应用软件设计6.3接入层核心技术与软件设计2接入层核心技术2.1.3WSN关键技术路由协议:为了在多跳数据传输路径中达到最优能源效率,路由协议称为WSN研究热点;常见的路由协议分类包括:能量感知路由协议:优先选择最小能耗路径;或均等使用结点能量路径;以数据为中心的路由协议:通过握手协商,仅向有需求的结点扩散数据,并在传输过程中对数据进行融合;如定向扩散协议DD,SPIN协议;基于地理位置的路由协议:在握手协商过程中,根据结点布设地理位置,只与相邻结点进行协商;需要定位技术支持;如GEAR协议;复合协议:这已成为目前研究热点,如基于逻辑分层结构的LEACH协议、PEGASIS协议,都是以能量效率为目标的、参考结点布设规律的路由协议;项目六物联网应用软件设计6.3接入层核心技术与软件设计2接入层核心技术2.1.3WSN关键技术网络拓扑控制:在满足网络覆盖度和连通度的前提下,通过功率控制和骨干网络节点选择,提出不必要的通信链路,生成一个高效的、优化拓扑结构。节点定位技术:确定节点的绝对位置或相对骨干节点的相对位置。除了结合地理定位的节点定位技术,还可采用通信跳段距离作为节点相对定位参考,如Amorphous算法;数据融合:由于WSN需要高密度散布传感器,以获取可靠地监测能力,信息冗余不可避免;为节约传输能量,需要对来自基层结点的信息进行融合;常见的数据挖掘算法有贝叶斯算法、神经网络算法等;网络安全技术:数据加密、数据包加密、信道加密,水印技术;无线通信技术:发展低功耗、短距离、简单可靠的物理层传输技术;如Zigbee技术;项目六物联网应用软件设计6.3接入层核心技术与软件设计2接入层核心技术2.1.3WSN关键技术网络拓扑控制:在满足网络覆盖度和连通度的前提下,通过功率控制和骨干网络节点选择,提出不必要的通信链路,生成一个高效的、优化拓扑结构。节点定位技术:确定节点的绝对位置或相对骨干节点的相对位置。除了结合地理定位的节点定位技术,还可采用通信跳段距离作为节点相对定位参考,如Amorphous算法;数据融合:由于WSN需要高密度散布传感器,以获取可靠地监测能力,信息冗余不可避免;为节约传输能量,需要对来自基层结点的信息进行融合;常见的数据挖掘算法有贝叶斯算法、神经网络算法等;网络安全技术:数据加密、数据包加密、信道加密,水印技术;无线通信技术:发展低功耗、短距离、简单可靠的物理层传输技术;如Zigbee技术;项目六物联网应用软件设计6.3接入层核心技术与软件设计2接入层核心技术2.2ZigBee技术2.1.1ZigBeeZigBee是一种短距离、低功耗的低俗无线通信技术,常用于环境监测与工业控制领域。ZigBee的物理层、介质访问层和数据链路层是基于IEEE802.15.4协议(WPAN)。在其之上建立网络层和应用支持层。项目六物联网应用软件设计6.3接入层核心技术与软件设计2接入层核心技术2.2ZigBee技术2.1.2ZigBee相关概念信道:ZigBee信道指通信频段,共27个,其中2.4GHz:250kb/sx16;915MHz:40kb/sx10;868MHz:20kb/sx1;网络号(PANID):ZigBee的协调器时通过选择网络工作信道及个域识别标志(或网络号)来启动一个ZigBee网络;PANID是一个32位标志,可在网络建立时随机分配;地址:包括物理(也称IEEE或扩展)地址和网路地址;物理地址在设备出厂时初始化,全球唯一;网络地址为16位地址,在节点加入时进行分配;项目六物联网应用软件设计6.3接入层核心技术与软件设计2接入层核心技术2.2ZigBee技术2.1.2ZigBee相关概念设备类型:ZigBee规范定义了三种类型的设备ZigBee协调器:启动和配置网络的一种设备。负责网络正常工作及保持同网络其他设备额的通信。一个ZigBee网络只允许有一个ZigBee协调器;ZigBee路由器:ZigBee网络中的转发节点,可存储地址绑定表;ZigBee终端设备:执行具体职能的终端节点设备;只能通过上两类节点转发才能相互通信;根据功能完整性,上述设备可分为全功能(FFD)和半功能(RFD)设备;协调器和路由器为FFDRFD只能用于终端设备FFD之间、FFD和RFD之间可以直接通信;RFD只能与FFD交互,RFD之间通信至少需要路由器转发;项目六物联网应用软件设计6.3接入层核心技术与软件设计2接入层核心技术2.2ZigBee技术2.1.2ZigBee相关概念节点绑定:绑定是基于簇的拓扑结构,指在两个节点在应用层上建立起来的一条逻辑链路;ZigBee2006版规定全部节点中都需要实现绑定机制,并将其称为“源绑定”。绑定机制允许一个应用服务在不知道目标地址的情况下向对方的应用服务发送数据包;通过绑定,可以实现应用层的一对多发送;绑定设置存储在绑定表数据结构中。FFD类设备可以保存并维护绑定表,RFD设备不能持有绑定表;项目六物联网应用软件设计6.3接入层核心技术与软件设计2接入层核心技术2.2ZigBee技术2.1.3ZigBee网络层帧结构ZigBee网络层协议数据单元(NPDU)结构(帧结构)基本组成部分包括:网络帧报头(包含帧控制、地址和序列信息),可变长有效载荷;结构如下图所示;ZigBee协议中定义了两种类型的网络层帧:数据帧和网络层命令帧。项目六物联网应用软件设计6.3接入层核心技术与软件设计2接入层核心技术2.3低压电力线载波通信技术(PowerLineCarrier/Communication,PLC)2.3.1PLCPLC是利用电力线实现信息传递的通信方式的统称,多数指窄带模拟载波。PLC业已有70年以上的应用历史,经历了窄带PLC到宽带PLC的演变,已经可以承担接入服务;2.3.2PLC应用因为PLC传输媒介限制,无法称为主干接入手段;一般只能组成用户室内或小型楼宇的局域网络,用于家庭内部联网(智能家电网络)PLC可可以支持的业务包括:会话通信业务、信息服务类业务(EMAIL等)、广电广播/点播业务;项目六物联网应用软件设计6.3接入层核心技术与软件设计农业物联网工程设计与实施项目六物联网应用软件设计6.3接入层核心技术与软件设计----Zigbee应用系统设计与开发3Zigbee应用系统设计与开发3.1基于Zigbee的应用系统Zigbee设备主要应用在环境监测与实时控制中,作为现场总线承担信息传输任务。在物联网应用系统结构中,Zigbee设备通常作为感知层与接入层设施。基于Zigbee的应用系统研发,通常按照系统部署结构组织进行;项目六物联网应用软件设计6.3接入层核心技术与软件设计3Zigbee应用系统设计与开发3.1基于Zigbee的应用系统项目六物联网应用软件设计6.3接入层核心技术与软件设计3Zigbee应用系统设计与开发3.1基于Zigbee的应用系统基层节点:实现传感器控制信息获取、识别与转换信息融合网络接入信息传输感知层软件接入层软件项目六物联网应用软件设计6.3接入层核心技术与软件设计3Zigbee应用系统设计与开发3.1基于Zigbee的应用系统计算服务:部署在远端服务器中,基于SOA技术实现的服务中间件分别为系统结构中的上层和下层提供接口下层接口:提供数据存储服务;提供数据派发服务;上层接口:提供大量基础应用服务接口;服务的注册与管理接口数据访问服务接口事件定义注册接口;事件推理服务;事件响应注册接口;事件派送服务;项目六物联网应用软件设计6.3接入层核心技术与软件设计3Zigbee应用系统设计与开发3.1基于Zigbee的应用系统应用系统:是反应行业特征的应用程序集合,实现形式多样化,总体是部署在服务层上的网络服务应用,也可以是运行在用户终端上的客户端应用;事件定义集合远端服务类应用:无需H-CInteraction,但又无法采用服务层中间件实现的应用,例如包含行业规则的数据挖掘应用;客户端应用:通常承担了H-CInteraction任务;项目六物联网应用软件设计6.3接入层核心技术与软件设计3Zigbee应用系统设计与开发3.2案例设计:智能家庭火警监测应用目标:监测火警,并采取措置防止损失扩大。要求:记录火情,记录火源具体位置;发生火警时及时关气;发送报警信息;项目六物联网应用软件设计6.3接入层核心技术与软件设计3Zigbee应用系统设计与开发3.2案例设计:智能家庭火警监测应用3.2.1案例分析:确定系统规模:硬件:智能家庭、远程客户终端软件:感知层传感器和动作器控制、传输层数据转换、服务层数据存储、服务层几乎全部内容、应用层事件定义集合,客户端报警;确定所涉及的技术:嵌入式系统编程、数据库编程、中间件编程、Android编程/SMG应用项目六物联网应用软件设计6.3接入层核心技术与软件设计3Zigbee应用系统设计与开发3.2案例设计:智能家庭火警监测应用3.2.1案例分析:硬件设计:ZigbeeSOC设备作为嵌入式系统核心;家庭网关配置Zigbee扩展模块作为WSN协调器节点;采用温度、烟雾传感器探测火警;采用电磁阀配合PLC电源完成煤气关断;远程客户端定位为用户手机;系统软件设计:项目六物联网应用软件设计6.3接入层核心技术与软件设计3Zigbee应用系统设计与开发3.2案例设计:智能家庭火警监测应用3.2.1案例分析:硬件选型:数值型传感器,无需AD采样,需要进行数据变换;PLC电源模块,完成电磁阀关断;C51/ARM核心的ZigbeeSOC系统,及其开发调试器;Intel核心的OSGi网关平台,Linux系统,可以部署小型数据库,可以部署小型应用;项目六物联网应用软件设计6.3接入层核心技术与软件设计3Zigbee应用系统设计与开发3.2案例设计:3.2.2Zigbee系统开发(以ARM核心为例)ZigbeeSOC:飞思卡尔的MC13224ARM7射频SOC;C51RF仿真器;EWARM集成开发环境(IAR6.3以上版本)Zigbee协议栈;项目六物联网应用软件设计6.3接入层核心技术与软件设计3Zigbee应用系统设计与开发3.2案例设计:3.2.2Zigbee系统开发(以ARM核心为例)Zigbee终端软件功能:嵌入式Linux系统,采用内存映像方式(SPI接口)进行端口访问,获取传感器读数;完成数据变换;通过Zigbee协议栈将数据发送到协调器所在家庭网关;Zigbee协调器软件功能:嵌入式Linux系统,通过Zigbee协议栈管理Zigbee终端节点;访问本地数据库,存储终端配置信息;完成信息封装,将来自终端节点的信息补充时空参量;通过网络服务URI,访问位于远程服务器端的服务层数据存储服务,提交环境监测信息;在系统启动时,通过URI远程服务器注册控制接口,用于接收服务层应用服务的调度命令;响应火警事件处理指令,通过PLC服务执行指令;项目六物联网应用软件设计6.3接入层核心技术与软件设计3Zigbee应用系统设计与开发3.2案例设计:3.2.3接入层其他服务软件Zigbee部署服务:在Zigbee网络启动过程中调用,记录终端位置(精确到房间),存入数据库;PLC控制服务:可以在Zigbee协调器应用中以模块形式实现,也可以根据家庭网关的类型,采用OSGiBundles的形式实现,通过本地URI调用;项目六物联网应用软件设计6.3接入层核心技术与软件设计3Zigbee应用系统设计与开发3.2案例设计:3.2.4服务层软件(平台服务略);智能家庭数据库服务:依托平台数据库以CGI等形式实现,通过URI访问,以表单形式提交数据;智能家庭事件集合、推理规则;智能家庭火警服务:部署在服务层平台上启动时注册事件集合与推理规则等;提供底层监测网络注册服务,接收来自接入层的注册信息;向平台事件服务注册火警事件监听,在检测到火警事件后立即通过监测网络注册的控制接口执行火警处理操作;智能家庭火警监测信息查询服务;项目六物联网应用软件设计6.3接入层核心技术与软件设计3Zigbee应用系统设计与开发3.2案例设计:3.2.5应用层软件部署在服务器端:用户终端注册管理服务;部署在用户终端:如果提供智能家庭APP,可以提供图形化UI,显示火情信息,甚至提供家庭安全监控录像实时观察火情;如果是依托短信报警,本部可省略;火情查询可以通过浏览器进行;项目六物联网应用软件设计6.3接入层核心技术与软件设计农业物联网工程设计与实施项目六物联网应用软件设计6.3软件设计模式概述1软件设计模式的产生背景“设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977年,美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任ChristopherAlexander(克里斯托弗•亚历山大)在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了253种关于城镇、邻里、住宅、花园和房间等进行设计的基本模式。1987年,肯特·贝克和沃德·坎宁安首先将克里斯托佛·亚历山大的模式思想应用在Smalltalk中的图形用户接口的生成中。直到1990年,软件工程界才开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。直到1995年,ErichGamma,RichardHelm,RalphJohnson,JohnVlissides等四位作者合作出版了《设计模式:可复用面向对象软件的基础》一书,在此书中共收录了23个设计模式,这是设计模式领域里程碑的事件,导致了软件设计模式的突破。项目六物联网应用软件设计6.3软件设计模式概述2软件设计模式的概念与意义1.什么是软件设计模式?软件设计模式(SoftwareDesignpattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。2.学习设计模式的意义⑴可以提高程序员的思维能力、编程能力和设计能力。⑵使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。⑶使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。项目六物联网应用软件设计6.3软件设计模式概述3软件设计模式的基本要素其基本要素有:模式名称、别名、动机、问题、解决方案、效果、结构、模式角色、合作关系、实现方法、适用性、已知应用、例程、模式扩展和相关模式等,其中最关键的元素包括以下四个主要部分:1.模式名称(PatternName)2.问题(Problem)3.解决方案(Solution)4.效果(Consequence)项目六物联网应用软件设计6.3软件设计模式概述4GoF的23种设计模式简介设计模式有两种分类方法,即:根据目的分和根据作用的范围分。

1.根据目的来分⑴创建型模式:用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF中提供了5种创建型模式。⑵结构型模式:用于描述如何将类或对象按某种布局组成更大的结构,GoF中提供了7种结构型模式。⑶行为型模式:用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,以及怎样分配职责。GoF中提供了11种行为型模式。项目六物联网应用软件设计6.3软件设计模式概述4GoF的23种设计模式简介1.根据作用范围来分⑴类模式:用于处理类与子类之间的继承关系,这些关系是静态的。⑵对象模式:用于处理对象之间的组合或聚合关系,具动态性。项目六物联网应用软件设计6.3软件设计模式概述项目六物联网应用软件设计6.3软件设计模式概述4GoF的23种设计模式简介GoF的23种设计模式的功能•单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。•原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。•工厂方法(FactoryMethod)模式:定义一个用于创建产品的接口,由子类决定生产什么产品。•抽象工厂(AbstractFactory)模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。项目六物联网应用软件设计6.3软件设计模式概述4GoF的23种设计模式简介(续)

GoF的23种设计模式的功能(续)•建造者(Builder)模式:将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。•代理(Proxy)模式:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。•适配器(Adapter)模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。项目六物联网应用软件设计6.3软件设计模式概述4GoF的23种设计模式简介.GoF的23种设计模式的功能

•桥接(Bridge)模式:将抽象与实现分离,使他们可以独立的变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这2个可变维度的耦合度。•装饰(Decorator)模式:动态的给对象增加一些职责,即增加其额外的功能。•外观(Facade)模式:为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。项目六物联网应用软件设计6.3软件设计模式概述4GoF的23种设计模式简介GoF的23种设计模式的功能(续)•享元(Flyweight)模式:运用共享技术来有效地支持大量细粒度对象的复用。•组合(Composite)模式:将对象组合成树状层次结构,使用户对单个对象和组合对象具有一致的访问性。•模板方法(TemplateMethod)模式:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。项目六物联网应用软件设计6.3软件设计模式概述4GoF的23种设计模式简介(续)GoF的23种设计模式的功能(续)•策略(Strategy)模式:定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的改变不会影响到使用算法的客户。•命令(Command)模式:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。•职责链(ChainofResponsibility)模式:把请求从链中的一个对象传到下一个对象,直到请求被响应为止。通过这种方式去除对象之间的耦合。项目六物联网应用软件设计6.3软件设计模式概述4GoF的23种设计模式简介(续)

GoF的23种设计模式的功能(续)•状态(State)模式:允许一个对象在其内部状态发生改变时改变其行为能力。•观察者(Observer)模式:多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其它多个对象,从而影响其它对象的行为。•中介者(Mediator)模式:定义一个中介对象来简化原有对象之间的交互关系,降低系统中对象间的耦合度,使原有对象之间不必相互了解。项目六物联网应用软件设计6.3软件设计模式概述4GoF的23种设计模式简介(续)

GoF的23种设计模式的功能(续)•迭代器(Iterator)模式:提供一种方法来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。•访问者(Visitor)模式:在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式,即每个元素有多个访问者对象访问。•备忘录(Memento)模式:在不破坏封装性的前提下,获取并保存一个对象的内部状态,以便以后恢复它。•解释器(Interpreter)模式:提供如何定义语言的文法,以及对语言句子的解释方法,即解释器。项目六物联网应用软件设计6.3软件设计模式概述农业物联网工程设计与实施项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理OO技术的基本原理按照问题域的基本事物实现自然分割,按人们通常的思维方式建立问题域的模型,设计尽可能直接自然表现问题求解的软件系统。

OO技术引入了对象(object)概念来表现事物;用消息(message)传递建立事物间的联系;用类(class)和继承(inheritance)作为适应人们一般思维方式的描述模型;用方法(method)表示作用在对象上的各种操作。项目六物联网应用软件设计6.3面向对象软件开发方法------OO技术的基本原理OO技术的基本原理(1)传统的程序设计方法,针对的是数学模型,出发点是“怎样做(How)?”用计算机求解一个实际问题应该怎样做?从实际问题到求解模型(数学模型)的抽象都是围绕怎样做?去进行的面向对象(OO)方法的出发点是“是什么(What)?”要求解的实际问题,到底是什么?用对象表现现实世界中的某个具体的事物项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理OO技术的基本原理(2)面向对象(OO)方法的出发点是“(What)?”由物质组成现实世界物体多样化的表现形式构成问题域(Domain)人认识事物的规律:首先认识问题域是什么?当物体反映到头脑中后,变成意识形成抽象的概念,既逻辑世界由对象组成逻辑世界对象在具体的逻辑世界中担当一定的角色,并完成一定的功能(动作)对象有自己的属性和动作。对象表现现实世界中的某个具体的事物。项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理OO技术的基本原理(3)基本思想客观世界是由对象组成的任何复杂的软件都是由简单的对象组合而成的面向对象的软件系统同样是由对象组成的具有相同数据和相同操作的对象可以归并为一个类类具有封装性,其数据和操作等对外界是不可见的,外界只能通过消息请求进行某些操作,提供所需要的服务所有对象都可以划分为不同的对象类每个对象类都有自己特定的数据和方法对象是对象类的一个实例项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理OO技术的基本原理(4)基本思想对象类具有层次结构上层的类称为“父类”或“基类”,下层的类称为“子类”或“派生类”父类可以派生出子类,子类继承父类的全部特性(数据和操作),又可以有自己的新特性子类与父类形成类的层次结构对象之间通过消息机制传递相互联系项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理OO技术的基本原理(5)思想的精髓是按照对象(事物、概念、实体)的观点考虑问题域和逻辑解决方案“面向对象”技术追求的是软件系统对现实世界的直接模拟尽量实现将现实世界中的事物直接映射到软件系统的解空间项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理OO技术的基本原理(6)软件工程学家Codd和Yourdon认为

面向对象的程序设计技术是以对象为基础,以消息驱动对象实现操作的一种全新的程序设计方法如果一个软件系统使用这些概念来建立模型并予以实现,那么它采用的就是面向对象软件开发方法面向对象=对象+类+继承+通信项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理面向对象方法组成(1)与结构化软件开发方法类似,面向对象软件开发方法也由三部分组成面向对象分析方法(OOA)重点在于发现并描述问题域中的对象(或概念)例如:图书馆信息系统中的书(book)面向对象设计方法(OOD)重点在于定义能最终面向对象程序设计语言的实现的逻辑软件对象软件对象具有方法和属性例如:对象书(book)具有一个题目属性(title)和一个打印方法(print)面向对象程序设计方法(OOP)项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理面向对象方法组成(2)与结构化软件开发方法类似,面向对象软件开发方法也由三部分组成面向对象程序设计方法(OOP)实现所设计的构件例如采用c++、Java语言编写一个book类项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理面向对象方法组成(3)面向对象思想强调的是对象的表示领域概念用面向对象的程序设计语言表示分析过程中概念的表示booktitlePublic

class

book

{publicvoidprint();…..privateStringtitle;}项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理面向对象方法组成(4)面向对象程序设计方法(OOP)——被一些人称为“面向对象变成之父”的AlanKay,确定了以下关于OOP[Kay1993]的基本特征任何事物是一个对象通过互相联系的对象请求其他对象执行一定的行为来完成计算对象通过发送和接收消息进行通信消息是指对特定行为的请求,并且伴随着完成这项任务所需要的参数每个对象都有自己的存储空间,用来储存其他对象项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理面向对象方法组成(5)面向对象程序设计方法(OOP)——被一些人称为“面向对象变成之父”的AlanKay,确定了以下关于OOP[Kay1993]的基本特征每个对象都是一个类的实例,类用来代表一组相似的对象例如:整数、链表等类可以看作是存储仓库,用来保存与一个对象相关的行为同一个类的多个实例对象能够执行相同的行为类可以组织成一个单根树状结构,成为继成层次在该结构中,一个类实例的存储空间和行为自动地被其派生类使用项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理面向对象与面向功能的分析与设计软件项目是复杂的分而治之是处理复杂问题的主要策略将问题分解为易于管理和控制的单元结构化的分析与设计(前,流行)对问题的分解尺度主要依据功能和过程处理问题的结果是将一个复杂的过程分解为一系列具有层次关系的字过程面向对象的分析与设计(现,流行)以对象为尺度分解问题空间项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理面向对象与面向功能的分析与设计(1)以图书馆信息系统为例图书馆信息系统面向对象的分析与设计按对象或概念分解CatalogLibrarianBookLibrary结构化的分析与设计按功能或过程分解SystemRecordLoansAddResourcesReportFines项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理面向对象方法优点与人类的思维习惯相一致所开发出的系统部件可重用性好系统可维护性强生产率得到了大幅提高人的认识过程是从一般到特殊的渐进思维过程,是从是什么开始,认识事物及其本质规律,主观随意性受到限制。而传统方法是从”怎样做?“开始,到做什么?反认识规律而动,主观随意性太多。OO方法采用封装机制和信息隐藏机制,使其内部实现与外界完全隔离,具有较强的独立性(对象对外界而言,好象一个”黑匣子“)。较好地解决了“软件复杂性控制”问题。OO方法中类的继承性是一种代码重用的有效途径。开发者在设计软件的过程中,将一些精心设计、测试过的代码不断加入到已有的类库中。而类库是可供共享的代码库。因此用OOP开发的软件具有较好的可重用性。局部修改,不影响大局,错误不会传播;封装性和信息隐藏机制易于阅读、理解;符合人类习惯的思维方法,对原系统所做的修改,往往通过在原有类的基础上派生一些新类即可实现,易于贯通。派生类继承原有类的特性,只需测试新增加的特性项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理实体和对象实体客观存在的事物客观世界中的问题都是由实体及其相互之间的关系构成的例:项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理实体和对象对象(Object)一般说来,在系统分析和系统构造中,对象是对客观世界事物的一种抽象,是由数据(属性)及在其上的操作(行为)所组成的封装体用来描述客观事物的一个实体,它是实体的抽象,是构成系统的一个基本单位由一组属性和对这组属性进行处理的一组服务(也称操作)组成对象可以是具体实体也可以是抽象实体具体实体:学生、书等抽象实体:规则、算法、事件等封装了对象的数据属性和操作服务,将其结合成一个独立的系统单位,并尽可能隐藏对象的内部细节项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理实体和对象——对象(1)公式表示属性表示对象的结构特征,描述了对象的状态用来描述对象静态特征的一个数据项属性一般只能通过执行对象的操作来改变操作可以改变对象的状态用来描述对象动态特征(行为)的一个处理序列,即处理属性数据的算法通过操作可以获得或改变对象的属性对象=属性+操作项目六物联网应用软件设计6.3面向对象软件开发方法----OO技术的基本原理实体和对象——对象(2)通过传递消息实现对象的操作每当需要改变对象的状态时,只能由其它对象向该对象发出消息对象响应消息时,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论