《统一建模语言(UML)》第1章 面向对象技术概述

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《统一建模语言(UML)》第1章面向对象技术概述重点:软件工程相关概念面向对象相关概念1.1软件危机与软件工程软件发展的几个时期1946(第一台计算机)~1960“软件”雏形是简单的程序20世纪60年代末到70年代初“软件”成为产品至今软件工程时期软件危机软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题。如何开发软件,以满足不断增长的、日趋复杂的要求如何维护规模不断庞大的软件产品软件工程,由北大西洋公约组织NATO于1968年提出软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。1.1软件危机与软件工程软件开发的现状软件工程学科不断发展软件危机仍然存在中小型软件开发较为成熟,大型软件存在问题常见软件开发方法瀑布模型增量模型原型模型螺旋模型(风险驱动)1.1软件危机与软件工程1.2软件开发的基本认识大型软件系统的特点开发代价高、时间长,参与人员多,软件生命周期长。软件系统开发的两个方面软件开发过程软件开发中资源的协调和管理1.2软件开发的基本认识软件是逻辑部件,而不是物理部件,软件产品与硬件产品的区别表现形式不同(看不见,摸不着,长期运行看效果)生产方式不同(人与人的沟通,容易有疏忽与失误)产品需求不同(软件不允许有误差)维护方式不同(出现bug要调整,进而引发新bug)1.3软件固有的复杂性软件开发的复杂性与困难性是由于软件的特点造成的,软件的复杂性是固有的。软件复杂性的原因跟计算机体系结构相关(冯.诺依曼硬件简单/软件复杂)软件开发是智力活动,无法形成统一开发模式软件系统的需求经常改变软件元素之间的关系不确定软件依赖硬件环境1.4软件工程的一般原则分解,“分而治之”或“各个击破”,降低复杂性抽象,抽取系统本质特征,忽略非基本特征(Miller神奇的数字7)过程抽象数据抽象模块化,基本要求是高内聚、低耦合信息隐藏,也称封装(电话)复用软件自动化软件构件组装结构化的开发方法SA、SD、SP特点:面向数据流DFD软件结构图SC优化划分模块内部算法和流程初审领料单已审核领料单复审发货通知发货Jackson方法(不常用)面向数据结构(例如,学生信息管理系统,处理各表的输入输出)面向对象的开发方法OOA、OOD、OOP1.5几种基本的软件开发方法1.6面向对象的发展历程1960-70年代COBOL(商用语言,银行)、FORTRAN(工程计算)、C(系统开发)结构化分析和设计技术1980年-90年代初期Smalltalk、Ada、C++、VisualBasic早期面向对象生成(代码)方法90年代中晚期JavaUMLUnifiedProcess1.7面向对象技术的优点面向对象技术的优点稳定性较高,需求的较小改变不会影响软件的结构开发的系统更易于理解,贴近现实世界(功能为基础PK对象为基础)可靠性高复用结构化方法对问题进行功能分解,强调软件的结构按照功能来组织,一旦功能改变,软件结构就不稳定OO方法按照问题域分解,能够更直接地描述现实世界各个开发阶段之间过渡平滑OOA与OOD阶段无鸿沟1.8面向对象领域的基本概念OO技术领域存在一些基本术语和概念,需要掌握和理解。1.8.1对象和实例对象(Object)有意义的一切事物都是对象它是系统用来描述客观事物的一个实体,是构成系统的一个基本单位。对象包括:属性(静态特征)和方法(动态特征)对象之间对过消息进行通信。实例(Instance)它与对象的概念很类似,但其含义更广泛一些。1.8.2类类(Class)它是具有相同属性和方法的一组对象的集合为某类对象提供统一的描述类是静态概念,对象是动态的对象是类的实例1.8.3封装封装(Encapsulation)就是把对象的属性和方法结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。封装使对象具有2个部分:接口部分和实现部分(硬盘)封装提供2种保护保护对象防止直接访问对象内部细节保护客户防止对象实现部分的变化影响客户对象1.8.4继承继承(Inheritance)它使子类可以继承父类的属性和方法继承增加了软件复用的机会单继承与多继承override与overload覆盖(override)在子类中增加或重新定义所继承的属性或方法。publicclassA{Stringname;publicStringgetValue(){return“Valueis:”+name;}}publicclassBextendsA{Stringaddress;publicStringgetValue(){return“Valueis:”+address;}}重载(overload)同一个类中有多个同名方法,但它们在操作数或操作数类型上有区别。系统根据实参引用不同方法。1.8.5多态多态(polymorphism)在OO技术中,多态指使一个实体在不同上下文条件下具有不同意义或用法的能力与多态有关的概念继承覆盖动态绑定向上转型(指派)圆柱体锥体立方体1.8.6消息消息(Message)是指向对象发出的服务请求对象直接用消息的方式传递信息,而不是参数包括:提供服务的对象的标识、服务标识、输入信息和回答信息等对象间的消息传递是OO方法的基本原则消息包括同步消息,请求者需要等待响应者返回异步消息,请求者不需要等待响应者返回,发出消息后可以继续自己的后续工作(和函数调用有本质区别)1.9面向对象分析与设计分析模型Analysismodels描述应用领域设计模型Designmodels描述软件系统如structurechartOO开发方法中分析模型和设计模型之间使用相同的模型和建模概念,二者之间映射方便,平滑过渡,防止不一致。OOA用面向对象方法分析问题域,建立基于对象、消息的业务模型,形成对客观世界和业务本身的正确认识。生成业务对象的动、静态模型和抽象类UML业务模型、用例图以及初步的交互图。OOD针对OOA给出的问题域模型,用面向对象方法设计出软件的基础架构(概要设计)和完整的类结构(详细设计),以完成业务功能。最后编码。生成对象类的动、静态模型(解决域)UML类图、交互图(顺序图和协作图)、状态图、活动图以及实施阶段的组件图和部署图。1.9面向对象分析与设计小结软件工程学科发展,但软件危机依然存在;软件固有的复杂性决定了这一局面;控制的基本原则有:分解、抽象、模块化、信息隐藏、复用;OO方法充分体现了上述原则;OO方法是解决软件危机的有效途径之一。谢谢观看

1 / 27
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功