高级软件工程 第6章 面向对象设计

合集下载

(完整版)软件工程 判断题

(完整版)软件工程 判断题

判断题:第1章概述1。

由于今天个人计算机不断发展壮大,人们不再采用软件团队的开发方式。

(×)2。

由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。

(×)3. 购买大多数计算机系统所需的硬件比软件更昂贵.(×)4。

大多数软件产品在其生命周期中不需要增强功能。

(×)5。

大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。

(√)6. 一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。

(×)第4章需求工程1. 在需求分析过程中,分析员要从用户那里解决的最重要的问题是明确软件做什么。

(√)2. 软件需求规格说明书在软件开发中具有重要的作用,它是软件可行性分析的依据。

(×)第5章面向对象基础1. 模型是对现实的简化,建模是为了更好地理解所开发的系统。

(√)2。

UML语言支持面向对象的主要概念,并与具体的开发过程相关。

(×)第6章面向对象分析1. 面向对象分析的核心在于建立一个描述软件系统的模型。

(×)第7章软件体系结构设计1. 系统体系结构的最佳表示形式是一个可执行的软件原型。

(×)2. 软件体系结构描述是不同项目相关人员之间进行沟通的使能器.(√)3. 良好的分层体系结构有利于系统的扩展与维护。

(√)4。

消除两个包之间出现的循环依赖在技术上是不可行的.(×)5. 设计模式是从大量成功实践中总结出来且被广泛公认的实践和知识。

(√)第8章面向对象设计1。

面向对象设计是在分析模型的基础上,运用面向对象技术生成软件实现环境下的设计模型.(√)2。

系统设计的主要任务是细化分析模型,最终形成系统的设计模型.(×)3。

关系数据库可以完全支持面向对象的概念,面向对象设计中的类可以直接对应到关系数据库中的表。

(×)4。

用户界面设计对于一个系统的成功是至关重要的,一个设计得很差的用户界面可能导致用户拒绝使用该系统。

《软件工程》课程教学大纲

《软件工程》课程教学大纲

《软件工程》课程教学大纲一、课程基本信息课程名称:软件工程英文名称:SoftwareEngineering课程编码:U223C课程类别:专业主干课总学时:48学时(含实验IO学时)总学分:3适用专业:计算机科学与技术/网络工程方向先修课程:高级语言程序设计,数据库设计原理,数据结构开课系部:计算机科学与技术系二、课程的性质和任务《软件工程》是计算机科学与技术专业本科生的一门专业主干课程。

它是一门指导计算机软件系统开发和维护的工程学科,也是计算机科学与技术领域的一个重要学科。

软件工程学是用以指导软件人员进行软件的开发、维护和管理的科学,通过本课程的学习,使学生掌握软件工程的基本概念、基本原理、实用的开发方法和技术,了解软件工程各领域的发展动向;开发软件项目的工程化的方法及在开发过程中应遵循的流程、准则、标准和规范等。

使学生掌握开发高质量软件的方法,以及有效地策划和管理软件开发活动,为今后从事软件开发和应用打下良好的基础。

通过本课程的学习,培养学生对软件开发能力和项目管理能力。

三、课程教学基本要求(一)理论教学内容和基本要求第1章软件工程概述了解软件工程的产生和发展、软件危机的原因,知道如何消除软件危机。

明白软件工程的基本概念,知道软件工程中包含的领域范围重点:软件危机的产生和消除方法第2章软件过程软件与软件生命周期任务,软件开发过程中的基本开发模型,软件开发工具与软件开发环境。

掌握软件生存期模型,软件开发模型方法介绍。

重点:软件与软件生存期,软件开发过程模型难点:软件开发过程模型第3章结构化分析掌握软件需求获取的方法、软件需求工程的任务、软件需求的原则、主要的需求分析方法;需求工程的基本活动、需求的有效性验证、需求变动管理、需求规格说明;建立结构化分析的三种模型;三种模型对应的描述方法:E-R图,数据流图,状态图。

掌握分层数据流图、数据词典和加工逻辑说明的基本构造方法。

重点:软件需求获取方法、结构化分析方法、分析建模方法难点:结构化分析建模方法第4章结构化设计理解软件结构化分析与结构化设计的映射关系,软件设计的基本原理。

软件工程-张海藩 编著 复习提纲1-6章

软件工程-张海藩 编著  复习提纲1-6章

第一章软件工程学概述第一节软件危机1.为了消除软件危机,20世纪60年代后期形成了新学科:计算机软件工程学。

2.软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

(这些问题不是不能运行的软件才仅仅具有的,几乎所有的软件都不同程度存在这些问题。

)3.软件危机包含两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。

2.如何维护数量不断膨胀的已有软件。

4.产生软件危机的原因(page4—图1.1)1.一方面与软件本身的特点有关2.另一方面也和软件开发与维护的方法不正确有关。

5.软件不同于一般程序,它的一个显著特点是:“规模庞大”。

6.软件开发流程:1. 问题定义:(确定要求解决的问题是什么)2. 可行性研究:(决定该问题是否存在一个可行的解决办法)3. 需求分析:(深入具体的了解用户需求)进入开发时期:对软件设计概要设计详细设计编写程序(全部工作量10%—20%)测试交付使用7.软件产品的配置:包括:程序、文档、数据8.软件危机的一些典型表现:1.对软件开发成本和进度的估计常常不准确2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住4.软件常常是不可维护的5.软件通常没有适当的文档资料。

6.软件成本在计算机系统总成本中所占的比例逐年上升。

7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

第二节软件工程1.软件工程定义软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;2. 软件工程方法学包含3个要素:方法、工具和过程。

3. 软件工程方法学: 1. 传统方法学2. 面向对象方法学4. 面向对象方法学的4个特点:(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。

(2)把所有的对象都划分成类(class)。

(3)按照父类(基类)与子类(派生类)的关系,把若干个相关类组成一个层次结构的系统(也成为类的等级)。

软件工程 比较结构化方法和面向对象

软件工程 比较结构化方法和面向对象

软件工程比较结构化方法和面向对象一、引言软件工程是一门关注软件开发过程的学科,它涉及到软件开发的各个方面,包括需求分析、设计、编码、测试和维护等。

在软件工程领域中,有两种主要的开发方法:比较结构化方法和面向对象方法。

本文将对这两种方法进行详细的比较和分析。

二、比较结构化方法1.概念结构化方法是一种基于模块化设计思想的软件开发方法。

它将一个大型系统划分为多个小模块,每个模块都有明确的输入和输出,并且通过调用其他模块来实现其功能。

2.特点(1)强调程序流程控制;(2)采用自顶向下或自底向上的设计方式;(3)使用层次结构图表示程序流程;(4)采用数据流图表示数据流动情况;(5)模块之间通过参数传递来交换信息。

3.优缺点①易于理解和维护;②适合大型系统开发;③能够提高程序可读性。

(2)缺点:①不够灵活,难以应对需求变更;②不支持复杂的数据类型;③容易出现模块间的耦合。

三、面向对象方法1.概念面向对象方法是一种基于对象思想的软件开发方法。

它将一个系统看作是由多个对象组成,每个对象都有自己的属性和方法,并且通过消息传递来实现对象之间的交互。

2.特点(1)强调数据抽象和封装;(2)采用自下而上的设计方式;(3)使用类图表示程序结构;(4)采用序列图表示消息传递过程;(5)支持继承和多态等高级特性。

3.优缺点①能够提高代码重用性;②支持动态绑定,具有更好的灵活性;③能够提高系统可扩展性。

(2)缺点:①易于出现类爆炸问题;②需要掌握较为复杂的概念和技术。

四、比较分析1.设计思想不同结构化方法注重程序流程控制,通过模块化设计来实现程序结构清晰、易于维护。

而面向对象方法则注重数据抽象和封装,通过对象之间的交互来实现程序功能。

2.设计方式不同结构化方法采用自顶向下或自底向上的设计方式,通过层次结构图和数据流图来表示程序结构和数据流动情况。

而面向对象方法则采用自下而上的设计方式,通过类图和序列图来表示程序结构和消息传递过程。

《软件工程实用教程》第6_章_面向对象的软件设计

《软件工程实用教程》第6_章_面向对象的软件设计

第6 章 面向對象的軟體設計
例:
第6 章 面向對象的軟體設計
2.部署圖 部署圖描述了處理器、設備和軟體構件運行時 的體系結構。 ( 1 )結點:是某種計算資源的物理對象,包括電 腦、設備(如印表機、通信設備)等 (2) 連接:連接用一條直線表示,它指出結點之間 存在著某種通信路徑,並指出通過哪條通信路 徑可使這些結點間交換對象或發送消息
第6 章 面向對象的軟體設計
2.詳細設計 (1)細化、補充類的屬性和操作 (2)設計類操作的實現演算法 (3)優化數據訪問路徑 (4)實現外部互動式的控制 (5)調整類結構,增加繼承性 (6)設計類之間的關聯的實現方式 (7)確定對象屬性的精確表示 (8)把類和關聯打包歸納到模組中
第6 章 面向對象的軟體設計
第6 章 面向對象的軟體設計
3)依賴倒置原則:指的是依賴關係應該是儘量依賴介面 (或抽象類),而不是依賴於具體類。在面向對象 的設計中,高層的類往往與領域的業務有關,這些 類只依賴於一些抽象的類或介面,當具體的實現細 節改變時,不會對高層的類產生影響。 4)介面分離原則:指的是在設計時採用多個與特定客戶 類有關的介面比採用一個通用的介面要好。即一個 類要給多個客戶類使用,那麼可以為每個客戶類創 建一個介面,然後這個類實現所有這些介面,而不 要只創建一個介面,其中包含了所有客戶類需要的 方法,然後這個類實現這個介面。
第6 章 面向對象的軟體設計
2.設計基於類的構件 (1)基本設計原則 2)Liskov替換原則:指的是子類可以替 換父類出現在父類能出現的任何地方。 例如,類ClassA要使用ClassB,ClassC 是ClassB的子類。如果在運行時,用 ClassC代替ClassB,則ClassA仍然可以 使用原來ClassB中提供的方法,而不需 要做任何改動。

