文档库 最新最全的文档下载
当前位置:文档库 › 面向对象实验报告

面向对象实验报告

面向对象实验报告
面向对象实验报告

昆明理工大学信息工程与自动化学院学生实验报告

(2013 —2014 学年第 1 学期)

课程名称:面向对象建模技术开课实验室:信自楼444 2013年10月24日

一、实验目的

1、了解PowerDesigner15.1 环境的安装配置。

2、实践使用PowerDesigner 进行面向对象建模的基本方法。

二、实验原理

面向对象模型是利用统一建模语言(UML)来描述系统结构的模型,它从不同角度表现系统的工作状态。以助于用户、管理人员、系统分析员、开发人员、测试人员和其它人员之间进行信息交流。采用标准建模语言UML,对企业应用系统从需求,分析与设计,实施等不同阶段的全面建模,也是目前的主流方式。面向对象建模(OOM)是利用UML 来描述系统结构的模型。

PowerDesigner 是Sybase 公司的CASE 工具集,是图形化、易于使用的企业建模环境。在PowerDesigner 中用户可以采用典型的面向对象分析方法,如用况驱动的软件分析与开发,即由需求模型出发,建立用况图,类图及其顺序图,进而组件与部件图。同时,PowerDesigner 是一个集成环境,各个模型之间可以快捷的模型同步与管理。本实验主要介绍如何创建用况图、类图和顺序图。

三、所用仪器、材料

微型计算机一台、Sybase PowerDesigner15.1 软件。

四、实验过程、内容

1、实验题目

PowerDesigner OOM 可以设计UML 的所有图例。在本实验中,主要介绍其中的用况图、类图和顺序图。

1) 描述创建OOM 的配置过程。

2) 说明创建用况图、类图和顺序图的操作步骤,并应用于实例。

2、实验过程

1) 创建OOM

为创建OOM 及定义模型的属性和选项,具体步骤如下:

?步骤1:进入PowerDesigner 开发环境,单击工具栏中的创建(NewModel)按钮,弹出New Model 对话框。

?步骤2:在New Model 对话框左边的Model type 栏中选择Object-Oriented Model (面向对象模型) 。在对话框右边的Diagram 栏中选择图形的类别,包括类图、用况图、顺序图、构件图和活动图等。

在对话框下边的各个选项的含义如下:

? Model name:模型名称。

? Object language:选择对象语言,包括:Analysis、C#、C++、IDL-CORBA、Java、PowerBuilder、Visual https://www.wendangku.net/doc/a03364452.html,、VisualBASIC 6、XML-DTD 和XML-Schema 等。

? Share the object language definition:共享目标对象语言描述文件。

? Copy the object language definition in model:创建一个目标对象语言描述文件的副本。

请记录在OOM 中可以创建的UML 图形:

在OOM 中可以创建的UML 图形

?步骤3:使用系统的默认设置(Java 语言、类图等) ,单击OK(确定)按钮,进入OOM 设计工作区。在该工作区中,可以定义OOM 的属性和操作,也可以设计各种UML 图形。?步骤4:在模型(Model)菜单中单击Model Properties…命令,显示OOM 属性定义窗口。OOM 的General 属性页的选项包括:

?Name:模型名称,例如“Tutorial OOM”。

?Code:模型代码,例如“Tutorial_OOM”。

?Comment:模型注释。

?Author:作者。

?Version:版本。

?Object language:模型中的对象语言,例如“Java”。

?Default diagram:默认使用的图形,例如“ClassDiagram_1”。

?步骤5:定义完毕单击OK(确定)按钮。然后在文件(File)菜单中单击另存为(Save As…)命令,以“Tutorial.OOM”这个名称保存所定义的模型。

?步骤6:设置模型选项。在工具(Tools)菜单中单击Model Options…命令,打开Model

Options (模型选项) 对话框。部分选项的含义如下:

?Show classes as data types:将类当成数据类型显示。

?Preview editable:预览时允许编辑。

?Default data types:默认的数据类型。包括Attribute (属性) 、Operation (操作) 和Parameter (参数) 等。

?Domain/Attribute:域/属性,强制域与数据项之间无分歧

(Enforce non- divergence)。包括域与数据项强制无分歧

(Enforce non- divergence) 、数据类型(Data Type) 、数据校验(Check) 和规则(Rules) 等。?Message:消息。选择是否支持延时(Support Delay) 。

?步骤7:单击Set As Default 按钮,选择默认选项,然后,单击OK按钮。

请简要描述你创建OOM 的操作过程。

2) 创建用况图

为创建用况图,可按以下步骤操作:

?步骤1:在OOM 设计窗口New Model 对话框右侧的Diagram 栏中选择Use Case Diagram (用况图) 图形类别。

?步骤2:单击O K(确定)按钮,进入用况图设计工作区。这时,Palette(调色板)面板上将显示用况图基本构件工具。可以对用况图的显示参数进行设置,具体方法是:

?步骤1:在用况图设计环境中,单击工具(Tools)菜单中的显示参数选择(Display Preferences…)命令,打开显示参数设置窗口。单击General 节点,在右面的窗格中可以定义整个工作区的Windowcolor (背景色) 、Unit (显示单位) 、Grid (网格线) 等属性。

?步骤2:单击Content 节点,在右边窗格定义Name Splitting (名称分拆) 属性。

?步骤3:单击Format 下的Use Case 节点,可以定义用况图内容的显示格式。单击Modify…按钮,可打开显示参数定义窗口,为用况图定义特殊的显示格式。

按照下列步骤建立一个“客户订单处理”用况图:

?步骤1:定义用况。在Palette(调色板)面板上单击用况(Use Case)工具,再在工作区中4 次单击,以定义4 个用况。

?步骤2:设置4 个用况的属性:每次选中并双击一个用况,打开UseCase Properties (用况属性定义) 窗口,根据表1 设置Name 和Code

属性。

表1 用况

?步骤3:定义参与者。在Palette(调色板)面板中单击角色(Actor)工具,定义3 个参与者。

?步骤4:设置3 个参与者的属性:每次选中并双击一个参与者,打开Actor Properies (参与者属性定义) 窗口,根据表2 设置Name 和Code 属性。

?步骤5:定义参与者和用况之间的9 个关系。在Palette(调色板)面板中单击联合(关联)(Association)工具,再单击一个参与者并拖动鼠标至相应的用况,释放鼠标,这时,在该参与者和用况之间建立了关系。双击这个关系,打开Association Properties (关

系属性定义) 窗口,根据表3 设置Name 和Code、Orientation 属性。

表3 参与者和用况之间的关系

记录你所创建的用况图,并请简要描述你的操作过程。

3) 创建类图

类(class) 是定义同一类所有对象的变量和方法的蓝图或原型,这些对象拥有类似的结构和行为,相同的属性、操作、联系等,例如车辆,汽车,卡车等。

I 创建类

为设计类图,可按以下步骤操作:

?步骤1:在OOM 设计窗口New Model 对话框右侧的Diagram 栏中选择Class Diagram (类图) 图形类别。

?步骤2:单击O K(确定)按钮,进入类图设计工作区。这时,Palette(调色板)面板上显示类图基本构件工具。

?步骤3:单击类图Palette(调色板)面板中的Class (类) 工具,再到工作区中单击鼠标,即可创建一个类。

?步骤4:双击工作区中类的图形符号,打开类属性定义窗口。其中General 页中各选项的含义是:

? Name 和Code:类的名称和代码。

? Stereotype:类的版型。选择不同的语言,系统会提供不同的版型。

? Type:类的实现。包括Class、Generic 和Bound。

? Visibility:类的可视性。包括Public、Private、Protected和Package。例如,选择Package,表示包含在同一个包内的所有对象都可见。

? Cardinality:基数,表示类可以拥有实例的最小和最大数量。取值分别为:0..1,类拥有0 到1 个实例;0..*,类拥有0到无穷个实例;1..1,类拥有1 个实例;1..*,类拥有1 到

无穷个实例。

? Abstract:抽象类,这种类不能被实例化。

? Final:最终类,表示不能被继承。

? Generate code:表示在内部模型生成时,类自动生成相应的对象。

?步骤5:选择Detail 页,可以定义类的类型。其中各选项的含义是:

? Persistent:持久性类。

? Code:类的代码。

? Abstract Data Type(ADT):是否选用抽象数据类型。

? Inner to:当前类附加的类。

? Association class:关联类。

