第7章 面向对象的设计
Java面向对象程序设计案例教程(王贺) 第七章习题答案[5页]
1.选择题(1)下列说法中错误的是()A.对Swing构件只能设置一个边框B.Swing构件能建立组合边框或自己设计边框C.在Swing构件中,按钮可以使用图标修饰D.Swing构件支持键盘代替鼠标的操作(2)向容器添加新构件的方法是(A)A. add( )B. insert( )C. fill( )D. set( )(3)关于布局管理器LayoutManager,下列说法中正确的是(D)A.布局管理器是用来部署Java应用程序的网上发布的youtManager本身不是接口C.布局管理器是用来管理构件放置在容器中的位置和大小的D.以上说法都不对(4)JTextField类提供的GUI功能是(A)A.文本区域 B.按钮 C.文本字段 D.菜单(5)将GUI窗口划分为东、西、南、北、中五个部分的布局管理器是(D)A.FlowLayout B.GridLayout C. BoxLayout D. BorderLayout(6)关于Panel,下列说法中错误的是(D)A. Panel可以作为最外层的容器单独存在B. Panel必须作为一个构件放置在其他容器中C. Panel可以是透明的,没有边框和标题D. Panel是一种构件,也是一种容器2.填空题(1)( BorderLayout )包括5个明显的区域:东、南、西、北、中。
(2)Java的图形界面技术经历了两个发展阶段,分别通过提供AWT开发包和(Swing)开发包来体现。
(3)可以使用setLoaction( )、setSize( )或(setBounds( ) )中的任何一种方法设置组件的大小或位置。
(4)( GridLayout )布局管理器使容器中各个构件呈网格布局,平均占据容器空间。
(5)框架的默认布局管理器( BorderLayout)。
3.编程题(1)制作如图7-20所示的登录界面。
图7-20package com.zhouzhou;import java.awt.*;import javax.swing.*;public class Demo11 extends JFrame {// 定义组件JPanel jp1, jp2, jp3;JLabel jlb1, jlb2;JButton jb1, jb2;JTextField jtf1;JPasswordField jpf1;public static void main(String[] args) {// TODO Auto-generated method stubDemo11 d1 = new Demo11();}// 构造函数public Demo11() {jp1 = new JPanel();jp2 = new JPanel();jp3 = new JPanel();jlb1 = new JLabel("用户名");jlb2 = new JLabel("密码");jb1 = new JButton("登录");jb2 = new JButton("取消");jtf1 = new JTextField(10);jpf1 = new JPasswordField(10);// 设置布局管理(上面忘记:extends JFrame,这里出错了) this.setLayout(new GridLayout(3, 1));// 加入各个组件jp1.add(jlb1);jp1.add(jtf1);jp2.add(jlb2);jp2.add(jpf1);jp3.add(jb1);jp3.add(jb2);// 加入到JFramethis.add(jp1);this.add(jp2);this.add(jp3);this.setSize(250, 150);this.setTitle("登录");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}}(2)制作如图7-21所示的选择界面。
第七章 包图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社
包图的基本概念
包图是用来描述模型中的包和所包含元素的组织方式的图,是维护 和控制系统总体结构的重要内容。包图能够组织许多UML中的元素, 不过其最常用的用途是用来组织用例图和类图。
在UML 1.X规范中,虽然没有明确规定包图属于一种图类型,却可以 使用包及包的关系来表示系统的结构,包图作为实际上存在并经常被 使用的一种图出现在UML中。最新的UML 2规范中已经明确定义了包 图。
元素的分包原则
元素不能“狡兔三窟”:树形结构的一个节点不能同时拥有两个父 节点,一个元素也不允许在两个包中重复出现。
相同包内元素不能重名:包所具有的命名空间的作用要求用一个包 中的同种类元素名称必须是唯一的。
包内元素要紧密联系:分在同一个包中的元素应该具有某些相同的 性质,即包的高内聚性。
包与包尽可能保持独立:包和包之间需要尽可能减少耦合度,要求 包内元素与外部元素有尽可能少的依赖关系。
DataType
+ Intege 元素的分包原则
包的概念
pkg Logical View
包是用于把模型本身组织成层次结构的通用机制, PackageName 它不能执行。
PackageName
+ ContentA + ContentB
包名:与类图相似,包有简单名与路径名两种命 pkg Logical View
PackageB
包的依赖关系
容易出现的问题:循环依赖
pkg Logical View PackageA
循环依赖的出现是令人困惑、也是非常容易
产生错误的。尤其是当依赖关系表示包的引 pkg Logical View PackageA
入时,循环依赖会导致将模型转化成代码后
第七章 面向对象的程序设计
第七章面向对象的程序设计本章是面向对象的程序设计。
与第五章介绍的面向过程的结构化程序设计不同,主要介绍面向对象程序设计的基础知识,包括面向对象的基本概念以及Visual FoxPro支持的面向对象的编程技术,详尽介绍了对各类控件的选择与使用方法。
在对诸如表单等各类控件对象的设计、操作上,面向对象的编程技术有自己的独特之处,但在所有对象的各种事件和方法的程序代码设计中,仍然使用到结构化的程序设计方法。
本章的主要内容是面向对象程序设计的理论基础,其程序设计的基本目标是设计出能在可视化环境下运行的应用程序窗口界面—表单。
7.1 学习提要1.学习目标与要求通过本章学习,读者应达到以下要求:⑴了解对象、类等基本概念;⑵理解对象的属性、方法和事件;⑶熟练掌握表单的基本设计、操作和应用;⑷掌握常用控件的设计与使用。
⑸熟练掌握常用事件、方法的过程代码的设计方法。
⑹了解自定义类的创建和使用方法。
2.重点与难点:⑴本章重点:对象与类以及属性、方法和事件等基本概念;表单的设计与应用;常用控件属性、事件和方法的选择与运用。
⑵本章难点:本章的重点即为本章的难点3.主要知识点⑴面向对象的概念①对象、类②属性、方法、事件③Visual FoxPro 中的基类⑵表单的创建与基本操作①表单的创建使用“窗体设计器”或“表单向导”创建表单。
②表单的修改、运行使用“窗体设计器”编辑修改表单。
使用菜单或命令方式运行表单。
③表单的属性、事件和方法表单常用属性的设置,表单的常用事件、常用方法。
④设置表单的数据环境数据环境的概念,数据环境的设置。
⑶表单常用控件①表单常用控件的基本操作控件对象的选定,移动位置,改变大小,剪切、复制与粘贴,删除,布局设置。
②常用控件对象标签控件,命令按钮与命令按钮组控件,文本框与编辑框控件,选项组和复选框控件,列表框和组合框控件,容器与表格控件,页框控件,计时器与微调控件,图像控件等。
③控件对象的常用属性设置Caption属性,Name属性,Alignment属性,ButtonCount属性,BackColor属性,BorderColor属性,BorderStyle属性,Enabled属性,ForeColor属性,InputMask属性,PasswordChar属性,Picture属性,Height属性,Width属性,Left属性,Top属性,Value属性,Visible属性,FontName属性,FontSize属性,ControlSource属性。
面向对象分析与设计课件第7章 状态图与活动图建模
7.1 状态图的构成元素
统一建模语言中,状态图主要由状态和迁移两大类模型元素组成。对于图中 的每个状态,还定义了状态图主体对象在该状态下需要完成的各个动作及其触发 原因或机制。对于每个迁移,状态图还定义了迁移的触发事件、迁移条件以及迁 移时所要完成的动作。
状态图还对状态进行了多种分类,同时也为这些分类提供了必要的支持。如 把状态按照时间顺序分为初态、终态和中间态。按照状态的层次结构划分为简单 状态、复合状态和子状态。对于子状态,还可以根据它们是否参与了并发活动而 划分为串行子状态和并发子状态。另外,为简单地表达某种复杂语义,状态图中 还定义了历史子状态等这样的特殊模型元素。为了表示不同状态与其行为之间的 关系,UML还为每个状态和迁移定义了若干种相关的动作。
状态名可以是任何一个满足UML命名规则的字符串,其内容 可以由用户指定。
每个动作中,则包含了触发动作的事件、事件参数、守卫 条件以及伴发的动作序列。
7.1.1 状态
所有这些动作可分成入口动作(on Entry)、出口动作(On Exit)、 事件动作(On Event)和动作(Do)等四种类型。
其中,入口动作(on Entry)和出口动作(On Exit)分别指对象在 进入和离开当前状态时需要完成的动作。
7.1.2 转换与事件
例如,在Java语言中,事件处理机制的主要内容如下: 1)事件:一种用于封装事件属性(事件相关信息)的对象,其内容还应 包括为事件响应者提供的服务。 2)事件源:即产生事件的对象。当事件发生时,它负责创建事件信号并 调用事件激活程序,向事件订阅者们发出事件信号(事件对象)。 3)事件响应者:需要对事件做出相应的对象。一个事件可以有多个事件 响应者。
对于任何对象来说,对象的状态取决于它的各种行为不断积累所 产生的结果。在任何给定的时间点,对象的当前状态就包括它所具有 的所有特性、所处的具体情形、满足的条件以及其属性的当前值。
第7章面向对象软件开发过程-UP介绍
§7a.2 UP的阶段(细化阶段,elaboration)
细化阶段的产出:
–用例模型(完成至少80%)……所有用例均 被识别,大多数用例描述被开发; –补充捕获非功能性要求和未关联于特定用例 要求的需求(补充规范) –软件体系结构描述 –可执行的软件原型 –经修订过的技术风险清单和商业案例 –总体项目的开发计划,包括粗粒度的项目计 划,显示迭代过程和对应的审核标准; –用户手册的初始版本(可选)
–进行β测试以期达到最终用户的需要; –β测试版本和旧系统的并轨; –转换功能数据库; –对最终用户和产品支持人员的培训; –提交给市场和产品销售部门; –和具体部署相关的工程活动; –协调bug修订、改进性能和可用性(usability)等工 作; –基于完整的构想和产品验收标准对最终部署做出评估; –达到用户要求的满意度; –达成各风险承担人对产品部署基线已经完成的共识; –达成各风险承担人对产品部署符合构想中标准的共识
23
§7a.4 核心工作流 –工作流是产生具有可观察结果的活动序列
24
§7a.4 核心工作流
25
§7a.4 核心工作流(商业建模)
商业建模
–大多数商业工程化的主要问题是软件工程人 员和商业工程人员之间不能正确地交流,这 导致了商业工程的产出没有作为软件开发输 入而正确地被使用,反之亦然。 –在商业建模中使用商业用例来文档化商业过 程,从而确保了组织中所有商业过程人员达 到共识。 –商业用例被分析以理解商业过程如何被业务 支持,而这些在商业对象模型中被核实。 –许多项目可能不进行商业建模。
26
§7a.4 核心工作流(需求)
需求
–是描述系统应“做什么”,并允许开发人员 和用户就该描述达成共识。
创建构想 建立用例模型
面向对象的系统分析与设计(山东联盟)智慧树知到答案章节测试2023年山东财经大学
第一章测试1.下面关于功能分解法的优点描述错误的是A:与模块化编程结合使用后,使开发效率有很大提高B:以系统需要提供的功能为中心组织系统C:删除了GoTo语句,使软件能得到有效维护D:具有较强的应对需求变化的能力答案:D2.下面的开发方法能够兼顾功能和数据的是A:面向对象方法B:信息建模法C:结构化方法D:功能分解法答案:A3.结构化方法采用数据流、加工进行建模,需求变化极易引起两者的变动,进而引起其他数据流和加工的变化A:错B:对答案:B4.功能分解法以功能作为系统的构造块,数据组织能力强。
A:错B:对答案:A5.面向对象方法学的出发点和基本原则是尽可能模拟人类习惯的思维方式,分析、设计和实现一个软件系统的方法和过程,尽可能接近于人类认识世界解决问题的方法和过程。
因此面向对象方法有许多特征,如软件系统是由对象组成的;();对象彼此之间仅能通过传递消息互相联系;层次结构的继承。
A:强调需求分析重要性B:把对象划分成类,每个对象类都定义一组数据和方法C:对既存类进行调整D:开发过程基于功能分析和功能分解答案:B第二章测试1.下列关于UML叙述正确的是()。
A: UML仅是一组图形的集合B: UML仅适用于系统的分析与设计阶段C: UML是一种语言,也是系统设计的方法D:在信息系统开发过程方面,UML是一种建模语言,不是对开发过程的细节进行描述的工具答案:D2.UML的最终产物就是最后提交的可执行的软件系统和()。
A: 类图B: 动态图C: 用户手册D: 相应的软件文档资料答案:D3.UML提供了4种静态图用于对系统的静态方面进行可视化、详述、构造和文档化。
其中()是面向对象系统建模中最常用的图,用于说明系统的静态设计视图。
A: 部署图B: 组件图C: 对象图D: 类图答案:D4.UML提供了4种结构图用于对系统的静态方面进行可视化、详述、构造和文档化。
其当需要显示代码物理结构,并用于实际的编程时,应该选择()。
《面向对象程序设计》第07章在线测试
A B C D
A B C D A、共享所有数据成员,每个对象还包含基类的所有B
C、不共享任何数据成员,但每个对象还包含基类的
D A B C D A B C D
B、能够通过成员运算符访问
C、仍然是基类的私有成员
D、变为派生类的私有成员
3、当保护继承时,下面说法正确的是()
A、基类的成员的访问权限在派生类中不变
B、在类作用域外能够通过派生类的对象来直接访问基类的公有成员
C、基类的保护成员和私有成员在派生类中的访问权限为受保护的
D、基类的公有成员在派生类中的访问权限为受保护的
4、当派生类中有和基类一样名字的成员时,下面说法错误的是()。
A、将产生二义性
B、派生类的同名成员将覆盖基类的成员
C、是不能允许的
D、基类的同名成员将覆盖派生类的成员
5、含有虚基类的派生类的构造函数调用次序错误的是()
A、虚基类,基类,派生类,对象成员
B、基类,派生类,对象成员,虚基类
C、对象成员,基类,虚基类,派生类
D、基类,虚基类,对象成员,派生类
第三题、判断题(每题1分,5道题共5分)
1、基类的保护成员在派生类中仍然是保护成员。
正确错误
2、基类的保护成员不能被派生类的对象访问。
正确错误
3、私有继承时基类中的public成员在派生类中是private的。
正确错误
4、在公有继承中,基类中只有公有成员对派生类是可见的。
正确错误
5、解决多继承情况下出现的二义性的方法之一是使用成员名限定法。
正确错。
第4讲 面向对象的程序设计
(3)私有成员 私有成员通过在成员声明中使用private修饰 符来定义.C#中的私有成员只有类中的成员 可以访问,在类的外部是禁止直接访问私有 成员的.这也是C#中成员声明的默认方式, 即若在成员声明时没有使用任何访问修饰符, 那么C#自动将它限定为私有成员. (4)内部成员 内部成员通过在成员声明中使用internal修饰 符来定义.该成员只能被程序集中的代码访 问,而程序集之外的代码无法访问.
(3)不能显式地调用析构函数. (4)析构函数的命名规则是在类名前加上一个"~"号. 如上例的Example1类的析构函数为: ~Example1() { }; (5)析构函数在对象销毁时自动调用. 【例7-3】 类的构造函数和析构函数的演示.(程序代 码详见例7-3)[执行结果]
using System; class Exam { static public int a;//静态成员 public int b;//实例成员 public Exam()//构造函数,没有参数,用来给成员变量赋初值0 { a=0; b=0; } public Exam(int m,int n)//构造函数,有参数,用来给成员变量赋特定的初值 { a=m; b=n; } ~Exam()//析构函数 {} } class A_7_3 { public static void Main() { Exam E1=new Exam();//产生类的实例E1,自动调用无参数的构造函数 Console.WriteLine("a={0},b={1}",Exam.a,E1.b); Exam E2=new Exam(10,20);//产生类的实例E2,自动调用有参数的构造函数 Console.WriteLine("a={0},b={1}",Exam.a,E2.b); } }
EPLAN培训第7章面向对象的设计
导航器为集中管理项目数据提供了可 能,概括起来导航器有以下四种功能。
(1)中央管理器。所有项目中的元件、设 备、部件都集中到导航器中进行集中的编 辑和管理。
(2)预设计。可以进行项目的初始规划, 不管元件、设备或部件放置是否在原理图 上。
元件(组件):元件是组成设备的个体 单位。元件(组件)是可以用符号描述 的,因此,元件(组件)和符号是相互 关联的。
符号:是元件(组件)的图形化表示。 当在原理图上插入一个符号,有关符号 位置的参考被系统记录,一旦这个参考 被建立,符号的“实例”也就被建立。
7.3.1 标识字母
图7-7 标识字母集
7.2.3 放置
通过“新建”“新设备”或“导入” 的方法,在设备导航器中建立了许多未放 置的设备。
在导航器中单击鼠标右键弹出菜单, 如图7-6所示,选择【放置】>【多线】。
图7-6 设备导航器中放入放置
7.3 设备
首先,需要明确设备、元件和符号 的概念。 设备:是由一个或多个元件组成。最为 典型的例子是接触器线圈和触点,这里 线圈和触点是元件。这里包含主功能线 圈和辅助功能触点。一个单极空气开关 即是设备又是元件。设备是用设备名称 进行标识的。
图7-19 “属性(元件):常规设备”标签下主功能的设置
图7-20 “符号数据/功能数据”标签下主功能的设置
7.3.8 同步功能文本
同步功能文本使同一设备的主功能和不 同的辅助功能的功能文本得到同步。
不论是选择主功能还是选择辅助功能, 功能文本都将轻松同步。
特别提醒:只能是同一设备,不同设备 不能用使用此功能编辑。
图7-8 当前标识字母集
Java面向对象程序设计案例教程课件:图形用户界面开发与事件处理
《Java面向对象程序设计案例教程》
7.2 Swing基础
• Swing组件是Java语言提供的第二代GUI设计工 具包,它以AWT为基础,在AWT内容的基础上 新增或改进了一些GUI组件,使得GUI程序功能 更强大,设计更容易、更方便。
• Swing与AWT有以下不同。
• (1) Swing是完全用Java语言编写的,所以称 Swing组件是轻量级组件,没有本地代码,不依 赖操作系统的支持,比AWT构件具有更强的实 用性。Swing在不同的平台表现一致,并且有能 力提供本地窗口系统不支持的其他特性。
《Java面向对象程序设计案例教程》 • Swing的类层次结构如图所示:
《Java面向对象程序设计案例教程》
• 3. 简单的范例 • 一个简单的Swing GUI应用程序。该程序生成一个窗
口, • 窗口中有一个标签,用于显示输出。 • (1) 程序代码: • 1. import java.awt.* ; • 2. import javax.swing.* ; • 3. public class SwingDemo • 4. { • 5. public static void main(String args[]) • 6. { • 7. JFrame fm = new JFrame("第一个Windows程序") ; • 8. JLabel label = new JLabel("这是第一个GUI程序") ;
• 教材例题7-12 利用组合框显示、选取地名。
• 教材例题8.2 ,例题8.3用不同方法生成JFrame窗口
《Java面向对象程序设计案例教程》
• 7.3.2 面板容器JPanel
• 面板JPanel也是Java中常用到的容器之一,面板是一种透明 的容器,既没有标题,也没有边框,就像一块透明的玻璃。 与JFrame不同,它不能作为最外层的容器单独存在,它首 先必须作为一个构件放置到其他容器中,然后再把它作为容 器,把其他构件放到其中。
第1-7章C++面向对象程序设计 作业参考答案
cout<<"long"<<max(a2,b2)<<endl;
cout<<"double"<<max(a3,b3)<<endl;//使用相同的函数名求不同类型数据的绝对值
return 0;
}
int max(int a,int b)
{int c;
一个类的内部数据结构和其所有成员函数的定义部分称为类的实现。
2.3公用public成员和私有private成员有何区别?
【解答】
私有private成员只能被该类中的其他成员访问,而程序中的其它代码是不能直接访问这些变量的。
公用public成员既可以被该类的其他成员访问,也可以被程序中的其它代码访问。类中的公用成员对外部代码是开放的,通常情况下,程序中的其它代码通过类的公用成员函数来访问类的私有成员。
方法:面向对象程序设计中的术语“方法”对应于对象的行为(能力),即它是实现对象所具有的功能操作的代码段。在C++程序中,方法即是类中定义的成员函数,它是该类对象所能执行的操作的算法实现。
消息:在面向对象的程序中,一个对象向另一个对象发出的请求称为消息。消息是要求某个对象执行其中某个功能操作的规格说明。程序中的所有对象通过消息传递实现相互协作,完成一些特定的任务。
{ Rectangle Rect(10,15);
cout<<"Area is:"<<Rect.area()<<endl;
}
第
3.1解释下列名词:
《面向对象程序设计》课程标准
《面向对象程序设计》课程标准1.课程说明《面向对象程序设计》课程标准课程编码〔 38321 〕承担单位〔计算机信息学院〕制定〔〕制定日期〔2022年11月16日〕审核〔专业指导委员会〕审核日期〔2022年11月20日〕批准〔二级学院(部)院长〕批准日期〔2022年11月28日〕(1)课程性质:本门课程是物联网应用技术专业的必修课程。
(2)课程任务:主要针对程序员、测试员等岗位开设,主要任务是培养学生在软件工程项目开发岗位上的程序设计能力,要求学生掌握面向对象程序设计方面的基本技能。
(3)课程衔接:在课程设置上,前导课程有《计算机应用基础》、《C语言程序设计》、《Java程序设计》,后续课程有《物联网应用系统开发》、《物联网综合项目实训2》。
2.学习目标通过本门课程的学习,使学生掌握面向对象的基本概念和使用面向对象技术进行程序设计的基本思想;掌握面向对象编程工具的使用方法;培养学生动手开发程序的能力,使学生养成善于观察、独立思考的习惯,同时通过教学过程中的实际开发环节强化学生的职业道德意识和素养,为学生以后从事专业化软件开发工作奠定坚实基础。
通过本门课程的学习,使学生熟练掌握C#程序设计开发运行的环境配置和使用方法,使学生能够应用C#程序设计语言进行程序编写和调试,进一步掌握面向对象程序设计的基本理念。
3.课程设计本课程以C#物联网实训系统项目为载体,与新大陆公司合作设计了若干个典型事例作为具体的学习情境;根据岗位要求,确定学习目标及学习任务;本课程采取项目教学和案例教学的教学模式,以学生为主体、以培养学生面向对象程序设计能力和提高团队合作意识为导向组织教学考核。
表1:学习领域的内容与学时分配表2:课程总体设计4.教学设计表3:学习情境设计5.课程考核本课程的考核主要由平时成绩、期末考试两部分组成。
其中:(1)平时成绩:平时成绩占总成绩的30%,主要考查指标有:平时上课出勤情况、课堂表现、作业完成情况、实训环节等。
第七章-面向对象设计PPT课件
面向对象的软件设计过程
7.1 设计用例实现方案
本节介绍UML交互图的语言机制和用例实现方案的设 计方法。
UML的交互图包括顺序图和协作图,适于用例实 现方案的表示。
用例实现方案的设计方法有三个步骤: (1) 提取边界类、实体类和控制类; (2) 构造交互图; (3) 根据交互图精化类图。
7.1.1 顺序图
(1) 界面控制:包括输入数据的格式及内容转换,输出结果的 呈现,软件运行过程中界面的变化与切换等。
(2) 外部接口:实现目标软件系统与外部系统或外部设备之间 的信息交流和互操作。主要关注跨越目标软件系统边界的 通信协议。
(3) 环境隔离:将目标软件系统与操作系统、数据库管理系统、 应用服务器中间件等环境软件进行交互的功能与特性封装 于边界类之中,使目标软件系统的其余部分尽可能地独立 于环境软件。
UML四种类型的消息
(1) 简单消息(Simple Message) 以一种简单、抽象的函数表示对象之间的信息传 递,不考虑通信过程的内部细节。简单消息在 UML顺序图中用普通的有向箭头表示。
(2) 同步消息(Synchronous Message) 消息源发出消息后必须等待消息处理过程完毕并返 回处理结果后,消息源才可继续执行后续操作。前 面所述的自调用消息应该是同步的。同步消息的表 示图元与简单消息相同,这表明UML在缺省情形 下认为简单消息即为同步消息。
第七章 面向对象的设计方法
设计用例实现方案 设计技术支撑方案 设计用户界面 精化设计模型 RUP中的分析与设计流程
面向对象的设计方法
基于UML的面向对象设计方法将分析模型转换为设 计模型。
面向对象: 分析模型---顶层架构图、用例与用例图、领域概念 模型构成。 设计模型----- 以包图表示的软件体系结构图 以交互图表示的用例实现图 完整、精确的类图 复杂对象的状态图 描述流程化处理过程的活动图
第7章-实用软件工程(第4版)-陆惠恩-清华大学出版社
7.5.4 面向对象设计的启发规则
1.设计结果应该清晰易懂 2.一般—特殊结构的深度应适当 3.设计简单的类 4.使用简单的协议 5.使用简单的服务 6. 把设计变动减到最小
《实用软件工程(第3版)》 陆惠恩编著
13
7.6 面向对象系统的实现
7.6.1 选择面向对象语言
1. 选择编程语言的关键因素 2. 面向对象语言的技术特点 3.选择面向对象语言的实际因素
《实用软件工程(第3版)》 陆惠恩编著
10
4 、 画状态转换图
【例7.5】分别画出旅馆管理系统中旅客和床位的状态转换图。
《实用软件工程(第3版)》 陆惠恩编著
11
7.4 建立功能模型
确定输入、输出值 画数据流图 定义服务
7.5 面向对象设计
7.5.1 系统设计
1. 将系统分解为子系统 2. 设计问题域子系统 3. 设计人-机交互子系统 4. 设计任务管理子系统 5. 设计数据管理子系统
7.7.2 面向对象的测试步骤
1、制定测试计划 2、设计测试用例 3、实现测试构件 4、集成测试 5、系统测试 6、测试评估
《实用软件工程(第3版)》 陆惠恩编著
15
第7章 小结
面向对象方法是一种将数据和处理相结合的方法。 面向对象方法不强调分析与设计之间的严格区分。 面向对象分析
1、发现对象 2. 分析对象之间的关系 3.划分主题 4.编写脚本、建立动态模型 5.建立功能模型
《实用软件工程(第3版)》 陆惠恩编著
3
7.2.3 确定类的相互关系
1. 类的一般-特珠关系
《实用软件工程(第3版)》 陆惠恩编著
4
2. 聚集关系
“整体—部分”关系
90 80 70 60 50 40 30 20 10
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
和数据层三个部分,其数据处理流程如下图所示。
分布式系统结构
(1)表示层:表示层是应用系统的用户界面部分,担负着
用户与应用程序之间的对话功能。它用于检查用户从键盘等 输入的数据,显示应用程序输出的数据,一般采用图形用户 界面(graphic user interface, GUI)。 (2)应用逻辑层:应用逻辑层为应用系统的主体部分,包
分布式环境下,构件是一些灵活的软件模块,它们可以 位置透明、语言独立和平台独立地互相发送消息,实现 请求服务。 构件之间并不存在客户机与服务器的界限,接受服务者 扮演客户机的角色,提供服务者就是服务器。
分布式系统结构
当前主流的分布式对象技术规范有OMG的CORBA、 Microsoft公司的.NET和Sun公司的J2EE。 它们都支持服务端构件的开发,都有其各自的特点。
面向对象设计准则
传统的面向过程方法中的模块通常是函数、过程及子程序 等,而面向对象方法中的模块则是类、对象、接口、构件 等。 在面向过程的方法中,数据及在数据上的处理是分离的; 而在面向对象方法中,数据及其上的处理是封装在一起的, 具有更好的独立性,也能够更好地支持复用。
(1) 模块化
面向对象设计过程与准则
问题域部分的设计
(5) 调整继承的支持级别
如果在分析模型中一个泛化关系中的特化类继承了多个类 的属性或服务,就产生了多继承关系,如图所示。
问题域部分的设计
1) 针对单继承语言的调整。对于只支持单继承关系的编程语 言,可以使用两种方法将多继承结构转换为单继承结构。 把特化类看做是泛化类所扮演的角色,如图(a)和图(b)所示。
Web应用系统的界面设计
界面设计目标
(5) 导航性:我们已经在前面提及了导航应该简单和一致,也 应该以直观的和可预测的方式来设计。也就是说,用户不 必搜索导航链接和帮助就知道如何使用Web应用系统。 (6) 视觉吸引:在所有类型的软件中,Web应用系统毫无疑问 是最具有视觉效果的、最生动的、也是最具有审美感的。 (7) 兼容性:Web应用系统会应用于不同的环境(例如,不同的 硬件、Internet连接类型、操作系统、浏览器),并且必须 互相兼容。
面向对象设计过程与准则
人机交互部分 有效的人机交互所必须的实际显示和输入。 问题域部分 放置面向对象分析结果并管理面向对象分析的某些类和 对象、结构、属性和方法。 任务管理部分 任务定义、通信和协调、硬件分配及外部系统。 数据管理部分 永久性数据的访问和管理。
面向对象设计过程与准则
问题域部分的设计
把多继承的层次结构平铺为单继承的层次结构,如图所示。 这意味着该泛化关系在设计中就不再那么清晰了。同时某 些属性和服务在特化类中重复出现,造成冗余。
问题域部分的设计
2) 针对无继承语言的调整。
编程语言中的继承属性提供了表达问题域的一般化∕特殊 化语义的语法,它明确地表示了公共属性和服务,还为通 过可扩展性而达到可复用性提供了基础。 然而,由于开发组织方面的原因,有些项目最终选择了不 支持继承性的编程语言。对于一个不支持继承的编程语言 来说,只能将每一个泛化关系的层次展开,成为一组类及 对象,之后再使用命名惯例将它们组合在一起。
软件工程
Software Engineering
1
第7章 面向对象的设计
从面向对象分析到面向对象设计(通常缩写为 OOD),是一个逐渐扩充模型的过程。或者说,面 向对象设计就是用面向对象观点建立求解域模型的 分析和设计活动是一个多次反复迭代的过程,二者 的界限是模糊的。
2
第7章 面向对象的设计
(2)
抽象 面向对象方法不仅支持过程抽象,而且支持数据抽象。类 实际上就是一种抽象数据类型。可以将类的抽象分为规格 说明抽象及参数化抽象。
类对外开放的公共接口构成了类的规格说明,即协议。这 种接口规定了外部可以使用的服务,使用者无需知道这些 服务的具体实现算法。通常将这类抽象称为规格说明抽象。 参数化抽象是指当描述类的规格说明时并不具体指定所要 操作的数据类型,而是将数据类型作为参数。
问题域部分的设计
在面向对象设计过程中,可能对面向对象分析所 得出的问题域模型做以下方面的补充或调整。 (1)调整需求。有两种情况会导致修改通过面向对象 分析所确定的系统需求:
一是用户需求或外部环境发生变化; 二是分析员对问题理解不透彻,导致分析模型不能完整、 准确地反映用户的真实需求。
问题域部分的设计
分布式系统结构
传统的C/S体系结构分为两层。在这种体系结构中,一 个应用系统被划分为客户机和服务器两部分。典型的两层 C/S体系结构如下图所示。
12
分布式系统结构
三层C/S体系结构中增加了应用服务器。可以将整 个应用逻辑驻留在应用服务器上,而只有表示层存 在于客户机上。
13
分布式系统结构
三层C/S体系结构将整个系统分成表示层、应用逻辑层
面向对象设计过程与准则 体系结构 系统分解 问题域部分的设计 人机交互部分的设计 任务管理部分的设计 数据管理部分的设计 对象设计
面向对象设计过程与准则
典型的面向对象设计模型
面向对象设计过程与准则
Coad&Yourdon的面向对象设计模型
Coad & Yourdon基于MVC(Model-View-Controller)模型, 在逻辑上将系统划分为4个部分,分别是问题域部分、人机 交互部分、任务管理部分及数据管理部分,每一部分又可 分为若干子系统。 Coad 与 Yourdon 在设计阶段中继续采用了分析阶段中提 到的5个层次,用于建立系统的4个组成成分。每一个子系 统都由主题、类-&-对象、结构、属性和服务5个层次组成。 这5个层次可以被当作整个模型的水平切片。
修改与问题域类相关的关联。
问题域部分的设计
(3) 把问题域类组合在一起
在进行面向对象设计时,通常需要先引入一个类,以便将 问题域专用的类组合在一起,它起到“根”类的作用,将 全部下层的类组合在一起。 当没有一种更满意的组合机制可用时,可以从类库中引进 一个根类,作为包容类,把所有与问题领域有关的类关联 到一起,建立类的层次。 之后,将同一问题领域的一些类集合起来,存于类库中。
分布式系统结构
• 分布式对象体系结构
在客户机/服务器模型中,客户机和服务器的地位是不 同的。为了消除客户机与服务器之间的差别,提高系统 的伸缩性以及有效地均衡负载,可采用分布式对象体系 结构来设计系统。 分布式对象的实质是在分布式异构环境下建立应用系 统框架和对象构件,它将应用服务分割成具有完整逻辑 含义的独立子模块(称为构件),各个子模块可放在同 一台服务器或分布在多台服务器上运行,模块之间通过 中间件互相通信。
体系结构框架
• MVC框架
MVC框架即模型—视图—控制器(model-view-controller) 框架。一个交互式应用系统由模型、视图和控制器3个部件 组成。
体系结构框架
MVC框架
22
体系结构框架
• J2EE体系结构框架
J2EE的核心体系结构就是在MVC框架的基础上进行扩 展得到的,如下图所示。
问题域部分的设计
(4) 增添泛化类以建立类间的协议
有时某些问题域的类要求一组类似的服务(以及相应的属 性)。此时,以这些问题域的类作为特化的类,定义一个 泛化类。 该泛化类定义了为所有这些特化类共用的一组服务名,作 为公共的协议,用来与数据管理或其他外部系统部件通信。 这些服务都是虚函数。在各个特化类中定义其实现。
(3) 一般—特殊内聚:设计出的一般—特殊结构,应该符合多 数人的概念,更准确地说,这种结构应该是对相应的领域 知识的正确抽取。
面向对象设计过程与准则
(6) 软件重用是提高软件开发生产率和目标系统质量的 重要途径。 重用基本上从设计阶段开始。重用有两方面的含义: 一、尽量使用已有的类(包括开发环境提供的类库, 及以往开发类似系统时创建的类), 二、如果确实需要创建新类,则在设计这些新类的 协议时,应该考虑将来的可重复使用性。
(4) 简要说明用户如何从界面提供的界面信息来解释系统状态。
Web应用系统的界面设计
• 界面设计目标
(1) 简单性:尽量做到适度和简单,不要在页面上提供太多 的东西。 (2) 一致性:这一设计目标几乎适用于设计模型的每一个元
素。
(3) 确定性:Web应用系统的美学、界面和导航设计必须与 将要构造的应用系统所处的领域保持一致。 (4) 健壮性:在已经建立的确定性的基础上,Web应用系统 通常会给用户明确的“承诺”。
含具体的业务处理逻辑。通常在功能层中包含有确认用户对
应用和数据库存取权限的功能以及记录系统处理日志的功 能。
(3)数据层:数据层主要包括数据的存储及对数据的存取
操作,一般选择关系型数据库管理系统(RDBMS)。
分布式系统结构
浏览器/服务器(browser/server,B/S)风格是 三层体系结构的一种实现方式,其具体结构为浏览器 /Web服务器/数据库服务器。B/S体系结构如下图所 示。
应用程序 表示层 客户层 表示逻辑 内容管理 会话管理 应用逻辑 业务规则 业务对象 数据访问 消息接发 服务集成 业务层 集成层 资源层
J2EE的核心体系结构框架
问题域部分的设计
典型的面向对象系统一般由三层组成,即数据库层、业务 逻辑层及用户界面层。那么,在这三层中,首先从哪一层 开始设计呢? 实际上,面向对象的设计也是以面向对象分析的模型为基 础的。 面向对象的分析模型包括有用例图、类图、顺序图和包图, 主要是对问题领域进行描述,基本上不考虑技术实现,当 然也不考虑数据库层和用户界面层。 面向对象分析所得到的问题域模型可以直接应用于系统的 问题域部分的设计。 所以,面向对象设计应该从问题域部分的设计开始,也就是 三层结构的中间层——应用逻辑层。