面向对象分析与设计—四色原型模式

面向对象分析与设计—四色原型模式

面向对象分析与设计—四色原型模式1.背景介绍至今我都清楚的记得我第一次被面试官问起什么叫“建模”技术时的情景,那是好几年前的事情了,当时是胸有成竹的去面试一个有关系统分析、设计的.NET高级软件工程师岗位。

面试官几乎没问我有关.NET方面的任何技术实现,他就简单的问了问:“你如何把握你所分析出来的系统的正确性?”,我当时有点小激动,觉得这个问题应该很简单嘛,都是概念而已,让他直接点问,结果他来一句:“你懂建模吗?,能给我解释一下建模的作用吗?”,接着他出了一个小例子,让我对这个例子进行建模,要考虑到各种扩展性、业务稳定性的关键点,要边建模边说出为什么要这么建模,要说出思路。

他最后重点强调了一下:“创建出来的模型是不允许跟任何具体的代码、工具有关联的”。

在我现在看来,他的意思也就是说创建出来的UML类图模型是领域无关模型(领域通用模型),可以用任何一种编程技术去实现他,作为建模者不需要考虑这些实现细节,考虑的越多越容易分散你对真实业务的等价建模,容易犯技术人员的通病(用技术的思维来考虑业务)。

我当时心想这个容易啊,不就是用UML搞点图出来做做秀嘛,体现出分析、设计的高端嘛,其他还能有啥作用;其实我当时之所以这么想是因为我对UML、建模也尝试过学习、理解和运用,结果我发现这就是一个作秀的工具罢了,对这个东西很不屑,甚至对软件工程中的“建模”领域有一种抵触心理。

我当时随口说了一些我学习UML建模时的心得,心想这个也就是最终答案了,因为它确实就是这个作用(“作秀”),然后我通过代码驱动建模,倒着推导出UML的类图,结果和我意料的差不多;基本上都覆盖了这个小例子的几大方面,反正面试官不知道我是如何得出这个UML类图的,只有天知道,我是通过先构建代码模型然后反方向推到出类图模型的,嘴上说的跟心理想的完全是相反的。

在我感觉非常良好的等着面试官接着问下一个问题的时候,情况出现了。

面试官说我漏掉了东西,说我没有充分考虑到业务场景,没有将业务概念中的关键概念划分清楚,甚至疏忽了很重小的领域实体属性,按照我这个模型图开发出来的软件是不能够满足现在的业务要求的。

面向对象程序设计概述

面向对象程序设计概述

