快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新匍京1_龟发之家论坛



关联的观点

关联用来表示两个或多个类的工具之间的布局关系,它在代码中体现为一个类以属性的形式包孕对另一个类的一个或多个工具的利用。

法度榜样演示:关联关系(code/assocation)

假设:一个公司只有三名员工:一个员工要么没有事情,要么只能在一个公司事情。(代码简化了,主要阐明关联关系)

Person类:

class person

{public string name;

public person(string eName){

name = eName;}

public void startWork(){

Console.WriteLine("员工{0}开始事情",name);}

}Person

Company类:

class company澳门新匍京1

{public string name;//公司名称

public person[ ] employee = new person[3];

public company(string cName)//构造函数{

name = 澳门新匍京1cName;}

public void run()

{Console.WriteLine("公司“{0}”开始运作",name);

employee[0].startWork();employee[1].startWork();

employee[2].startWork();}

public void stop()

{Console.WriteLine("公司“{0}”竣事运作", name);

}}

Company

节制台法度榜样:

class Program

{static void Main(string[] args)

{company c = new company("北京能力有限公司");

c.employee[0] = new person("张三");c.employee[1] = new person("李四");

c.employee[2] = new person("王二");c.run();

c.stop();Console.Read();

}}

Program

输出:

对应的类图:

二元关联

观点:两个类之间的关联成为二元关联。

符号:

比如:在一个大年夜公司里,公司总裁只熟识那些核心人员,不熟识所有的通俗人员,而所有的人员都熟识总裁。

public class 大年夜公司总裁

{private 核心人员A;

}

public class 核心人员{

private 大年夜公司总裁B;}

public class 通俗人员

{private 大年夜公司总裁B;

}

输出:

对应的类图:

二元关联

观点:两个类之间的关联成为二元关联。

符号:

比如:在一个大年夜公司里,公司总裁只熟识那些核心人员,不熟识所有的通俗人员,而所有的人员都熟识总裁。

public class 大年夜公司总裁

{pri澳门新匍京1vate 核心人员A;

}

public class 核心人员{

private 大年夜公司总裁B;}

public class 通俗人员

{private 大年夜公司总裁B;

}

对应的类图:

单向关联关系对应的代码:

public class A

{private B b;

}

public class B{

}

双向关联关系对应的代码:

public class A

{private B b;

}

public class B{

private A a;}

关联的名称

关联的名称表达了关联的内容,一样平常应用动宾布局的短语。(例如上面的类图中:work)

关联命名的原则是该命名是否有助于理解该模型。

关联的角色

关联中的角色是类的工具在关联中所扮演的角色。例如上图中的:employer(雇佣方),employee(员工:受雇佣的人)。关联的角色会转换为代码。

class company

{public string name;//公司名称

public person[ ] employee = new person[3];

public company(string cName)//构造函数{

name = cName;}

……}

关联的可见性

用可见性修饰角色名称,以阐明角色名称可以在哪些范围内可被造访到。

代码:

class company

{public string name;//公司名称

// "+"public person[] employee = new person[3];

public company(string cName)//构造函数

{name = cName;

}……

}

关联的多重性

多重性是指有若干个工具介入了关联。详细的说,是指类A的一个工具对应类B的工具的个数。

举个例子阐明吧:

对应代码:

public class 狗

{private 腿[] X = new 腿[4];

}

public class 腿{

……}

便是上面的数字描述)

多重性有哪些表示?

1:表示1个

0..*:表示随意率性多个( ≥0)(*可以换成n)

*:表示随意率性多个( ≥0)

1..*:表示1个或多个(≥1)

0..1:表示0个或1个

5..11:表澳门新匍京1示5-11个

1,3,8: 表示个1或3个或8个

0,3..8: 表示0个或3-8个

在Rose中怎么设置?

聚合与组合

聚合(凑集)与组合(合成、组成)是两种特殊的关联。

1、聚合(关联的特例)澳门新匍京1

聚合的观点:聚合表示类之间的整体与部分的关系。聚合意味着一个类拥有但共享另一个类的工具。

法度榜样演示:聚合(code/associationB)

class cpu

{public string name; //品牌

public string rate; //主频

public cpu(string cpuName,string cpuRate){

name = cpuName;rate = cpuRate;

}}

class computer

{public string buyTime;

public string color;public cpu mycpu;

public computer(string computerBuyTime,string computerColor)

{buyTime = computerBuyTime;

color = computerColor;}

public void cpuInfo(){

Console.WriteLine("该电脑的CPU品牌为:{0}",mycpu.name);Console.WriteLine("该电脑的CPU主频为:{0}", mycpu.rate);

}}

class Program

{static void Main(string[ ] args)

{cpu cpuA = new cpu("Intel","2.93");

cpu cpuB = new cpu("AMD","2.61");

computer computerC = new computer("2008-9-1","玄色");Console.WriteLine("购买光阴为:{0}", computerC.buyTime);

Console.WriteLine("颜色为:{0}\n", computerC.color);

Console.WriteLine("现在安装第一块CPU");computerC.mycpu = cpuA;//将cpuA装入该电脑中

computerC.cpuInfo();

Console.WriteLine("\n现在安装第二块CPU");computerC.mycpu = cpuB;//将cpuA装入该电脑中

computerC.cpuInfo();}

}

聚合的符号

在整体类端加空心菱形。

当整体类不存在时,不分类仍可能存在。部分类销毁时,整体类也将能够存在。

关联关系和聚合关系在语法上是没法子区分的,得从语义上才能更好的区分两者的差别。

您可能还会对下面的文章感兴趣: