类与类之间的关系对于理解面向对象具有很重要的作用
面向对象中类和类的关系

⾯向对象中类和类的关系在⾯向对象⽅法中,我们在确定了类及类的属性和⽅法后。
不可避免的要研究类和类之间的关系,正是这些关系将整个事情串联起来。
使彼此之间有了联系,就像现实⽣活中,⼈与⼈交往中存在着不同的关系。
了解这些关系,对于我们开发系统百利⽽⽆⼀害,能够让我们轻松、⾼效的⼯作,相同像我们在⽇常⽣活中处理好⼈与⼈之间的关系。
会给我们带来巨⼤的优点。
那么我们就来认识⼀下。
⾯向对象中类与类之间有那些关系。
类和类之间的关系⼤概能够分为⼀下⼏种类型:泛化关系(Generalization)、实现关系(realization)、依赖关系(Dependency)、关联关系(Association)(关联、聚合(Aggregation)、组合(Composition))。
泛化关系和实现关系体现的是⼀种类和类、或者类和接⼝间的关系。
不存在引⽤,归结为纵向关系。
依赖关系和关联关系体现的是类和类、类与接⼝间的引⽤。
归结为横向关系。
⼀、泛化关系泛化关系是⼀个类(⼦类、⼦接⼝)继承另外的⼀个类(⽗类、⽗接⼝)的功能,⽽且能够有⾃⼰的新功能。
也既是我们所说的继承关系。
在java中通过extends来标识。
在UML中⽤⼀条带空⼼箭头的实现表⽰,从⼦类指向⽗类,或者⼦接⼝指向⽗接⼝。
代码例如以下:Class _A{}Class _B extends _A{}Public class Test{Public static void main(String args[]){_A a = new _B();}}⼆、实现关系实现关系指的是class类实现interface接⼝(能够使多个接⼝)。
在java中⽤implements标识,在UML中⽤⼀条带空⼼三⾓箭头的虚线标识,从类指向实现的接⼝。
代码例如以下:Interface A{}Class B implements A{}Public class Test{Public static void main( String args[] ){B b = new B();}}说明:以上泛化和实现为⼀对,两者都⽤空⼼三⾓形。
怎样使用类和对象

怎样使用类和对象使用类和对象是面向对象编程的核心概念之一、类是一种抽象的数据类型,它定义了一类对象的共同属性和方法。
而对象则是类的具体实例,通过实例化一个类,我们可以创建出多个对象。
使用类和对象能够有效地组织和管理代码,提高代码的可读性和可维护性。
下面我们将从定义类和对象、实例化对象、访问属性和方法、类的继承以及类之间的关系等方面来详细介绍如何使用类和对象。
一、定义类和对象在Python中,我们可以使用关键字class来定义一个类,类的命名通常采用首字母大写的驼峰命名法。
类内可以定义属性和方法,属性是类的状态信息,而方法则是类的行为。
例如,我们定义一个名为Person的类,其中包含一个属性name和一个方法greeting:```class Person:def __init__(self, name): = namedef greeting(self):print("Hello, my name is", )```上述代码中,__init__方法是一个特殊的方法,它用来初始化类的实例。
self参数代表类的实例本身,通过self我们可以访问类的属性和方法。
二、实例化对象在定义了一个类之后,我们可以通过调用类来实例化一个对象。
在Python中,对象的实例化操作非常简单,只需要使用类名后跟上一对括号即可。
例如,我们实例化一个名为Tom的Person对象,并调用其greeting方法:```tom = Person("Tom")tom.greeting```代码执行结果为:Hello, my name is Tom三、访问属性和方法访问类的属性和方法通过使用点运算符(.)来实现。
在Python中,类的属性和方法的访问和调用方式是一样的,都是通过对象名后面跟上一对括号来实现。
例如,我们使用前面定义的Person类,实例化一个名为Tom的对象,并访问其name属性和调用greeting方法:```tom = Person("Tom")print()tom.greeting```代码执行结果为:TomHello, my name is Tom四、类的继承在面向对象编程中,继承使得一个类可以继承另一个类的属性和方法,从而得到更多的功能。
软件工程练习题