1.什么是结构化程序设计方法?这种方法有哪些优点和缺点?【解答】结构化程序设计方法是指20世纪60年代开始出现的高级语言程序设计方法,由于采用了数据结构化、语句结构化、数据抽象和过程抽象等概念,使程序设计在符合客观事物与逻辑的基础上更进了一步。

结构化程序设计的思路是:自顶向下、逐步求精。

程序结构由具有一定功能的若干独立的基本模块(单元)组成,各模块之间形成一个树状结构,模块之间的关系比较简单,其功能相对独立,模块化通过子程序的方式实现。

结构化程序设计方法使高级语言程序设计开始变得普及,并促进了计算机技术的深入应用。

虽然结构化程序设计方法采用了功能抽象、模块分解与组合,以及自顶向下、逐步求精的方法,能有效地将各种复杂的任务分解为一系列相对容易实现的子任务,有利于软件开发和维护;但与面向对象程序设计方法相比,结构化程序设计存在的主要问题是,程序的数据和对数据的操作相互分离,若数据结构改变,程序的大部分甚至所有相关的处理过程都要进行修改。

因此,对于开发大型程序具有一定的难度,软件的可重用性差,维护工作量大,不完全符合人类认识世界的客观规律。

2.面向对象程序设计有哪些重要特点?【解答】软件设计的目的是为了解决日常生活中存在的各种实际问题,面向对象程序设计与以往各种程序设计方法的根本区别是程序设计的思维方法的不同。

它主要具有如下重要特点:(1)面向对象程序设计实现了较直接地描述客观世界中存在的事物(即对象)及事物之间的相互关系,它所强调的基本原则是直接面对客观事物本身进行抽象,并在此基础上进行软件开发,将人类的思维方式与表达方式直接应用在软件设计中。

(2)面向对象的程序设计将客观事物看作具有属性和行为的对象,通过对客观事物进行抽象来寻找同一类对象的共同属性(静态特征)和行为(动态特征),并在此基础上形成类。

(3)面向对象的程序设计将数据和对数据的操作封装在一起,提高了数据的安全性和隐蔽性。

第1章面向对象程序设计概述3(4)面向对象的程序设计通过类的继承与派生机制以及多态性特性,提高了软件代码的可重用性,因而大大缩减了软件开发的相关费用及软件开发周期,并有效地提高了软件产品的质量。

面向对象程序设计(谭浩强版)

面向对象程序设计(谭浩强版)
可重用性较好
一、面向过程与面向对象程序设计
面向过程程序设计 面向对象程序设计
P5 P6 P4 P3 P2 P1
O5 O4 O3 O2 O1
一、面向过程与面向对象程序设计
面向过程程序设计 面向对象程序设计
O5 O4 O3 O2 O1
二、抽象在面向对象中的作用
Ⅰ、抽象的概念 抽象代表着一个对象的本质特征,这个特征将 这个对象与所有其他种类的对象区别开来; 抽象是通过从特定的实例中抽取共同的性质以 形成一般化的概念的过程; 抽象具有层次;
在计算机语言发展史上具有划时代的意义, 引入了许多程序设计概念。如变量、数组、循环、 分支等。
20世纪50年代中期,Algol语言 提出块(Begin…End)思想,对数据进行保护, 是一种初级封装。
1.1 从C到C++
20世纪60年代中期,Simula 67语言 面向对象语言的鼻祖,提出了对象、类的概 念,并支持类的继承。 20世纪70年代中期,Ada语言
1.2 最简单的C++程序
例1.3:输入两个数x和y,求两数中的大者。
#include<iostream> using namespace std; 函数声明 int main() { int max(int x,int y); int a,b,c; cin>>a>>b; c=max(a,b);//函数调用 cout<<"max="<<c<<endl; return 0; } int max(int x,int y) {int z; if(x>y) z=x; else
注意其两面性
1.1先研究事物,而后才能研究过程。必须 先知道一个事物是什么,而后才能觉察这个事物 中所发生的变化。 《路德维希· 费尔巴哈和德国古典文学的终结》

软件工程—第6章 面向对象设计—OMT介绍

软件工程—第6章 面向对象设计—OMT介绍

类库中已有 车辆 OTS 车牌 车牌确认
设计结果: 车辆 OTS 车牌 车牌确认
车辆 车牌确认 车牌 颜色 式样 生产日期 产地 车牌确认
2.用户界面部分(HIC)的设计 • 通常在OOA阶段给出了所需的属性和操作,在设计阶 段必须根据需求把交互的细节加入到用户界面的设计 中,包括有效的人机交互所必需的实际显示和输入。
Coad与Yourdon的方法
主题层 类与对象层 结构层 属性层 服务层
人机 交互
问题 域
数据 管理
任务 管理
问题论域部分包括与所面对的应用问题直接有关的所有 类和对象。 在其它的三个部分中,识别和定义新的类和对象。
1.问题域部分(PDC)的设计 – OOA阶段得到的有关应用的概念模型描述了所要解 决的问题 。在OOD阶段,主要是对OOA产生模型 中的某些类与对象、结构、属性、操作进行组合与 分解,或者增加必要的类、属性和联系。
Coad与Yourdon的方法
1)数据管理方法 – 数据管理方法主要有三种 • 文件管理 • 关系数据库管理 • 面向对象的数据库管理 2)数据管理部分的设计 –数据存储管理部分的设计包括数据存放方法的设计 和相应操作的设计
OMT(object modeling technique)
– OMT是美国通用电气公司在总结其内部多年来采用 OO技术开发实践的基础上提出的一套系统开发方 法学。 – OMT最早是由Loomis,Shan和Rumbaugh在1987 年提出的,曾扩展应用于关系DB设计。 – J.Rumbaugh在1991年正式把OMT应用于OO的分 析和设计。 –它以面向对象思想为基础,通过构造一组相关模型 (对象模型、动态模型和功能模型)来获得关于问 题的全面认识(即问题领域模型),是在实体关系 模型上扩展了类、继承和行为而得到的。

软件工程考核知识点-第6章-软件编码

软件工程考核知识点-第6章-软件编码

软件工程考核知识点-第6章-软件编码6.1 程序设计语言的特性及选择程序设计语言是人机通信的工具之一,使用这类语言“指挥”计算机干什么,是人类特定的活动。

我们从以下三个方面介绍语言的特性。

6.1.1 程序设计语言特性1. 心理特性(1)歧义性。

(2)简洁性。

(3)局部性和顺序性。

(4)传统性。

2. 工程特性(1)可移植性。

(2)开发工具的可利用性。

(3)软件的可重用性。

(4)可维护性。

3. 技术特性支持结构化构造的语言有利于减少程序环路的复杂性,使程序易测试、易维护。

6.1.2 程序设计语言的选择1. 项目的应用领域(1)科学工程计算。

需要大量的标准库函数,以便处理复杂的数值计算,可供选用的语言有:FORTRAN语言、C语言等。

(2)数据处理与数据库应用SQL为IBM公司开发的数据库查询语言4GL称为第4代语言(3)实时处理实时处理软件一般对性能的要求很高,可选用的语言有:汇编语言、Ada语言等。

(4)系统软件。

如果编写操作系统、编译系统等系统软件时,可选用汇编语言、C语言、Pascal语言和Ada语言。

(5)人工智能。

如果要完成知识库系统、专家系统、决策支持系统、推理工程、语言识别、模式识别等人工智能领域内的系统,应选择Prolog、Lisp语言。

2. 软件开发的方法(详见第9章)有时编程语言的选择依赖于开发的方法,如果要用快速原型模型来开发,要求能快速实现原型,因此宜采用4GL。

如果是面向对象方法,宜采用面向对象的语言编程。

3. 软件执行的环境良好的编程环境不但有效提高软件生产率,同时能减少错误,有效提高软件质量。

4. 算法和数据结构的复杂性科学计算、实时处理和人工智能领域中的问题算法较复杂,而数据处理、数据库应用、系统软件领域内的问题,数据结构比较复杂,因此选择语言时可考虑是否有完成复杂复杂算法的能力,或者有构造复杂数据结构的能力。

5. 软件开发人员的知识编写语言的选择与软件开发人员的知识水平及心理因素有关,开发人员应仔细地分析软件项目的类型,敢于学习新知识,掌握新技术。

面向对象技术

面向对象技术

Before:
i
j
After:
i
j
Before:
After:
c1
c2
c2: Circle
radius = 9
1
2
2
2
c1
c2
c1: Circle
radius = 5
变量赋值
Primitive type assignment i=j
Object type assignment c1 = c2
Before:
类和对象
Circle radius findArea new Circle() circle1: Circle radius = 2 ... new Circle() circlen: Circle radius = 5 Graphical 对象的图形 notation for 符号 objects Graphical 类的图形 notation for 符号 classes
构造计算机能够理 解和处理的类 包括了实体中与需 要解决的问题相关 的数据和属性 抽象数据类型
实例化
抽象
概念世界
数据抽象类型
现实生活 中的对象 计算机中的对象的原型
class Car { int color_number; int door_number; int speed; void brake() { … } void speedUp() {…}; void slowDown() { … } }
Primitive type Object type int i = 1 Circle c i c 1 reference
引用变量
c: Circle Created using new Circle(5) radius = 5

《软件工程》课程教学大纲

《软件工程》课程教学大纲

软件工程课程教学大纲(SoftwareEngineering)学时数:32其中:实验学时:6课外学时:0学分数:2适用专业:计算机科学与技术一、课程的性质、目的与任务《软件工程》是计算机科学与技术专业教学计划中一门综合性和实践性很强的核心课程,主要内容包括软件工程概述、可行性分析、需求分析、概要设计、详细设计、面向对象分析与设计、编码、软件质量与质量保证、项目计划与管理。

根据培养基层应用型人才的需要,本课程的目的与任务是使学生通过本课程的学习,了解软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法,为更深入地学习和今后从事软件工程实践打下良好的基础。

二、课程教学的基本要求(-)基本概念和基本知识:软件与软件工程,生存周期与软件开发模式,结构化分析、设计与编码,面向对象分析、设计与编码,软件的评审、测试与维护,项目计划与项目管理。

(二)基本技能:能用软件工程的方法参与软件项目的分析、设计、实现和维护重点:系统分析、系统设计、系统实现、系统维护难点:需求分析、软件测试课程的教学要求在每一章教学内容之后给出,大体上分为三个层次:了解、理解和掌握。

了解即能正确判别有关概念和方法:理解是能正确表达有关概念和方法的含义;掌握是在理解的基础上加以灵活应用三、课程的教学内容、重点和难点第一章概论一、软件(一)软件的发展;(二)软件的定义;(三)软件的特点、软件的种类。

二、软件工程的概念(一)软件危机与软件工程的定义;(二)软件工程的目标;(三)软件工程的原则。

三、软件生存周期与软件开发模型(一)瀑布模型、原型模型、螺旋模型、基于四代技术模型、面向对象与组件模型、混合模型。

教学要求:软件和软件工程的基本概念,软件生命周期及软件开发的各个模型重点:软件生存周期与软件开发模型第二章可行性分析一、可行性研究的任务二、可行性研究的步骤三、系统流程图四、成本/效益分析第三章需求分析一、需求分析的任务与步骤(一)需求分析的任务;(二)需求分析的步骤;(三)需求分析的原则。

软件工程实用教程(2版)-6章-习题与参考答案-2012-5-28

软件工程实用教程(2版)-6章-习题与参考答案-2012-5-28
在进行分层设计时应注意以下几点。
层与层之间的耦合应尽可能地松散,这样只要保证接口一致,某一层的具体实现就很容易被扩展和替换;
级别相同,职责类似的元素应该被组织到同一层中;
复杂的模块应被继续分解为粒度更细的层或子系统;
应尽量将可能发生变化的元素封装到一个层次中,这样发生变化时我们只要改变受影响的层就可以了;
4.举例说明各种程序设计语言的特点及适用范围。
答案要ห้องสมุดไป่ตู้:
JAVA:面向对象,多线程,可重用性强,继承,多态,有庞大的Applet和GUI库,网络应用广泛等
C:是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。
《软件工程实用教程》

1.简述分层模式的特点及设计时的注意事项。
答案要点:
表示层:图形用户界面、窗口等。
应用逻辑层:管理业务过程的任务和规则。
对象存储层:持久化存储机制,例如,文件系统、数据库等。
这种体系结构的主要特征是将应用逻辑从软件中分离出来,形成了一个单独的逻辑中间层。把应用逻辑和存储逻辑分开是非常重要的,这样不管哪一部分的改变都不会影响其他的部分。
(2)基于使用的测试。这种策略首先测试几乎不使用服务器类的那些类(称为独立类),把独立类都测试完之后,再测试使用独立类的下一个层次的类(称为依赖类)。对依赖类的测试一个层次一个层次地持续进行下去,直至把软件系统构造完为止。