?步骤6:选择Operations 页,单击Add… (增加操作) 按钮,可从中选择该模型中其它类包含的操作。然后,所选的操作就可以增加到当前类上。

?步骤7:选择Attributes 页,可以把其它类中的属性增加到当前类上。

?步骤8:单击“More.>>”按钮可以打开更多的类属性页。

?例如,选择Inner Classifiers 页,可以为该类定义内部类。内部类是PowerDesigner 的一个分类器(classifier) 。在UML 中,分类器是一个包含有属性和操作等的模型元素。把类或接口的定义连接到另一个类或接口的定义中,就产生了内部类。

?步骤9:定义完毕后,可以通过Preview 页,观察当前类或接口所连接的内部类代码。?步骤10:此外,还可以定义Associations、Identifiers 等属性。属性定义完毕后,单击OK(确定)按钮关闭该窗口。

II 创建Attribute (属性)

类的属性表示类或接口特征的集合。一个类或接口可以拥有多个属性,也可以不包含属性。在两个类或接口中可以包含同名的属性。

类或接口的属性可以新建,也可以从父类或父接口那里继承而来。可以通过单击类属性定义窗口中Attributes 页下部的Inherited… (继承) 按钮观察继承来的属性。选择一个属性,然后单击Properties (属性) 图标,可以进一步定义更详细的选项。增加了属性的类或接口会以图形符号的方式在OOM 模型中显示,还可以通过单击工具(Tools)菜单中的显示参数选择(Display Preference…)命令来设置显示方式。

III 创建Identifier (标识符)

标识符是类的属性或属性的组合,其值能唯一标识类中的每个实例。标识符分为主标识符(primary identifier)和次标识符(secondary identifier)。主标识符与PDM 中表的主键对应,次标识符与表的候选键对应。当利用CDM 或PDM自动生成OOM 时,CDM 的标识符或PDM 中表的主键和候选键生成OOM 中类的标识符。在类属性定义窗口中选择Identifier 页,可定义类的标识符属性。可以利用Attributes 页为标识符选择所包含类的属性。还可以利用Rules页将一个特定规则附加到标识符上;在Notes 页中增加注释;或者在VersionInfo 页中查看版本信息等。

IV 创建Interface (接口)

接口是描述类的部分行为的一组操作,这组操作可以被多个类重复使用。

注意,一般是部分操作,指类外部的可以供其它类进行调用的操作,而不是全部操作。但接口与类不同,接口不能自己执行,只能被类调用。

创建接口的具体过程如下:

?步骤1:在类图工作区中,单击Palette(调色板)面板的Interface工具,在窗口空白区域单击鼠标,可以新建一个接口。

?步骤2:双击接口图形符号,打开接口属性定义窗口。其中General页中各选项的含义是:? Name 和Code:接口的名称和代码。

? Stereotype:版型。

? Visibility:接口的可视性,包括public、private、protected、package。

? Inner to:当前接口所连接的内部类名称。

?步骤3:还可以添加Attributes、Operations、Inner Classifier等属性,这些与类的属性类似。

?步骤4:定义完毕后,还可以将接口与类相连接。V 创建Operation (操作)操作表示类能够做的事情,或者另外一个类对该类所做的事情。一个类可以没有或有多个操作。为在类或接口中增加操作和操作的属性,可按以下步骤执行:

?步骤1:在类属性窗口的Operation 页中单击Insert A Row(插入一行)按钮,增加一个新操作,单击Apply(应用)按钮,选择Properties 图标,打开操作属性定义窗口。其中General 页中各选项的含义是:

? Parent:操作所属的类。

? Name 和Code:操作的名称和代码。

? Stererotype:版型。包括Constructor 类实例化期间调用的操作;Create 实例化一个对象是使用的操作;Destroy 销毁一个类的实例时的操作;Procedure 利用OOM 生成PDM 时,将该操作转化为数据库存储过程的操作。

? Static:如果选择,表示操作不能被修改。

? Return type:返回值的数据类型。

? Array:如果选择,表示返回值是一个表。

? Visibility:可视属性。

? Abstract:如果选择,表示操作不能实例化,即不能有直接实例。

? Event:操作触发的事件。

? Final:如果选择,表示操作不能被重新定义。

?步骤2 :在Parameters 页中,可以为操作定义传入参数。在Parameters 页中,单击Insert A Row 图标,就可以增加一个参数,单击应用按钮,然后单击Properties 图标,在打开窗口中设置参数的属性。其中,各选项的含义是:

? Parent:参数所属的操作名。

? Name 和Code:参数的名称和代码。

? Data type:参数的数据类型。

? Parameter Type:参数信息流的方向。包括:In,通过值传递方法传入参数。最终结果不能被修改,并且对于其他调用者无效;In/Out,传入参数可以被修改,最终结果可以被修改,并与其他调用者进行交互;Out,传出参数,最终结果可以被修改,并与其他调用者进行交互。

? Array:如果选择,表示生成或逆向生成Java 或PowerBuilder时,把属性生成表。

?步骤3:在Implementation 页中,可以在各个Sheet 上为操作定义实现代码。在Body 页中定义代码的主体:在Exceptions 页中定义例外处理等。

?步骤4:此外,还有Notes (注释) 、Rules (规则) 、ExtendedAttributes (扩展属性) 、Version Info (版本信息) 等属性页。

VI 操作的分类

操作按功能不同可以细分为下列几类:

i) 构造器和销毁器

构造器可以产生和初始化类的实例,销毁器则将类的实例销毁掉。如果选择Java 语言作为类图语言,为类增加构造器和销毁器的方法,是在Operations 页的底部单击Add…按钮,从中选择DefaultConstructor/Destructor 命令,增加一个与类同名的默认构造器和销毁器,且构造器和销毁器的名称由系统生成。

ii) 默认构造器和复制构造器

构造器可分为默认构造器和复制构造器。复制构造器是在类的构造器产生时产生的一个特殊

操作,它包含了类的属性拷贝。复制构造器的名称与类名相同,拥有默认参数,参数带有“old”关键字作为前缀,但可以修改。可以根据需要增加参数、修改实现代码。如果一个类是另外一个类的实例,复制构造器操作内部的属性名称与父类的属性名称相同。在一个类中仅可以定义一个复制构造器。

创建复制构造器的方法是:

?步骤1:在Operations 页的底部单击Add 按钮,从中选择CopyStructure 选项,可以增加一个复制构造器。

?步骤2:选中所增加的复制构造器,单击Properties 按钮,打开操作的属性定义窗口,在General 页中可以看到操作名与类同名。

?步骤3:在Parameters 页中可查看操作的参数,可以修改或增加新的参数。

iii) 复制操作

复制操作是在类中创建和初始化类的实例时的一种特殊操作。复制操作的名称为Duplicate,可以修改。任何一个类只能定义一个复制操作。为创建复制操作,可在Operations 页的底部单击Add 按钮,从中选择Duplicate Operation 选项,则可以增加一个复制操作。此外,还可以进行为类增加父类操作、建立静态初始化器以及将操作复制到另外一个类上等操作。

VII 创建联系

在创建了类的属性、标识符、接口、操作之后,就该考虑类与类之间或类与接口之间的联系。在类图中,联系包括关联、依赖、范化和实现关联。使用类图基本构件工具来创建各种联系。

i) Association (关联)

Association (关联) 表示类之间在概念上有连接关系。例如,在足球队中,球员与球队之间存在关联,即球员为球队效力。关联用一条带箭头的实线表示。当一个类与其它类发生关联时,每个类通常在关联中都扮演着某种角色,即类的功能。角色用关联线两边的名称表示。创建关联的方法是:

?步骤1:在类图Palette(调色板)面板中选择Association 工具,单击第一个类或接口的图形符号,按下鼠标左键并将光标拖拽到另外一个类或接口上,释放鼠标,在类之间或类与接口之间产生一个关联。

?步骤2:双击关联,打开关联属性定义窗口。其中General 页的各个选项的含义是:

? Name 和Code:关联的名称和代码。

? Stereotype:版型。包括implicit,表示关联仅仅是一个概念。

? Associations class:当前关联可以拥有一个关联类。

?关联类表示用一个类进一步细化关联信息。关联类同时具有类和关联的属性。

?步骤3:在Detail 页中可详细定义与角色相关的属性。其中各选项的含义:

? Visibility:关联的可视性。包括Public、Private、Protected和Package。

? Mulitiplicity:关联类的实例的最小和最大基数。包括0..1,0..*,1..1,1..*和*。? Ordering:表示排序方式,包括Stored、Ordered 和Unordered。