《软件工程》练习题一、判断题1.螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析活动。
(对)2.数据字典是对数据流图中的数据流,加工、数据存储、数据的源和终点进行详细定义。
(错)3.JAVA语言编译器是一个CASE工具.(对)。
4.软件是指用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写的程序,软件开发实际上就是编写程序代码。
(错)5.软件模块之间的耦合性越弱越好。
(对)6.数据库设计说明书是一个软件配置项(对)7.在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象是生成类的模板.(错)8.过程描述语言可以用于描述软件的系统结构。
(错)9.如果通过软件测试没有发现错误,则说明软件是正确的.(错)10.快速原型模型可以有效地适应用户需求的动态变化。
(对)11.模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。
(对)12.集成测试主要由用户来完成。
(错)13.确认测试计划应该在可行性研究阶段制定(错)14.白盒测试无需考虑模块内部的执行过程和程序结构,只要了解模块的功能即可.(错)15.软件概要设计包括软件系统结构设计以及数据结构和数据库设计。
(对)16.用例常被用在项目的需求分析阶段,对项目的测试计划和用户指南也有用处。
(对)二、单选题1.瀑布模型的关键不足在于(2)(1)过于简单(2)不能适应需求的动态变更(3)过于灵活(4)各个阶段需要进行评审2.在面向对象软件开发方法中,类与类之间主要有以下结构关系(1)(1)关联和泛化(2)继承和一般(3)聚集和消息传递(4)继承和方法调用3.以下哪一项不是软件危机的表现形式(3)(1)成本高(2)生产率低(3)技术发展快(4)质量得不到保证4.以下哪一项不是面向对象的特征(4)(1)多态性(2)继承性(3)封装性(4)过程调用5.面向对象模型主要由以下哪些模型组成(1)(1)对象模型、动态模型、功能模型(2)对象模型、数据模型、功能模型(3)数据模型、动态模型、功能模型(4)对象模型、动态模型、数据模型6.软件可行性研究一般不考虑(4)(1)是否有足够的人员和相关的技术来支持系统开发(2)是否有足够的工具和相关的技术来支持系统开发(3)待开发软件是否有市场、经济上是否合算(4)待开发的软件是否会有质量问题7.软件维护的副作用主要有以下哪几种(3)(1)编码副作用、数据副作用、测试副作用(2)编码副作用、数据副作用、调试副作用(3)编码副作用、数据副作用、文档副作用(4)编码副作用、文档副作用、测试副作用8.软件项目计划一般不包括以下哪项内容(4)(1)培训计划(2)人员安排(3)进度安排(4)软件开发标准的选择和制定9.以下哪一项不属于面向对象的软件开发方法(3)(1)coad方法(2)booch方法(3)jackson方法(4)omt方法10.以下哪种测试方法不属于白盒测试技术(2)(1)基本路径测试(2)边界值分析测试(3)循环覆盖测试(4)逻辑覆盖测试11.需求规格说明书的作用不应该包括(D)。
UML类图及类与类之间的关系

UML类图及类与类之间的关系原⽂地址:类图⽤于描述系统中所包含的类以及它们之间的相互关系,帮助⼈们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。
1. 类类(Class)封装了数据和⾏为,是⾯向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。
在系统中,每个类都具有⼀定的职责,职责指的是类要完成什么样的功能,要承担什么样的义务。
⼀个类可以有多种职责,设计得好的类⼀般只有⼀种职责。
在定义类的时候,将类的职责分解成为类的属性和操作(即⽅法)。
类的属性即类的数据职责,类的操作即类的⾏为职责。
设计类是⾯向对象设计中最重要的组成部分,也是最复杂和最耗时的部分。
在软件系统运⾏时,类将被实例化成对象(Object),对象对应于某个具体的事物,是类的实例(Instance)。
类图(Class Diagram)使⽤出现在系统中的不同类来描述系统的静态结构,它⽤来描述不同的类以及它们之间的关系。
在系统分析与设计阶段,类通常可以分为三种,分别是实体类(Entity Class)、控制类(Control Class)和边界类(Boundary Class),下⾯对这三种类加以简要说明:(1) 实体类:实体类对应系统需求中的每个实体,它们通常需要保存在永久存储体中,⼀般使⽤数据库表或⽂件来记录,实体类既包括存储和传递数据的类,还包括操作数据的类。
实体类来源于需求说明中的名词,如学⽣、商品等。
(2) 控制类:控制类⽤于体现应⽤程序的执⾏逻辑,提供相应的业务操作,将控制类抽象出来可以降低界⾯和数据库之间的耦合度。
控制类⼀般是由动宾结构的短语(动词+名词)转化来的名词,如增加商品对应有⼀个商品增加类,注册对应有⼀个⽤户注册类等(3) 边界类:边界类⽤于对外部⽤户与系统之间的交互对象进⾏抽象,主要包括界⾯类,如对话框、窗⼝、菜单等。
在⾯向对象分析和设计的初级阶段,通常⾸先识别出实体类,绘制初始类图,此时的类图也可称为领域模型,包括实体类及其它们之间的相互关系。
2009年全国计算机等级考试二级C++笔试试题(4)

每小题2分,共70分第1题:以下关于虚函数的叙述中不正确的是()。
A.虚函数属于成员函数B.虚函数不允许说明成静态的C.凡是虚函数必须用virtual说明D.虚函数可以被继承【正确答案】:C【参考解析】:虚函数的引入是为了解决动态绑定问题.使类的实例表现出多态性,虚函数在继承后依然保持虚函数特性,此时不需要用virtual关键词修饰。
第2题:A【参考解析】:本题主要考察setfill的用法。
只用在设置了宽度的情况下,字符填充操作setfill才有意义。
另外要注意的是设置宽度setw是所有格式中惟一一个一次有效的设置。
第3题:下述说法错误的是()。
A.对象之间不可以相互赋值B.对象可以用作函数参数C.对象可以用作数组的元素D.对象可以用作另一对象的成员【正确答案】:A【参考解析】:如果重载了赋值运算符后,对象之间是可以赋值的,对象如C++中其他内置的数据类型一样,可以作为函数参数、数组元素,其他对象的成员存在。
第4题:假定AB为一个类,则执行AB x;语句时将自动调用该类的()。
A.有参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数【正确答案】:B【参考解析】:当没有显式调用指定形式的构造函数。
系统自动调用无参构造函数,如果没有为类指定此构造函数,则系统自动为其生成一个最简单的无参构造函数。
)。
A)654321B)432156C)456123D)123456【正确答案】:A【参考解析】:本题采用递归函数的方式将数组中的元素进行倒置,只要能够看出函数fun的功能,即可以得出正确答案为A。
第6题:数据库概念设计中,由分散到集中的设计方法是()。
A.视图设计B.视图集成设计C.集中式模式设计D.分数式模式设计【参考解析】:数据库概念设计中,由分散到集中的设计方法是视图集成设计。
第7题:类的构造函数的作用是()。
A.一般成员函数B.类的初始化C.对象的初始化D.删除对象创建的所有对象【正确答案】:C【参考解析】:本题考查类的构造函数的作用,构造函数一般负责完成对象建立时的初始化工作,如资源的分配。
类与类之间的六种关系

类与类之间的六种关系在面向对象编程中,类与类之间有六种关系,分别是继承、实现、聚合、组合、关联和依赖。
这些关系描述了不同类之间的联系和依赖,有助于我们更好地设计和组织程序。
继承是一种类与类之间的关系,它描述了一个类从另一个类继承属性和方法的过程。
继承可以减少代码的重复,提高代码的可维护性和可扩展性。
例如,一个动物类可以作为其他类的父类,其他类可以继承动物类的属性和方法,如狗类、猫类等。
实现是一种类与接口之间的关系,它描述了一个类实现接口的过程。
接口定义了一组方法,实现了接口的类必须实现这些方法。
实现可以使代码更加灵活,可以在不同的类中实现相同的接口,从而实现代码的复用。
聚合是一种“整体-部分”的关系,它描述了一个类包含其他类的实例的过程。
聚合表示一种弱的“拥有”关系,即一个类可以包含多个其他类的实例,但这些实例可以独立存在。
例如,一个汽车类可以包含多个轮子类的实例,但轮子类的实例可以独立存在。
组合是一种“整体-部分”的关系,它描述了一个类包含其他类的实例,并且这些实例不能独立存在的过程。
组合表示一种强的“拥有”关系,即一个类包含其他类的实例,这些实例不能独立存在。
例如,一个房子类可以包含多个房间类的实例,但房间类的实例不能独立存在。
关联是一种类与类之间的关系,它描述了一个类与另一个类之间的联系。
关联可以是单向的或双向的,可以是强的或弱的。
例如,一个人类可以与一个手机类之间存在关联,表示这个人拥有这个手机。
依赖是一种类与类之间的关系,它描述了一个类依赖于另一个类的过程。
依赖表示一个类使用了另一个类的实例或方法,但不拥有这个实例或方法。
例如,一个人类可以依赖于一个汽车类的实例,表示这个人需要使用这个汽车来出行。
类与类之间的六种关系描述了不同类之间的联系和依赖,有助于我们更好地设计和组织程序。
在实际编程中,我们需要根据具体情况选择不同的关系,以实现代码的复用、可维护性和可扩展性。
2009软件工程试题

1.在某系统中,存在如下的业务陈述:①一个客户提交0个或多个订单;②一个订单由一个且仅由一个客户提交。
系统中存在两个类:“客户”类和“订单”类。
对应每个“订单”类的实例,存在【 B 】“客户”类的实例;对应每个“客户”类的实例,存在0个或多个“客户”类的实例。
A)0个B)1个C)1个或多个D)0个或多个2.一般地,可以将软件开发的生命周期划分为问题定义、可行性分析、【 C 】、总体设计、详细设计、编码和单元测试、综合测试和维护8个阶段。
A)项目论证B)初始调查C)需求分析与定义D)问题分析3.下列关于软件开发瀑布模型的说法中,正确的是【 A 】: A)必须等前一阶段的工作完成之后,才能开始后一阶段的工作。
B)前一阶段的输出文档对后一阶段影响不大。
C)可以先完成软件的编码工作再补充相关文档。
D)以上说法都不对。
4.下列叙述中,与提高软件可移植性相关的是【 D 】:A)选择时间效率高的算法 B)尽可能减少注释 C)选择空间效率高的算法 D)尽量用高级语言编写系统中对效率要求不高的部分5.在信息系统分析阶段,对数据流图的改进,包括检查数据流图的正确性和提高数据流图的易理解性,下面说法不正确的是【 A 】。
A)数据流图中,输入数据与输出数据必须匹配B)数据流图的父图和子图必须平衡C)任何一个数据流至少有一端是处理框D)数据流图中适当的命名,可以提高易理解性6.【 A 】是导致软件缺陷的最大原因。
A)需求规格说明书B)设计方案C)编写代码D)测试计划7.从事物的组成部件及每个部件的属性、功能来认识事物。
这种方法被称为【 A 】的方法。
A)面向对象B)面向数据C)面向过程D)面向属性8.在软件项目管理中可以使用各种图形工具来辅助决策,下面对Gantt 图的描述中,不正确的是【 C 】。
A)Gantt图表现了各个活动的持续时间B)Gantt图表现了各个活动的起始时 C Gantt图反映了各个活动之间依赖关系D)Gantt图表现了完成各个活动的进度9.下列选项中,【 C 】不属于结构化分析方法所使用的工具。
类图知识点总结

类图知识点总结类图是面向对象系统建模中最为常用的一种结构化图表,它描述了系统中的类以及它们之间的关系。
类图可以帮助开发人员更好地理解系统结构,预判系统行为,促进团队协作和代码编写。
在软件开发过程中,类图通常是首先绘制的概念图,也是软件设计中最为基本的设计工具之一。
通过对类图的学习和掌握,可以帮助开发人员更好地进行软件设计与开发工作。
以下是类图的基本知识点总结:1. 类与对象类是描述系统中具有相似特征和行为的对象的模板,它包含了一组数据和方法,用来描述这些对象的状态和行为。
而对象是类的一个实例化,是类的具体实体。
在类图中,类通常用一个矩形表示,类名位于矩形的顶部,类的属性和方法则分别位于矩形的中间和底部。
2. 类之间的关系在类图中,类之间的关系分为以下几种:- 关联关系:表示两个类之间存在某种关联,通常用一条实线连接两个类,箭头指向被关联的类。
关联关系可以有多重性,如一对一、一对多、多对多等。
- 聚合关系:表示整体与部分的关系,通常由一个包含整体的类指向被包含的部分类,聚合关系用一条实线连接两个类,并在整体端画一个空心菱形。
- 组合关系:表示整体负责部分的生命周期,通常由一个包含整体的类指向被包含的部分类,组合关系也用一条实线连接两个类,但在整体端画一个实心菱形。
- 继承关系:表示父类与子类之间的关系,通常由一个三角箭头指向父类,继承关系用一条带有空心三角箭头的实线连接父类和子类。
- 实现关系:表示类实现某个接口,通常由一个带有虚线箭头的实线连接类和接口。
3. 类图的组成元素类图主要由以下几种组成元素构成:- 类:用矩形表示,包括类名、属性和方法。
- 接口:用和类相似的方式表示,但通常在类的矩形上方加上“<<interface>>”标识。
- 关联关系:用实线连接两个类。
- 聚合关系:用一条实线连接两个类,并在整体端画一个空心菱形。
- 组合关系:用一条实线连接两个类,并在整体端画一个实心菱形。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
类与类之间的关系对于理解面向对象具有很重要的作用,以前在面试的时候也经常被问到这个问题,在这里我就介绍一下。
类与类之间存在以下关系:
(1)泛化(Generalization)
(2)关联(Association)
(3)依赖(Dependency)
(4)聚合(Aggregation)
UML图与应用代码例子:
1.泛化(Generalization)
[泛化]
表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。
一般化的关系是从子类指向父类的,与继承或实现的方法相反。
[具体表现]
父类父类实例=new 子类()
[UML图](图1.1)
图1.1Animal类与Tiger类,Dog类的依赖关系
[代码表现]
1.class Animal{}
2.class Tiger extends Animal{}
3.public class Test
4.{
5.public void test()
6.{
7.Animal a=new Tiger();
8.}
9.}
2.依赖(Dependency)
[依赖]
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
[具体表现]
依赖关系表现在局部变量,方法的参数,以及对静态方法的调用
[现实例子]
比如说你要去拧螺丝,你是不是要借助(也就是依赖)螺丝刀(Screwdriver)来帮助你完成拧螺丝(screw)的工作
[UML表现](图1.2)
图1.2 Person类与Screwdriver类的依赖关系
1. public class Person{
2. /** 拧螺丝 */
3. public void screw(Screwdriver screwdriver){
4. screwdriver.screw();
5. }
6. }
3.关联(Association)
[关联]
对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
[具体表现]
关联关系是使用实例变量来实现
[现实例子]
比如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司
[UML图] (图1.3)
图1.3 公司和员工的关联关系
[代码表现]
∙public class Company{
∙ private Employee employee;
∙ public Employee getEmployee(){
∙ return employee;
∙ }
∙ public void setEmployee(Employee employee){
∙ this.employee=employee;
∙ }
∙ //公司运作
∙ public void run(){
∙ employee.startWorking();
∙ }
∙}
(4)聚合(Aggregation)
[聚合]
当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚集关系。
聚合是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系。
[具体表现]
与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。
关联关系和聚合关系来语法上是没办法区分的,从语义上才能更好的区分两者的区别。
[关联与聚合的区别]
(1)关联关系所涉及的两个对象是处在同一个层次上的。
比如人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。
聚合关系涉及的两个对象处于不平等的层次上,一个代表整体,一个代表部分。
比如电脑和它的显示器、键盘、主板以及内存就是聚集关系,因为主板是电脑的组成部分。
(2) 对于具有聚集关系(尤其是强聚集关系)的两个对象,整体对象会制约它的组成对象的生命周期。
部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期,当整体消失,部分也就随之消失。
比如张三的电脑被偷了,那么电脑的所有组件也不存在了,除非张三事先把一些电脑的组件(比如硬盘和内存)拆了下来。
[UML图](图1.4)
图1.3 电脑和组件的聚合关系
[代码表现]
∙public class Computer{
∙ private CPU cpu;
∙ public CPU getCPU(){
∙ return cpu;
∙ }
∙ public void setCPU(CPU cpu){
∙ this.cpu=cpu;
∙ }
∙ //开启电脑
∙ public void start(){
∙ //cpu运作
∙ cpu.run();
∙ }
∙}
聚合
聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a
的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;
组合
组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;
对于继承、实现这两种关系没多少疑问,他们体现的是一种类与类、或者类与接口间的纵向关系;其他的四者关系则体现的是类与类、或者类与接口间的引用、横向关系,是比较难区分的,有很多事物间的关系要想准备定位是很难的,前面也提到,这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系;但总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖;
1.UML类图图示样例
2.1继承关系:
用空心三角形+实线来表示
2.2实现接口:
用空心三角形+虚线来表示
说明:以上为一对,两者都用空心三角形,继承关系比实现接口关系耦合性强,所以继承用实线,实现接口用虚线
2.3合成关系:
(Composition,也有翻译成‘组合、复合’的)是一种强的‘拥有’关系:
体现了严格的部分和整体的关系,部分和整体的生命周期一样。
在这里鸟和其翅膀就是合成(组合)关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的。
合成关系用实心的菱形+实线箭头来表示。
另外,你会注意到合成关系的连线两端还有一个数字‘1’和数字‘2’,这被称为基数。
表明这一端的类可以有几个实例,很显然,一个鸟应该有两只翅膀。
如果一个类可能有无数个实例,则就用‘n’来表示
2.4聚合关系:
表示一种弱的‘拥有’关系
体现的是A对象可以包含B对象,但B对象不是A对象的一部分。
聚合关系用空心的菱形+实线箭头来表示
说明:以上为一对,可以这样记忆,复合关系比聚合关系耦合性强,所以复合菱形为实心,聚合菱形为空心
2.5关联关系:
用实线箭头来表示:
企鹅需要‘知道’气候的变化,需要‘了解’气候规律
2.6依赖关系(Dependency):
用虚线箭头来表示,动物依赖于氧气和水
说明:以上为一对,可以这样记忆,关联关系比依赖关系耦合性强,所以,关联关系用实线,依赖关系用虚线
2.7接口的两种表示方法:‘飞翔’,它表示一个接口图,与类图的区别主要是顶端有<<interface>>显示。
第一行是接口名称,第二行是接口方法。
接口还有另一种表示方法,俗称棒棒糖表示法,就是唐老鸭类实现了‘讲人话’的接口
2.8注释表示方法:。