《UML面向对象分析和设计》教学大纲

《UML面向对象分析和设计》教学大纲

软件高职《UML面向对象分析和设计》教学大纲课程名称: UML面向对象分析和设计英文名称:总学时:48 学分:3课程类型:专业基础课适用专业:计算机科学与技术专业先修课程:无1.课程性质《UML面向对象分析与设计》是所有软件开发类专业中重要的理论和技术专业课之一。

其任务是使学生利用UML图形化工具结合面向对象的思想对软件系统进行建模。

通过系统建模工具的使用的技巧和系统设计的基准,使得学生能掌握OOAD的基本知识并且能利用建模语言内功能强大的模型元素进行软件系统逻辑模型的架构,更好地进行计算机软件系统的设计,更有助于学生掌握计算机软件系统的开发流程与步骤。

这门课程对于培养具有素质好,技术强的软件设计能力的高级软件开发人才是必不可少的。

2.课程教学目的和要求通过本课程的学习,学生应能掌握UML建模语言的9种视图模型的构造原理知识。

提高面向对象的抽象思维能力,并能结合面向对象的原理知识熟练使用建模9种图形化工具对系统进行分析与设计,最终得到系统的整个模型。

在教授学生9种视图模型的基本元素使用技巧后,学生应能轻松浏览案例项目的视图模型并理解图形所表达的分析设计思路。

3.教材及主要参考书教材:《UML基础、案例与应用(第三版)》,(美)Joseph Schmuller 著,李虎赵龙刚译,人民邮电出版社,2010.74.课时说明课程总课时为48学时,其中理论课共24学时,实验课共24学时。

周进度4学时,3学分,开课学期为第五学期。

