统一建模语言(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;
}
//鸟类
public class Bird:Animal{
//翅膀
private Wing wing;
public Bird(){
wing=new Wing();
}
//下蛋
public virtual void LayingEggs(){
}
}
在鸟Bird类中,初始化时,实例化翅膀Wing,它们之间同时生成。
//动物抽象基类
public abstract class Animal{
//有生命
public bool bLiving=true;
//新陈代谢
public void Metabolism(Oxygen oxygen,Water water){
}
//繁殖
public void Breeding(){
}
}
最后用一句话结束吧:
编程是一门技术,更加是一门艺术!!!![得意](http://static.blog.csdn.net/xheditor/xheditor_emot/default/proud.gif)