? Navigable:表示关联的方向性。

? Aggregation/Composition :角色的类型是聚集或组合。Container 表示聚集或组合所属的角色:Indicator 表示关联是聚集还是组合。

?步骤4:定义完毕后,单击OK(确定)按钮返回主窗口。在创建关联过程中,通过定义Aggregation/Composition 属性,可以把角色定义为聚集或组合类型。聚集表示在参与关联的两个类中,一个代表整体,一个代表部分。例如,一辆轿车包含四个车轮、一个底盘和一个发动机等,这是聚集的一个例子。在类图中聚集用空心的菱形表示。组合是聚集的一种特殊形式,表示整体拥有各个部分,部分与整体共存亡,整体不存在了,部分也会随之消亡。

例如,打开一个窗口,它由标题栏、外框和显示区域等组成,一旦关闭窗口,其他部分同时消失。在类图中聚集用实心的菱形表示。

ii) Dependency (依赖)

存在两个元素A、B,如果修改A 元素可能会引起对另一个元素B 的修改,则称B 依赖于元素A。在类与接口、两个类或两个接口之间等都可以产生依赖关系。依赖用一条带箭头的虚线表示。为创建依赖,具体过程如下:

?步骤1:选择Dependency 图标,单击第一个类或接口的图形符号,按下鼠标左键并将光标拖曳到另外一个类或接口上,释放鼠标,在类之间或类与接口之间产生一个依赖。

?步骤2:双击依赖,打开依赖属性定义窗口。其中General 页各选项的含义是:

? Influent:被依赖方,对Dependent 产生影响的接口或类。

? Dependent:依赖方,可以是接口或类。

? Stereotype:版型。

?步骤3:定义完毕后,单击OK(确定)按钮返回主窗口。此外,还可以通过依赖列表窗口来创建依赖。

iii) Generalization (泛化)

泛化是指一般元素(父类) 和特殊元素(子类) 之间产生的关联。特殊元素完全包含了一般元素的内容,并增加一些附加信息。例如,动物是一个一般概念,而猫和狗是一个特殊概念。在动物和猫、狗之间就可以产生一个泛化联系。在类图中,泛化可以产生在两个类之间、两个接口之间、类与类的快捷方式之间、接口与接口的快捷方式之间。在用况图中,泛化可以产生在两个用况之间、两个参与者之间、用况与用况的快捷方式之间、参与者与参与者的快捷方式之间。泛化是具有方向性的,只有父对象才能有快捷方式。在类图中泛化用空心的箭头的实线表示。

创建泛化的具体过程如下:

?步骤1:在Palette(调色板)面板中单击Generalization 工具,再单击第一个类或接口的图形符号,按下鼠标左键并将光标拖曳到另外一个类或接口上,释放鼠标,在类之间或类与接口之间产生一个泛化。

?步骤2:双击泛化,打开泛化属性定义窗口。其中General 页各选项的含义是:

? Parent:父类。

? Child:子类。

? Stereotype:版型。

? Visibility:可视性。

?步骤3:定义完毕后,单击OK(确定)按钮返回主窗口。此外,还可以通过泛化列表窗口创建泛化。

iv) Realization (实现关联)

实现关联是类和接口之间的关联。在实现关联中,类的实现方法在接口中指定,接口被称之为详细说明元素,类被称之为实现元素。实现关联可以产生在类与接口之间、接口的快捷方式与类之间、类的快捷方式与接口之间。实现关联是具有方向性的,只有父对象才可以创建快捷方式。可以在类与接口之间建立多个实现关联,但是最好只建立一个,因为一个接口只能实现类的一个操作。当利用OOM 产生其他模型时,如果存在多个实现关联,系统会显示警告信息。实现关联是具有方向性的,箭头总是指向接口方向。在类图中泛化用空心的箭头的虚线表示。

为创建实现关联,具体过程如下:

?步骤1:在Palette(调色板)面板中单击Realization 工具,再单击第一个类或接口的图形符号,按下鼠标左键,并将光标拖曳到另外一个类或接口上,释放鼠标,在类之间或类

与接口之间产生一个实现关联。

?步骤2:双击实现关联,打开实现关联属性定义窗口。其中General页各选项的含义是:? Class:类。

? Interface:接口。

? Stereotype:版型。

?步骤3:定义完毕后,单击OK(确定)按钮返回主窗口。此外,还可以通过实现关联列表窗口创建实现关联。VIII 创建域域(Domain) 定义了一个属性的一组有效值。在属性中应用域能够使属性在不同类中的取值标准化。在OOM 中可以为域定义数据类型、检查参数和业务规则等信息。

创建域的具体过程如下;

?步骤1:在模型(Model)菜单中单击Domains…命令,打开域列表窗口。

?步骤2:单击Add a Row 按钮,增加一个新的域,在Name 栏和Code栏中输入名称和代码,在Data Type 栏中选择数据类型。输入完成后,单击Apply 按钮。

?步骤3:选中新定义的域,然后单击Properties 按钮,打开域属性定义窗口,在其中根据需要修改域的其他属性。

?步骤4:修改完毕后,单击OK(确定)按钮返回。

在OOM 中,域的使用方法与CDM 和PDM 类似。

IX 根据下图,完成一个订票系统的类图设计。记录所创建的类图,并请简要描述你的操作过程。

下图所示的是一个未完成的订票系统的类图。该类图中包括有类User(客户)、Reservation (订票)、Individual Reservation(个人订票)、SubscriptionSeries(订套票)、Ticket (票)。类Individual Reservation 和类SubscriptionSeries 都继承父类Reservation 的属性和一部分操作。类User 和类Reservation是一对多的关系,即一个客户能够预定许多场演出的票。

4) 创建顺序图

产生顺序图的方法与产生用况图的方法类似。设计顺序图时,可以在参与者和对象之间、对象和对象之间定义消息。但两个参与者之间一般不定义消息,如果做了定义,在检查模型时,系统会自动删除,并提出警告。如果消息的发送者和接收者是同一个对象,称为递归消息。为建立顺序图,可按以下步骤进行:

?步骤1:在OOM 设计窗口New Model 对话框右侧的Diagram 栏中选择Sequence Diagram (顺序图) 图形类别。

?步骤2:单击O K(确定)按钮,进入顺序图设计工作区。这时,Palette(调色板)面板上显示顺序图消息类型工具及其它基本构件工具。

I 产生不同类型的消息

在顺序图中可以定义不同类型的消息,具体方法是:

?步骤1:在顺序图的Palette(调色板)工具面板中选择6 种类型消息工具之一。

?例如,在顺序图设计工作区中加入一个Actor 和一个Object,然后单击Message 工具,再单击消息发送者的生命线,拖动鼠标至消息接收者的生命线后释放鼠标。然后,单击右键释放Message 工具。在消息的发送者和接收者的生命线间产生一条消息线。

?步骤2:双击消息图形符号,打开消息属性窗口。在Name 和Code栏中输入消息的名称代码,并在Detail 页的Control flow 下拉列表中选择控制的类型。定义完毕后,单击OK(确定)按钮,返回到顺序图工作区。其中General 页的各个选项的含义是:

? Sender:消息的发送者。

? Receiver:消息的接收者。

? Stereotype:使用的版型。该选项的默认值为空,可以通过在模型(Model)菜单中单击Extended Model Definitions…命令来定义当前PDM 模型的版型。

?步骤3:选择Detail 属性页,可以为消息定义更详细的属性。Detail页中各个选项的含义是:

? Action:完成的动作。包含4 个选项,其含义如表4 所示。

表5 Control flow 选项的含义

? Action 选项与Control flow 选项的配合情况如表6 所示。

表6 Action 选项与control flow 选项的配合情况

的操作。操作可以从下拉列表框中选择,也可以通过Operation 右边的Create 按钮建立一个新操作,然后从下拉列表框中选择即可。如果消息的控制流是

Return,则不能连接一个操作。

? Condition:通过一个布尔表达式来激活消息。例如,输入密码次数<=3 次。

? Begin time:消息开始的时间,用于定义约束。

? End time:消息结束的时间,用于定义约束。例如,约束= (t1-t2<30 秒) ,其中t1 表示开始时间,t2 表示结束时间。

?Support delay:定义消息的传输延迟。如果支持延迟,则Endtime 可以与Begin time 不相同。

?步骤4:在Palette(调色板)面板单击Note 工具,可以为消息增加一个注释,然后再利用Link/Extended Dependency 工具,在注释和生命线上的消息矩形框之间增加一条带箭头的连线。

?步骤5:如果将一个消息的Action 属性设置为Create,则利用这个消息可以产生一个UML 对象,除递归消息或消息的接收者是参与者之外。

?步骤6:如果将一个消息的Action 属性设置为Destroy,则利用这个消息可以终止一个UML 对象的生命线,但不是销毁对象,除消息的接收者是参与者之外。

?当使用Return Message 工具,其Control flow 选项设置为Return 时,消息的Action 选项可以设置为Self-destroy,表示通过返回消息销毁对象自己,除消息的接收者是参与者或递归消息之外。

?当消息的发送者和接收者是同一个对象时,则称该消息为递归消息。递归消息不支持Action 选项为Create 或Self-Destroy,也不支持Support delay 选项。递归消息分为两种,一种不带激活期的;另一种是带激活期的,但要求Control flow 选项的值设置为Procedure Call。

?步骤7:其它属性页。例如Rules 用来定义规则;Dependencies 用来定义依赖关系;Version Info 用来显示版本信息等等。

II 消息的激活期

消息的激活期表示消息持续的时间,即消息所指定的动作执行所需要的时间。有些消息自带了激活期,该方法适用于Control flow 的值为Procedure Call类型的消息,这是因为Procedure Call 开始了这个激活期。如利用“带有激活期的递归消息”工具和“带有激活期的消息”工具创建的消息。

III 设置顺序图的显示参数

可以设置顺序图的显示参数,以便更清晰地表明参与者或对象之间交互时产生的时序关系。具体方法是:

?步骤1:在顺序图工作区中,在工具(Tools)菜单中单击显示参数选择(Display Preferences…)命令,打开显示参数设置窗口,单击General 节点,在右面的窗口中可以

定义整个工作区的WindowColor (背景色) 、Unit (显示单位) 、Grid (网格线) 等属性。?步骤2 :单击Content 节点,在右边的窗口中可以定义NameSplitting (名称分拆) 属性。

?步骤3:单击Content 下的Message 节点,可以定义消息的显示参数,如Show name (显示名称) 、Show stereotype (显示版型) 、Showtime (显示时间) 、Show condition (显示激活消息的表达式) 和Show activation attachment (显示激活期附件) 。

?步骤4:单击Format 节点,可以定义顺序图内容的显示格式。例如,在Format 下的Message 界面中,通过单击Modify…按钮,打开显示参数定义窗口,在其中可以为消息定义特殊显示格式。

IV 顺序图实例

下面以打电话为例创建一个顺序图实例。它描述了从呼叫方拿起话筒开始,到通过交换机接通接听方,直至接听完毕挂断电话为止的一系列动作。具体操作如下:

?步骤1:进入OOM 设计环境,在Diagram 下拉列表框中选择顺序图(sequence diagram) ,并以Java 语言作为对象语言(objectlanguage) 。

?步骤2:选择完毕后单击OK(确定)按钮,进入顺序图设计窗口。

?步骤3:单击Palette(调色板)面板中的Object (对象) 工具,在右边工作区域的空白处单击鼠标,出现对象符号。

?步骤4:在工作区单击鼠标右键,恢复鼠标指针。再双击对象符号,弹出对象属性窗口。在Name 栏中填写“呼叫方”,Code 栏中填写“Caller”’。填写完毕后,单击OK(确定)按钮。

?步骤5:重复步骤3 至步骤4,添加其它两个对象,Name 分别为“交换机”和“接听方”,Code 分别为“Exchange”和“Receiver”。

?步骤6:单击Palette(调色板)面板中的Message (消息) 工具,在“呼叫方”对象下方的虚线处单击鼠标,拖动鼠标至“交换机”对象下方的虚线释放鼠标,即可增加一个消息,形状为右箭头。

?步骤7:在设计工作区空白区域单击鼠标右键,鼠标指针变为箭头形状。再双击对象符号,弹出消息属性窗口。在Name 栏中填写“拿起话筒”,Code 栏中填写“LiftReceiver”,填写完毕后,单击OK(确定)按钮。

?步骤8:重复步骤6 至步骤7,添加其它消息,如表7 所示。

?步骤10:在File 菜单中单击Save 命令,保存新建的面向对象模型。

记录所创建的顺序图,并请简要描述你的操作过程。

3、实验结果分析、讨论与总结。

用况图:

类图:

User

-----userID

name

sex

age

address

: String

: String

: String

: int

: String Reservation

---Reservation time Reaervation account

data

: String

: String

: String

SubscriptionSeries

-series: Integer

Individual Reservation

Ticket

-available: Boolean

+ +sell ()

exchange ()

...

: Integer

: Integer

顺序图:

五、 实验结果分析、经验总结和结论

通过此次实验,我从基本的开发环境搭起,成功的搭建了PowerDesigner 的开发环境。成功地创建了第一个OOM 模型,从最底层开始分析OOM 的程序组成,并从中的熟悉了PowerDesigner 的开发环境。与此同时,了解到PowerDesigner 是一个集成环境,各个模型之间可以快捷的模型同步与管理。并且创建用况图、类图和顺序图,成功的熟悉了实践使用PowerDesigner 进行面向对象建模的基本方法,达到了实验的基本目的。

接听方

呼叫方交换机

Java面向对象程序设计 实验报告

一、实验目的及内容 目的:掌握和巩固Java面向对象程序设计的概念、方法。 内容: 1.设计一个Java程序,该程序运行后,说明:一个类的所有对象共享同一个类成员变量;一个类 的多个对象拥有各自的实例成员变量。 2.编写一个表示人的类Person,该类满足以下要求: ●有两个private成员变量:name(名字)、age(年龄);在Person类外访问这两个成员变量均通 过接口器函数(getXXX,setXXX)。 ●该类具有一个有两个参数的构造函数,这两个参数分别用来初始化name和age成员变量。 ●该类包含一个方法public boolean older(Person r),用于比较当前对象年纪是否比参数r的年纪大, 若是,则返回true,否则,返回false。 编写另外一个类:TestPerson,该类包含下面函数: public static void sortPerson(Person[] personList),在该函数中利用Person类的older方法实现对数组personList按年龄从小到大排序。main函数位于该类中。在main函数中 (1)创建Person类的10个对象,并保存到一个数组中,创建10个对象时,每个对象的年龄为0~100的一个随机数(用Math.random()函数得到)。 (2)输出这个数组中每个对象的名字、年龄。 (3)调用sortPerson方法,对这个数组中的10个Person对象按年龄排序。 (4)输出排序后数组中每个对象的名字、年龄。 二、要求 1.给出上述程序的中涉及到的类的类图(可用visio画)、解决上述问题的思路、代码 和测试结果。 1.设计一个Java程序,该程序运行后,说明:一个类的所有对象共享同一个类成员变量;一个类的多个对象拥有各自的实例成员变量。 设计思路:要实现一个类的所有对象共享同一个类成员变量;一个类的多个对象拥有各自的实例成员变量。我创建了一个Number类,并创建了两个对象number1和number2,该类有一个类成员函数static int numberofsum(int a, int b)来求和,一个类成员变量countnumber来统计对象的个数,还有实例成员变量num,通过两个对象求和以及统计对象个数,说明了一个类的所有对象共享同一个类成员变量,两个对象都有自己的num值说明了一个类的多个对象拥有各自的实例成员变量。

面向对象程序设计实验报告完整版

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 综合实验报告 面向对象程序设计 专业名称: 物联网工程 ___班级: _____ 级2班__ ___________姓名: 你哥哥 学号: 02051928 信息科学与工程学院 二零一三年七月

第一题: (1) 1.1题目概述 (1) 1.2设计思路 (2) 1.3设计说明与调试分析 (2) 1.4编码实现 (2) 1.5程序运行结果 (5) 1.6设计心得 (5) 第二题: (6) 2.1题目概述 (6) 2.2设计思路 (7) 2.3设计说明与调试分析 (7) 2.4编码实现 (7) 2.5程序运行结果 (11) 2.6设计心得 (11)

第一题: 1.1题目概述 用抽象类设计计算二维平面图形图形面积的程序, 在基类TDshape中设计纯虚函数area()和printName(), area()用于计算几何图形的面积, printName()用于打印输出几何图形的类名, 如Triangle类的对象就打印输出”Triangle”。每个具体形状的类则从抽象类TDshape派生, 各自需要定义其它独有的数据成员和成员函数, 而且定义area()和printName()的具体实现代码, 如图所示。 要求编写以TDshape为接口的函数, 借以访问具体类如

Triangle和Rectangle类的成员函数area(), printName ()。1.2设计思路 由简到繁, 逐步实现。 1.3设计说明与调试分析 编写基类TDshape->编写虚函数->编写继承类Triangle ->实例化TDshape和Triangle ->调用基类虚函数实现调用继承类相应函数->同样的方式处理继承类Rectangle. 1.4编码实现 #include using namespace std; class TDshape{ public: virtual void area()=0; virtual void printName()=0; }; class Triangle:public TDshape{ private: double width,height;

实验一 Java面向对象基础 实验报告

实验一Java面向对象基础、数组实验报告 一、实验目的 1. 理解面向对象编程基本思想 2. 了解类的封装方法,以及如何创建类和对象 3. 掌握面向对象程序设计的方法,了解类的继承性和多态性的作用 4. 掌握Java 中的数组定义、引用 二、实验要求 编写程序时要注意体现面向对象思想,体会不同访问控制符的作用。 1. 编写一个Vehicle类和它的二个子类Bus类和Boat类。(要求:程序要有构造方法重载;要能体现类的多态性) 2. 定义一个由若干个整数组成的数组,要求输出该数组的平均值以及所有的奇数之和。 3. 随机生成30个0-9之间的数字,分别统计0-9这10个数字分别出现了多少次。 三、实验内容及结果 1. 编写一个Vehicle类和它的二个子类Bus类和Boat类。 public class Vehicle { private String color; public Vehicle() { this("black"); } public Vehicle(String color) { this.color = color; } public String toString() { return "this is a " + this.color + " vehicle"; } } class Bus extends Vehicle { private int passagerNumber; public Bus() { this(50, "black"); } public Bus(int number) { this(number, "black"); } public Bus(int number, String color) { super(color); this.passagerNumber = number; } public String toString() {

面向对象分析与设计实验报告

面向对象分析与设计实验报告 题目:宿舍管理系统 学号:200*********** 姓名:****** 班级:09软件*****04 完成时间:2011.11.09

目录 1 系统功能需求 (3) 1.1管理系统模块 (3) 1.2查询学生模块 (3) 1.3学生管理模块 (4) 1.4资料修改模块 (5) 1.5楼栋管理模块 (6) 1.6出入登陆模块 (6) 2 建立需求模型 (7) 2.1 划分子系统 (7) 2.2 识别参与者 (8) 2.3 识别用况 (8) 2.4 对需求进行捕获与描述 (9) 3 系统分析 (11) 3.1 寻找类 (11) 3.2 建立状态机图 (12) 3.3 建立类图 (12) 3.4 建立顺序图 (13) 4 系统设计........................................................................... 1错误!未定义书签。 4.1 问题域部分设计 (14) 4.2 人机界面部分设计 (14) 5 总结 (16) 参考文献 (17)

1.系统的功能需求 我校学生公寓现为手工管理,效率低、易出错、手续繁琐,而且耗费大量的人力,物力,财力。故设计一个学生公寓管理系统,管理学生住宿情况,员工情况,处理学生离校,管理人员来访情况等功能。通过此系统,后勤人员可以对学生公寓的各项情况实行电脑化管理,以提高工作效率,也使得公寓管理所需的各项信息能方便快速进行录入,查询,删除和更新。 面对学生公寓管理工作的特点以及该管理工作的具体问题, 本系统可以解决以下问题: (1)录入公寓各学生的基本情况。 (2)全面查询学生的基本情况。 (3)对学生离校进行处理。 (4)每学期对学生住宿进行注册。 (5)对来访人员进行出入管理。 (6)对学生的财务进行登记管理。 (7)对楼栋物资和楼栋的管理。 (8)对各项情况进行修改,删除,更新。 (9)友好的操作界面, 以及简单快速的操作. (10)多种查询方式。 本系统针对学生公寓管理日常的工作程式, 对学生公寓的各项情况例如:学生信息,学生个人财产信息,来访人员信息等进行有效管理,并能通过各方法进行快速方便的查询。使学生公寓管理工作运作简明、清晰,各状况一目了然,使学生公寓管理工作更加科学化、规范化。 1.1管理系统模块:实现用户退出功能。 1.2查询学生模块:该模块包括五个子模块 1.按学号查询——实现按学号查询学生信息 2.按姓名查询——实现按姓名查询学生信息 3.按学生班级查询——实现按学生班级查询学生信息 4.按家庭住址查询——实现按家庭住址查询学生信息 5.混合查询——实现按混合查询学生信息

实验2:Java面向对象程序设计

实验2:Java面向对象程序设计(一) 实验目的 ●掌握类的定义;掌握构造方法的使用;掌握对象的创建。 ●掌握静态变量与静态方法的使用;了解静态变量和成员变量的区别。 ●熟悉访问修饰符的作用;掌握访问修饰符的使用方法。 ●掌握方法的重载;掌握访问器get/set方法。 实验步骤 一、类和对象的创建 1. 创建一个圆类,成员变量有半径radius和圆周率pi,提供计算圆面积的方法,并在main方法中创建圆类的对象,调用其计算面积的方法进行测试。 2. 编写上述代码,编译运行代码,查看程序执行结果。 ●试述程序中两个类的各自作用。 ●类Circle都封装了什么?求圆面积的初始数据是通过哪个方法实现的?请修改程序采用构造函数的方法初始化数据。 ●类Circle是如何声明的?在类中都声明了什么?在主函数中是如何创建Circle类对象的? 二、静态变量和静态方法的设计 (一). 静态变量和实例变量练习 1. 创建一个类,类名为StaticVariableTest,包含static变量和实例变量,类型为int型,在main方法中分别调用这2个变量并且输出结果。 2. 部分源代码如下: 3. 将上述代码中的main方法补充完整后,编译运行代码,查看程序执行结果。 ●根据完善后的源码,分析调用静态变量和实例变量有什么不同? (二). 静态方法和实例方法练习 1. 创建一个类,类名为StaticMethodTest,包含一个静态方法和一个实例方法,在main方法中分别调用这个两个方法进行测试。

2. 部分源代码如下: 3. 将上述代码中的main函数补充完整,编译运行代码,查看程序执行结果。 ●根据完善后的源码,分析如何调用静态方法和实例方法? 三、访问修饰符与方法的重载 (一). 访问修饰符练习 1. 创建一个Person类,在该类中用不同的访问修饰符设立不同的person属性,再创建一个PersonTest类,包括main方法,在此类中分别访问Person类中各个属性。 2. 源代码如下: 3. 先填写下面的表格,在预测结果中,如果能打印输出,填写程序输出结果,否则填“N”。 ●记录程序运行结果。 表4-3-1 预测和验证结果

面向对象技术-实验报告

实验报告 课程名称Java程序设计 实验项目实验一类、对象与构造函数 实验二派生类与继承 系别___________理学院_____________ 专业/班级_________电技1302____________姓名______蔡超月____________ 实验日期_______________________ 成绩_______________________ 指导教师夏红科

一、实验题目:实验一类、对象与构造函数 实验二派生类与继承 二、实验内容: (1)创建一个雇员类,该类中有数据成员有姓名、家庭住址和邮政编码等,其功能有修改姓名、显示数据信息。 要求:雇员类的定义作为.h保存 雇员类功能函数的实现放在.cpp中。 雇员类的使用放在单独的.cpp文件中,该文件使用#include编译预处理命令包含类定义的头文件,在main()函数中使用雇员类创建几个对象并显示信息。 (2)定义一个哺乳动物类,再由此派生出人类、狗类和猫类,这些类中均有speak()函数,请设计相应的类层次结构并加以实现,观察在调用过程中,到底使用了哪个类的speak()函数。 (3)设计一个能细分为矩形、三角形、圆形和椭圆形的图形类,使用继承将这些图形分类,找出能作为基类部分的共同特征(如宽,高,中心点等)和方法(如初始化、求面积等),并设计多种继承模式来测试继承的属性。 三、程序清单及结果:(需要标明实现程序对应的实验内容,并给出合理的程序注释及运行结果) 1)程序清单及注释 内容1: #include #include using namespace std; class employee { protected: string name1; string address1; string shi1; string sheng1; string post1; char name[10]; char address[20]; char shi[10]; char sheng[10]; char post[7]; int num; public: shuru(); void changename(char str[]); void display();

Java面向对象程序设计_习题解答

Java面向对象程序设计 清华大学出版社 (编著耿祥义张跃平) 习题解答 建议使用文档结构图 (选择Word菜单→视图→文档结构图)

习题1 1.James Gosling 2. (1)使用一个文本编辑器编写源文件。 (2)使用Java编译器(javac.exe)编译Java源程序,得到字节码文件。 (3)使用J ava解释器(java.exe)运行Java程序 3.Java的源文件是由若干个书写形式互相独立的类组成的。 应用程序中可以没有public类,若有的话至多可以有一个public类。 4.系统环境path D\jdk\bin; 系统环境classpath D\jdk\jre\lib\rt.jar;.; 5. B 6.Java源文件的扩展名是.java。Java字节码的扩展名是.class。 7.D 8.(1)Speak.java (2)生成两个字节码文件,这些字节码文件的名字Speak.class 和Xiti8.class (3)java Xiti8 (4)执行java Speak的错误提示 Exception in thread "main" https://www.wendangku.net/doc/a03364452.html,ng.NoSuchMethodError: main 执行java xiti8得到的错误提示 Exception in thread "main" https://www.wendangku.net/doc/a03364452.html,ng.NoClassDefFoundError: xiti8 (wrong name: Xiti8) 执行java Xiti8.class得到的错误提示 Exception in thread "main" https://www.wendangku.net/doc/a03364452.html,ng.NoClassDefFoundError: Xiti8/class 执行java Xiti8得到的输出结果 I'm glad to meet you 9.属于操作题,解答略。

面向对象程序设计实验报告

. , 面向对象程序设计实验报告 班级:计算机科学与技术11-5 学号:0505 ( 姓名:高冉冉 日期:2012/7/2 \

题目3: 1.问题描述: 假设有图书类Book,包括书名、出版社名称、作者姓名、图书定价等数据成员。编程序完成Book类的设计,从键盘读入10本图书的各项数据,并将这10本图书的相关数据写入磁盘文件中,然后从中读出各图书数据,计算所有图书的总价值,并显示每本图书的详细信息,每本图书的信息显示在一行上。 2.实现代码: #include · #include #include #include<> using namespace std; class Book { private: char bookName[20]; etPrice(); - ioFile<>book[i]; cout<

面向对象分析方法

https://www.wendangku.net/doc/a03364452.html,面向对象分析方法1/2 面向对象分析方法(Object-Oriented Analysis,OOA),是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的区别。OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。 OOA(面向对象的分析)模型由5个层次(主题层、对象类层、结构层、属性层和服务层)和5个活动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成。在这种方法中定义了两种对象类之间的结构,一种称为分类结构,一种称为组装结构。分类结构就是所谓的一般与特殊的关系。组装结构则反映了对象之间的整体与部分的关系。 OOA在定义属性的同时,要识别实例连接。实例连接是一个实例与另一个实例的映射关系。 OOA在定义服务的同时要识别消息连接。当一个对象需要向另一对象发送消息时,它们之间就存在消息连接。 OOA 中的5个层次和5个活动继续贯穿在OOD(画向对象的设计)过程中。OOD模型由4个部分组成。它们分别是设计问题域部分、设计人机交互部分、设计任务管理部分和设计数据管理部分。 一、OOA的主要原则。 (1)抽象:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征,就叫作抽象。抽象是形成概念的必须手段。 抽象原则有两方面的意义:第一,尽管问题域中的事物是很复杂的,但是分析员并不需要了解和描述它们的一切,只需要分析研究其中与系统目标有关的事物及其本质性特征。第二,通过舍弃个体事物在细节上的差异,抽取其共同特征而得到一批事物的抽象概念。 抽象是面向对象方法中使用最为广泛的原则。抽象原则包括过程抽象和数据抽象两个方面。 过程抽象是指,任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。 数据抽象是根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。数据抽象是OOA的核心原则。它强调把数据(属性)和操作(服务)结合为一个不可分的系统单位(即对象),对象的外部只需要知道它做什么,而不必知道它如何做。 (2)封装就是把对象的属性和服务结合为一个不可分的系统单位,并尽可能隐蔽对象的内部细节。 (3)继承:特殊类的对象拥有的其一般类的全部属性与服务,称作特殊类对一般类的继承。 在OOA中运用继承原则,就是在每个由一般类和特殊类形成的一般—特殊结构中,把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和服务,一次性地在一般类中进行显式的定义。在特殊类中不再重复地定义一般类中已定义的东西,但是在语义上,特殊类却自动地、隐含地拥有它的一般类(以及所有更上层的一般类)中定义的全部属性和服务。继承原则的好处是:使系统模型比较简练也比较清晰。 (4)分类:就是把具有相同属性和服务的对象划分为一类,用类作为这些对象的抽象描述。分类原则实际上是抽象原则运用于对象描述时的一种表现形式。 (5)聚合:又称组装,其原则是:把一个复杂的事物看成若干比较简单的事物的组装体,从而简化对复杂事物的描述。 (6)关联:是人类思考问题时经常运用的思想方法:通过一个事物联想到另外的事物。能使人发生联想的原因是事物之间确实存在着某些联系。

JAVA类的继承实验报告

《面向对象程序设计》实验报告 实验六、类的继承 课程代码:1H10500学分:6 实验类型:实践型实验学时:4个学时 实验时间:2017.11.23 实验地点:5407 班级:计算机164 专业:计算机科学与技术专业学号:2016011147 姓名:林文辉 一、实验目的 (1)学习JAVA继承的思想 (2)了解JAVA语言继承的实现 二、实验内容及步骤 内容:在圆柱体类Cylinder里,用一个构造方法调用另一个构造方法 步骤:方案的设计与分析(类结构图。。。。。。) (1)找出对象的共同属性和行为 (2)设计代表共同状态与行为的类 (3)决定子类是否需要让某项行为有特定的不同的运行方式 (4)寻找更多抽象化的机会 (5)完成类的继承层次 三、实验过程及结果 实验1代码: abstract class Graphics { abstract void parameter(); abstract void area(); } class Rectangle extends Graphics{ double h,w; Rectangle(double u,double v){h=u;w=v;} void parameter() { S ystem.out.println("矩形高度为:"+h+",矩形宽度为:"+w); } void area() { S ystem.out.println("矩形面积为:"+(h*w)); } }

class Circle extends Graphics{ double r; String c; Circle(double u,String v){r=u;c=v;} void parameter() { System.out.println("圆半径为:"+r+",圆颜色为:"+c); } void area() { System.out.println("圆面积为:"+(Math.PI*r*r)); } } class ExamAbs{ public static void main(String args[]) { Rectangle rec=new Rectangle(2.0, 3.0); Circle cir=new Circle(4.0, "Red"); Graphics[]g= {rec,cir}; for(int i=0;i

《面向对象分析与设计》实验报告

《面向对象分析与设计》 实验报告 班级:计科09-4班 姓名:郑翼 学号:08093435

实验一用例图 一、实验目的 1.学会分析系统中的参与者和用例 2.掌握用例图的绘制方法 二、实验器材 1. 计算机一台; 2. Rational Rose 工具软件; 三、实验内容 画出A TM系统的用例图 四、实验截图

五、实验体会 通过这次实验,理解了用例图的基本用法,并且初步掌握了Rational Rose软件的使用。对以后面向对象的学习都是十分重要的。

实验二交互图 一、实验目的 1.学会用协作图实现用例 2.掌握顺序图的绘制方法以及顺序图和协作图的相互转换。 二、实验器材 1. 计算机一台; 2. Rational Rose 工具软件; 三、实验内容 画出A TM取款的顺序图,并转换为协作图。 四、实验截图 顺序图

协作图 五、实验体会 通过实验,学会了用协作图实现用例,掌握了顺序图的绘制方法以及顺序图和协作图相互转换的方法,进一步的加深了对软件的使用。

实验三类图 一、实验目的 1.理解类的基本概念 2.理解类间的关系 3.掌握类图的绘制方法 二、实验器材 1. 计算机一台; 2. Rational Rose 工具软件; 三、实验内容 分析选课系统中的类及关系,然后画出它们的类图。 四、实验步骤 1.分析 在选课系统中,通过分析可抽象出如下几个类: 1.学生类 2.管理员类 3.课程类 学生类和管理员类的属性较容易分析,这里只列出课程类的属性和方法:(1)课程名称 (2)开课教室 (3)课程号 (4)授课教师 (5)选课的学生 (6)开课起始时间 (7)允许选课的学生人数 (8)设置课程号 (9)设置课程名称 (10)查询课程号

第3章面向对象(上)_补充案例

第三章补充案例 案例3-1 定义学生类 一、案例描述 1、考核知识点 编号:00103002 名称:类和对象 2、练习目标 掌握类定义的方式 掌握如何在类中定义成员变量和成员方法 3、需求分析 在面向对象的思想中最核心就是对象,在程序中创建对象的前提是需要定义一个类。为了让初学者掌握类的定义方式,本案例将设计一个表示学生的类,该类具有表示姓名的属性name和表示年龄的属性age,同时还具有表示说话行为的方法speak(),用于输出学生的姓名和年龄。 4、设计思路(实现原理) 1)使用class关键字定义一个表示学生类型的类,类名为Student。 2)在Student类中定义两个成员变量name和age,分别用来表示姓名和年龄。其中,name的数据类型为String,变量age的数据类型为int。 3)在Student类中定义一个表示说话行为的speak()方法,用于输出学生的姓名和年龄。二、案例实现 class Student{ String name; int age; void speak() { "我的名字是 "+name+",今年 "+age+"岁"); } } 三、案例总结 1、Java语言严格区分大小写,class和Class是不同的,在定义类时只能使用class关键字 2、在Student类中,成员变量name是String类型,String表示一个字符串,后面的章节会详细讲解 3、思考一下:自己定义一个手机(Phone)类,在类中定义品牌(brand)和价格(price)属性,定义打电话的call()方法,代码如下所示

public class Phone { String brand; double price; void call(){ "hi,how are you doing"); } } 案例3-2 同一对象被多个变量引用 一、案例描述 1、考核知识点 编号:00103003 名称:对象创建与使用 2、练习目标 掌握如何创建类的对象 掌握如何使用两个或者多个变量引用同一个实例对象。 3、需求分析 在程序中,一个对象可能在多处使用,这样就可能需要有多个变量来引用这个对象。为了让初学者更好地掌握对象的创建和使用,本案例将基于案例3-1,创建三个学生对象,它们的引用变量分别是s1、s2和s3,首先分别使用s1和s2引用,为name和age赋值,然后调用speak()方法,最后将s2变量赋值给s3, s3也调用speak()方法。 4、设计思路(实现原理) 1)编写Example01类 2)在main()方法中,创建Student类的第一个对象,其引用变量为s1,使用s1调用name和age 变量分别为它们赋值为“张三”和“19”,然后调用speak()方法。 3)创建Student类的第二个对象,其引用变量为s2,使用s2分别为name和age赋值为“李四” 和“20”,然后调用speak()方法。 4)创建Student类的第三个对象,其引用变量为s3,将s2的值赋给s3,然后使用s3调用speak()方法。 二、案例实现 public class Example01 { public static void main(String [] args) { Student s1 = new Student(); ="张三"; =19; (); Student s2 = new Student();

面向对象分析与设计简答题

1、什么面向对象? 面向对象不仅是以些具体的软件开发技术与策略,而且以一套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。 2、软件开发方法学的基本方法有哪些? 1)软件工程和瀑布方法学2)新方法学:螺旋式、迭代式、递增式、合并式3)面向对象方法学:UML、RUP、XP 3、为什么需要OOA、OOD。 OOA就是运用面向对象的方法进行需求分析,OOA加强了对问题域和系统责任的理解,有利于人员之间的交流,对需求变化的适应性较强,很好的支持软件复用。 OOD就是运用面向对象的方法进行系统设计,OOD.符合人们习惯的思维方法,便于分解大型的复杂多变的问题;易于软件的维护和功能的增减;可重用性好;与可视化技术相结合,改善了工作界面。 4、从概念层次、规格层次、实现层次三个角度如何理解对象的概念? 从概念层次来看,一个对象就是一系列的责任; 从规格层次来看,一个对象是一系列可以被其他对象或该对象自己调用的方法;从实现层次来看,一个对象是一些代码和数据。 5、如何绘制类图和对象图?简述其步骤。 类图绘制:1发现类,找到备选类,确定候选类2关联分析,确定关联关系,多重性分析3职责分析4限定与修改,导航性分析,约束,限定符; 对象图绘制:1发现类和对象2对其细化,分析,确定关系。 6、简述重定义方法与重载的区别。 重定义:1参数列表必须完全与被重写的方法相同2返回类型必须一直域被重写的方法的类型相同3访问修饰符的限制一定要大于被重写方法的访问修饰符4重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查性异常:重载:1必须有不同参数列表2可以有不同的返回类型,只要参数列表不同即可3可有不同访问修饰符4可抛出不同的异常。 7.简述抽象方法与虚方法的联系与区别 虚方法有一个实现部分可以为子类实现有共同的方法,并为派生提供了覆盖该方法的选,抽象方法只是强制派生覆盖方法;抽象方法只能在抽象类中声明,而虚方法不是;抽象方法不能声明方法实体,虚方法可以;包含抽象方法的类不能实例化,但虚方法可以。 8、简述使用继承的规则。 1)、不要过度使用;2)、子类应是超类的一个类型;3)、子类应是超类的扩展; 4)、尽量少从具体类继承,最好继承接或抽象类。

java实验报告——对象和类

成绩: 面向对象原理与Java实践课程实验报告 实验1:对象和类 姓名 ____ 班级 ____ 学号 ____ 实验地点 ____ 实验时间 ____ 指导教师 ____

面向对象原理与Java实践课程实验报告 实验1:对象和类 一、实验目的: ●掌握类的定义及应用方法 ●掌握对象的创建方法,了解实例变量、实例方法和静态字段的特性 ●体会Java在类和对象的设计中体现的面向对象的思想 二、实验要求: ●具备Java基础知识(教材第1、2章内容) ●掌握Java中对象和类的基本概念和应用方法(教材第3章内容) ●设计类时注意保证类的封装性 ●编写程序完成以下实验内容并上交实验报告(包括电子文档与纸质文档) 三、实验内容: 设计并实现一个“广石化院电信学院学生通信录”系统。系统采用字符界面,在出现的主界面中按提示输入相应字符以选择“增加”、“删除”、“修改”、“查找”等功能进行操作(其中“查找”功能除能够查找某个学生的信息之外,还能够显示所有学生的信息)。记录的存储可采用数组或链表的方式。 四、设计思路: 为了实现该系统,首先要需要两个类;一个类为主界面服务,用于接收用户输入信息以及做出相关反应;一个类为学生信息服务,定义学生通讯录信息的各个字段,以及操作字段的各个方法,考虑到部分字段的属性问题,所以将操作方法都写在学生类中,不再另外放置在其他类中。学生信息将会采用学生类的对象数组来储存。 五、程序源代码: 下面是ZhuJieMian 主界面类 package pkg_TXL; import java.util.Scanner; public class ZhuJieMian { /** * * 该类为通讯录系统的主界面提供主要功能显示,以及负责主菜单与子菜单的正常跳转 */ public static void main(String[] args) {

面向对象程序设计,实验报告

安徽工业大学 面向对象程序设计实验报告 实验课程:《C++语言程序设计》 学生姓名: 学号: 专业班级: 2011年 12 月 18 日

目录 实验1熟悉C++开发环境及简单程序设计和应用 (3) 实验2基本控制结构程序设计 (6) 实验3 类与对象 (10) 实验4友元函数与友元类 (13) 实验5数组与指针 (16) 实验6静态成员 (20) 实验7类的继承 (22) 实验8多态 (24)

安徽工业大学实验报告 学生姓名:张虹学号:6100409033 专业班级:网络工程091 实验类型:□验证□综合□设计□创新实验日期:实验成绩: 实验1熟悉C++开发环境及简单程序设计和应用 一、实验目的 1.初步了解C++程序的编译、连接和运行的过程。 2.掌握和理解C++程序的结构。 二、实验内容 1.使用VC 2.运行一个简单的C++程序 3.编程求出对任意输入的两个整数,求出该两个整数的最大公约数和最小公倍数 三、实验步骤 1.启动VC 或

2.建立工程并输入以下程序 #include using namespace std; void main() { int i(1), sum(0); do { sum+=i; i++; }while(i<=10); cout<<"sum="<

3.保存文件、运行程序、退出VC程序、打开已经存在的文件 4.编程求出对任意输入的两个整数,求出该两个整数的最大公约数和最小公倍数编写以下代码: #include using namespace std; void main() { int a,b,c,d,i; cout<<"a="; cin>>a; cout<<"b="; cin>>b; for(i=1;i<=a && i<=b;i++) if(a%i==0 && b%i==0) c=i; for(i=a*b;i>=a && i>=b;i--) if(i%a==0 && i%b==0) d=i; cout<<"a和b的最大公约数为"<

#图书馆信息系统面向对象分析实例

图书馆信息系统面向对象分析实例。 总体问题的陈述:本项目的目的是创建一个用于对图书馆的图书进行管理的图书管理系统。 该项目的用户:该项目的用户是一个某大学的图书馆,它负责对其顾客提供图书借阅服务。 该项目的目标:总体上来说,项目的目标是提高图书管理的自动化水平,为图书业务过程提供更快捷的、更好的和更准确的服务。具体来讲,系统的目标包括:为借书者提供快速借书的服务;进行快速准确的图书和借书者的信息维护;图书管理和查询的自动化。 该系统的功能:系统功能是系统应该做的事情,例如系统提供的预定功能。应该识别出这些功能并把它们列入到逻辑相关联的功能组中。 注意:要验证某一个描述是否真是一个系统的功能,如下的判断语句应该成立: 系统应该做某一个描述 例如,系统应该做图书的预定。 然而,系统的属性是系统的非功能性的特性,这些非功能性特性和系统功能经常被混淆。例如,“易于使用”就是一个非功能性的特性。它是不符合我们上述的验证语句:“系统应该做易于使用”。系统属性不应该是功能规格说明书中的一部分,而应该是一个单独的系统属性规格说明文档。 对于系统的功能,我们应该对其分类,以便区分开各类功能的优先次序和识别出哪些是理所当然应该具备的系统功能。功能的分类包括: 明显的:应该履行的功能,并且用户应该知道这个功能是否已经被履行。 隐藏的:应该履行的功能,但功能的履行对用户不可见。很多使用底层技术的服务确实符合这种情况,例如,将数据保存到一个持久化存储机构中。隐藏的功能经常在采集需求的过程中被遗漏。 修饰性的:可选的,增加这些功能不会对成本和其它系统造成重要影响。 为此,我们给出该系统的借书基本功能如下: F1.1记录借出的图书----借阅事件明显的 F1.2 查找书库中是否存在这种图书明显的 F1.3 从借书卡中读取借书者信息,并校验该信息明显的 F1.4 查找书库中这本书是否还有副本隐藏的 F1.5 当一次借阅完成后,削减该书的副本存书数量隐藏的 F1.6 管理员要使用系统,必须输入ID号和密码才行明显的 F1.7 查询显示借书信息明显的 F1.8 提供一个持久化存储机制隐藏的 F1.9 提供过程间的和系统间的通信机制隐藏的 系统属性:系统属性是系统的特性,它们并不是系统的功能,例如:易用、容错、响应时间、界面形式、平台等。系统属性具有一组可能的属性细节,这些属性细节往往是属性的一些离散的、表达模糊的符号值,例如: 响应时间=(生理上能够接受的时间段) 界面形式=(图形化的,基于表的,彩色比较平淡的) 在我们的案例中,要求借书查找时间小于1秒。 我们结合上面的图书馆管理系统的案例,来给出图书管理系统的问题域模型。我们首先看问题域中的图书、借阅、书目和借书者这四个类。 系统将通过计算机来处理图书、副本、借书者和借阅。借书者要求借书,给出要借图书的名称,出示借书证。系统查找所借的图书是否存在,若存在,同时还要查看该图书是否还有副本,如果有,再查询该借书者提供的借书证是否合法的注册用户,如果是,则办理借阅手续(登记借阅信息)。 图书是存放在图书馆中的一个书的名称,副本是一个图书的具体实例。一个图书可能有多

面向对象分析设计小结

?1、面向对象方法的基本观点: ?Coad-Y ourdon认为:面向对象=对象+类+继承+通信。 ?2、面向对象方法的特点包括: ?(1)、符合人们对客观世界的认识规律; ?(2)、对需求变化具有很强的适应性; ?(3)、支持软件复用; ?(4)、可维护性好。 ?3、对象、类、封装、继承、消息、多态性的基本概念。 对象是客观世界中具有可区分性的、能够唯一标识的逻辑单元,是现实世界中的一个事物(站在计算机技术角度,即对事物的模拟)。 类是一组具有相同属性和相同操作的对象的集合。 封装是把对象的属性和操作结合在一起,组成一个独立的单元。 继承是指子类(派生类、特化类)自动拥有其父类(基类、泛化类、超类)的全部属性和操作,即一个类可以定义为另一个更一般的类的特殊情况。 消息是对象之间采用消息传递来发生相互作用—互相联系、互发消息、响应消息、协同工作,进而实现系统的各项服务功能。 多态性是一种方法,使在多个类中可以定义同一个操作或属性名,并在每一个类中有不同的实现。 ?4、面向对象系统开发过程。 ?5、运用名词词组法来定义类(对象): ?例:音像商店出租/出售业务信息系统中的类的确定。 ?总目标:?A.提供及时培训。?B.实施的系统必须友好,易学易用。?C.实施的系统必须考虑安全问题。

?具体目标: ?1.1.1 提供一个自动系统协助顾客出售/出租结帐。 ?2.1.1 提供和维护一个自动的会员数据库。?a. 按要求提供最新会员信息。? b. 有添加、改变、删除会员信息的能力。 2.1.2 提供会员信息报表(但不限于)?a. 最少光顾的会员。?b. 最经常光顾的会员。?c. 有问题会员(欠钱,出租过期)? 4.1.1 提供、维护出售和出租项的库存数据库。?a. 按要求提供最新库存信息?b. 有添加、改变、删除库存信息(出售和出租)的能力 4.1.2 提供库存信息报表(但不限于)?a. 最不受欢迎的出租项?b. 最受欢迎的出租项?c. 过期的出租项?d. 出售和出租项的“订购”产品(采购报表) 5.1.1 提供出售报表(但不限于)?a. 用产品码表示的一段时间(天、星期、月)内销售情况?b. 用产品码表示的一段时间(天、星期、月)内出租情况相应的侯选对象清单为:安全问题、自动系统、顾客出售/出租结帐、会员数据库、会员信息、会员信息报表、库存数据库、出售和出租项、库存信息、库存信息报表、采购报表、出售报表。 ?6、对多值属性的处理方法:用部分-整体方法。 例:发票/发票行 第2章统一建模语言UML 1、UML描述的软件基本模型:用例视图、逻辑视图、构件视图、进程视图、 部署视图 2、UML的基本符号。 3、RUP项目开发过程的特征:用例驱动的系统、以体系结构为中心、螺旋 上升式的开发过程、以质量控制和风险管理为保障措施。

java面向对象编程实验报告

java面向对象编程实验报告 篇一:java面向对象编程实验报告 信息工程学院 Java程序设计实验/实习报告 学院:信息工程学院班级:信息112 姓名:吴连梅学号:XX013305 成绩:A 实验二面向对象编程 1.实验目的 (1)掌握类与对象基本知识; (2)Java中的继承机制及包(package)、接口(interface)等的设计方法; (3)掌握static、this、super等关键字的使用; (4)掌握Java中两种比较器的用法。 2.实验内容 实验题 1 定义一个类Book,包含两个属性:一个是private的String类型的属性title、一个是private的float类型的属性listPrice,封装这两个属性的四个方法setTitle()和getTitle()、setListPrice( )和geListPrice ()。 基本要求: (1)设计类Book及类BookManagement,在类BookManagement中输出Book类的对象的两个private属性;

(2)重写父类的toString()方法,实现Book类实例的两个属性的输出。 实验过程: 新建工程后,在工程下面建立一个包Book,在包下再建立一个Book类,类中包含两个属性,一个是private的String类型的属性title、一个是private的float类型的属性listPrice,之后是封装这两个属性的四个方法,用快捷键Alt+Shift+S选择gennerate Getters and Setters,再实验报告的内容与格式按任课教师的要求书写。 然后就是重写父类的toString()方法,用快捷键Alt+Shift+S选择gennerate toString,快捷重写。 这段程序写完是这样的: 接下来便是BookManagement类,在包book下新建一个类BookManagement, 写完的程序是这样的: BookManagement类中创建了书的对象,在主方法中调用output函数,赋值,输出。程序写完后,将其存盘,再进行运行,得出的结果如下: 实验题2 有两个类:MobileManagement和Mobile,分别描述如图 3.4所示两部手机名称及价格,类MobileManagemen(本文来自:小草范文网:java面向对象编程实验报告)t在包,而Mobile在包

相关文档