5.教学内容与学时安排6.实验教学安排本课程共24个学时的实验,在教学中同时进行,可分为如下:撰写人:院(系)公章:院(系)教学主管签字(盖章):×××时间:。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
系统结构的类图
9
6.2 系统分解
• 服务和子系统接口
➢ 服务是一组有公共目的的相关操作。而子系统则通过给其 他子系统提供服务来发挥自己的能力。与类不同的是,子 系统不要求其他子系统为它提供服务。
➢ 供其他子系统调用的某个子系统的操作集合就是子系统的 接口。
➢ 子系统的接口包括操作名、操作参数类型及返回值。 ➢ 面向对象的系统设计主要关注每个子系统提供服务的定义,
3) 一般—特殊内聚:设计出的一般—特殊结构,应该符合多 数人的概念,更准确地说,这种结构应该是对相应的领域 知识的正确抽取。
7
6.1 面向对象设计过程与准则
(6) 可重用 • 软件重用是提高软件开发生产率和目标系统质量
的重要途径。 • 重用基本上从设计阶段开始。重用有两方面的含
义:
➢ 一是尽量使用已有的类(包括开发环境提供的类库,及以 往开发类似系统时创建的类),
6
6.1 面向对象设计过程与准则
(5) 强内聚 • 内聚衡量一个模块内各个元素彼此结合的紧密程度。在面
向对象设计中存在以下3种内聚: 1) 服务内聚 2) 类内聚:设计类的原则是,一个类应该只有一个用途,它
的属性和服务应该是高内聚的。类的属性和服务应该全都 是完成该类对象的任务所必需的,其中不包含无用的属性 或服务。如果某个类有多个用途,通常应该把它分解成多
➢ 二是如果确实需要创建新类,则在设计这些新类的协议时, 应该考虑将来的可重复使用性。
8
6.2 系统分解
• 子系统和类
➢ 在大型和复杂的软件系统情形,首先根据需求的功能模型 (用例模型),将系统分解成若干个部分,每一部分又可 分解为若干子系统或类,每个子系统还可以由更小的子系 统或类组成,如图所示。
第6章 面向对象设计
• 面向对象设计过程与准则 • 系统分解 • 问题域部分的设计 • 人机交互部分的设计 • 任务管理部分的设计 • 数据管理部分的设计 • 对象设计
1
6.1 面向对象设计过程与准则
• 面向对象设计过程
(1) 建立系统环境模型。在设计的初始阶段,系统设计师用 系统环境图对软件与外部实体交互的方式进行建模。下图 给出了系统环境图的一般的结构。
2
6.1 面向对象设计过程与准则
(2) 设计系统体系结构。体系结构设计可以自底向上进行, 如将关系紧密的对象组织成子系统或层;也可以自顶向 下进行,尤其是使用设计模式或遗产系统时,会从子系 统的划分入手。
(3) 对各个子系统进行设计。对于面向对象的系统,典型的 子系统有问题域子系统、人机交互子系统、任务管理子 系统和数据管理子系统。
序等,而面向对象方法中的模块则是类、对象、接口、 构件等。 ➢ 在面向过程的方法中,数据及对数据的处理是分离的; 而在面向对象方法中,数据及其上的处理是封装在一起 的,具有更好的独立性,也能够更好地支持复用。
4
6.1 面向对象设计过程与准则
(2) 抽象 ➢ 面向对象方法不仅支持过程抽象,而且支持数据抽象。
5
6.1 面向对象设计过程与准则
(3) 信息隐藏 ➢ 在面向对象方法中,信息隐藏通过对象的封装性实现。对
于类的用户来说,属性的表示方法和操作的实现算法都应 该是隐藏的。 (4) 弱耦合 ➢ 耦合是指一个软件结构内不同模块之间互连的紧密程度。 在面向对象方法中,对象是最基本的模块,因此,耦合主 要指不同对象之间相互关联的紧密程度。
➢ Coad & Yourdon基于MVC(Model-ViewController)模型,在逻辑上将系统划分为4个部分,分 别是问题域部分、人机交互部分、任务管理部分及数据管 理部分,每一部分又可分为若干子系统。
➢ Coad 与 Yourdon 在设计阶段中继续采用了分析阶段中 提到的5个层次,用于建立系统的4个组成成分。每一个子 系统都由主题、类-&-对象、结构、属性和服务5个层次 组成。这5个层次可以被当作整个模型的水平切片。
14
6.2 系统分解
• 典型的面向对象设计模型
15
6.2 系统分解
• 子系统之间的两种交互方式
➢ 客户-供应商关系:在这种关系中,客户子系统调用供应 商子系统,后者完成某些服务工作并返回结果。使用这种 交互方案,作为客户的子系统必须了解作为供应商的子系 统的接口,而后者却无须了解前者的接口。
➢ 平等伙伴关系:在这种关系中,每个子系统都可能调用其 他子系统,因此每个子系统都必须了解其他子系统的接口。 与第一种方案相比,这种方案中,子系统间的交互更加复 杂。
类实际上就是一种抽象数据类型。可以将类的抽象分为 规格说明抽象及参数化抽象。 ➢ 类对外开放的公共接口构成了类的规格说明,即协议。 这种接口规定了外部可以使用的服务,使用者无需知道 这些服务的具体实现算法。通常将这类抽象称为规格说 明抽象。 ➢ 参数化抽象是指当描述类的规格说明时并不具体指定所 要操作的数据类型,而是将数据类型作为参数。
即枚举所有的操作、操作参数和行为。
10
6.2 系统分解
• 服务和子系统接口
➢ 子系统分层的目的是建立系统的层次结构。每一层仅依赖 于它下一层提供的服务,而对它的上一层可以一无所知。 下图给出了一个三层的系统结构的示例。
11
6.2 系统分解
• 服务和子系统接口
➢ 如果在一个系统的层次结构中,每 一层只能访问与其相邻的下一层, 则称之为封闭体系结构;如果每一 层还可访问比其相邻下一层更低的 层次,则称之为开放体系结构。
➢ 典型的封闭体系结构的例子就是开 放系统互联参考模型(OSI模型), 如图所示。
12
6.2 系统分解
• 服务和子系统接口
➢ 开放体系结构的一个例子是Java的Swing用户接口包。它 允许绕过高层直接访问低层接口以克服性能瓶颈。如图所 示;Yourdon的面向对象设计模型
(4) 对象设计及优化。对象设计以问题领域的对象设计为核 心,其结果是一个详细的对象模型。对象设计过程包括 使用模式设计对象、接口规格说明、对象模型重构、对 象模型优化4组活动。
3
6.1 面向对象设计过程与准则
• 面向对象设计准则
(1) 模块化 ➢ 传统的面向过程方法中的模块通常是函数、过程及子程
相关文档
最新文档