初识UML

统一建模语言(UML,UnifiedModelingLanguage)是面向对象软件的标准化建模语言。UML因其简单、统一的特点,而且能表达软件设计中的动态和静态信息,目前已成为可视化建模语言的工业标准。在软件无线电系统的开发过程中,统一建模语言可以在整个设计周期中使用,帮助设计者缩短设计时间,减少改进的成本,使软硬件分割最优。

下面我将举个例子,其中包含了UML类图中的基本图示法。


UML类图图示样例


整体代码如下:

//动物抽象基类
public abstract class Animal{
	//有生命
	public bool bLiving=true;
	//新陈代谢
	public void Metabolism(Oxygen oxygen,Water water){
	}
	//繁殖
	public void Breeding(){
	}
}
//氧气类
public class Oxygen{	
}
//水类
public class Water{	
}

//鸟类
public class Bird:Animal{
	//翅膀
	private Wing wing;
	public Bird(){
		wing=new Wing();
	}

	//下蛋
	public virtual void LayingEggs(){
		
	}
}
//翅膀
class Wing{
}


//大雁类
class WildGoose:Bird,IFly{
	public override void LayingEggs(){
	}
	public void Fly(){}	
}

//雁群类
class WideGooseAggregate
{
	private WildGoose[] arrayWideGoose;
}

//飞翔接口
interface IFly{
	void Fly();
}

//鸭子类
public class Duck:Bird{
	public override void LayingEggs(){
	}
}
public class DonaldDuck:Duck,ILanguage{
	public void Speak(){
	}
}

//企鹅类
class Penguin:Bird{
	//气候
	private Climate climate;
	public override void LayingEggs(){
	}
}
//讲话接口
interface ILanguage{
	void Speak();
}
//气候类
class Climate{
	public ClimateType climateType;
}
//气候类型
public enum ClimateType{
	HOT,WARM,COOL,COLD
}

分别解析:

首先“Animal”矩形框,它就代表一个类(Class)。类图分三层,第一层显示类的名称,如果是抽象类,则就用斜体显示。第二层是类的特性,通常就是字段,如果是静态字段,则就用下划线显示。第三层是类的操作,通常是方法或属性,如果是静态方法,则就用下划线显示。注意前面的符号,‘+’表示public,‘-’表示private,‘#’表示protected。

//动物抽象基类
public abstract class Animal{
	//有生命
	public bool bLiving=true;
	//新陈代谢
	public void Metabolism(Oxygen oxygen,Water water){
	}
	//繁殖
	public void Breeding(){
	}
}

注意左下角的“IFly”,它表示一个接口图,与类图的区别注要是顶端有《interface》显示。第一行是接口名称,第二行是接口方法。接口还有另一种表示方法,俗称帮帮糖表示法,如图:

第一种表示方法:矩形表示法

//飞翔接口
interface IFly{
	void Fly();
}

第二种表示方法:棒棒糖表示法

//讲话接口
interface ILanguage{
	void Speak();
}

再注意右下角的“ClimateType”,它表示一个枚举图,与类图的区别注要是顶端有《enumeration》显示。第一行是枚举名称,第二行是枚举值。如图:

//气候类型
public enum ClimateType{
	HOT,WARM,COOL,COLD
}
接下来就可以讲类和类,类和接口之间的关系了。注意Animal,Bird,WildGoose, Dock,Penguin之间的关系符号。它们都是继承的关系,继承关系用空心三角形+实线来表示。如图:

//鸟类
public class Bird:Animal{
	//翅膀
	private Wing wing;
	public Bird(){
		wing=new Wing();
	}

	//下蛋
	public virtual void LayingEggs(){
		
	}
}

而大雁是可以飞的,我让它实现了飞翔接口。实现接口用空心三角形+虚线来表示。如图:


//大雁类
class WildGoose:Bird,IFly{
	public override void LayingEggs(){
	}
	public void Fly(){}	
}
在来看看企鹅和气候的关系 ,企鹅是很特别的鸟,会游泳不会飞。更重要的是,它与气候有很大的关联,企鹅需要“知道”气候的变化,需要“了解”气候规律。当一个类“知道”另一个类时,可以用关联(association)。关联关系用实线箭头来表示。如图:


大雁是群居动物,每只都是属于一个雁群,一个雁群可以有多只大雁。所以他们之间就满足聚合(Aggregation)关系。聚合表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。聚合关系用空心的菱形+实线箭头来表示。如图:


//雁群类
class WideGooseAggregate
{
	private WildGoose[] arrayWideGoose;
}

合成(Composition,也有翻译成“组合”的)是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。在这里鸟和其翅膀就是合成(组合)关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的。合成关系用实心的菱形+实线箭头来表示。另外,你会注意到合成关系的连线俩端还有一个数字“1”和“2”,这被称为基数。表明这一端的类可以有几个实例,很显然,一个鸟应该有俩只翅膀。如果一个类可能有无数个实例,则就用“n”来表示。关联关系、聚合关系也可以有基数的。如图:
//鸟类
public class Bird:Animal{
	//翅膀
	private Wing wing;
	public Bird(){
		wing=new Wing();
	}

	//下蛋
	public virtual void LayingEggs(){
		
	}
}
在鸟Bird类中,初始化时,实例化翅膀Wing,它们之间同时生成。
动物几大特征,比如有新陈代谢,能繁殖。而动物要有生命力,需要氧气、水以及食物等。也就是说,动物依赖于氧气和水。他们之间是依赖关系(Dependency),用虚线箭头来表示。

//动物抽象基类
public abstract class Animal{
	//有生命
	public bool bLiving=true;
	//新陈代谢
	public void Metabolism(Oxygen oxygen,Water water){
	}
	//繁殖
	public void Breeding(){
	}
}
最后用一句话结束吧: 编程是一门技术,更加是一门艺术!!!得意

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值