[UML]UML系列——类图class的实现关系Realization
系列文章
[UML]UML系列——用例图中的各种关系(include、extend)
[UML]UML系列——类图class的关联关系(聚合、组合)
接口的概念
接口是一组没有实现的操作的集合。接口只提供操作的声明,不提供任何相应的功能代码。具体的功能代码由使用该接口的类实现,这叫做实现关系。
一般意义的操作:
public void turnUp()
{
Console.WriteLine("{0}风扇加速转动",name);
}
没有实现的操作:
public void turnUp();
c#中定义接口的方法
[可见性] interface 接口名{[返回值类型] 方法名([参数]);}
- 接口中只能包含方法、属性、索引器和事件的声明,没有字段和构造函数。
- 接口中的操作都被视为公有的,不需要添加可见性。
- 接口中只能提供方法的格式声明,而不能包含方法的实现,所以接口方法的声明总是以分号结束。
接口的符号

例如:
public interface turn //开关
{
void turnUp();
void turnDown();
}

接口的实现
接口中声明的方法的真正实现是由类来完成的,类必须实现该接口中所定义的所有方法。一个接口可以由多个类来实现,而在一个类也可以实现一个或多个接口。
class 类名:接口名列表
{
……
}


提示:要实现接口,必须在类名后包括接口,然后提供接口的每一个成员的实现。
注意:观察上例中接口成员和类中相应的实现的访问类型的写法,在接口成员的声明中不需要任何访问修饰符,而在类中相应接口成员实现定义中则都用public修饰符。
接口的作用:
1、接口制定了一组规范,实现接口的所有的类都必须遵守这套规则。
常常遇到这样的情况,在父类内定义了一个操作,指望它的子类能够继承。但这个操作对于父类自身而言,没有必要编写任何代码,有时也实在不知道该编写什么代码。这时,我们就不去实现这个操作,接口就是这样一组操作的集合。
程序演示:
public interface animal
{
void sound();
}
接口
dog1 class dog : animal
{
public string name;
public int legs;
public dog(string x, int y)
{
name = x;
legs = y;
}
public void sound()
{
Console.WriteLine(name + "的叫声为:" + "汪汪");
}
}
dog
class cat : animal
{
public string name;
public int legs;
public cat(string x, int y)
{
name = x;
legs = y;
}
public void sound()
{
Console.WriteLine(name + "的叫声为:" + "喵喵");
}
}
cat
class chick : animal
{
public string name;
public int legs;
public chick(string x, int y)
{
name = x;
legs = y;
}
public void sound()
{
Console.WriteLine(name + "的叫声为:" + "咯咯达");
}
}
chick
class Program
{
static void Main(string[] args)
{
animal x; x = new dog("小狗", );
x.sound(); x = new cat("小猫", );
x.sound(); x = new chick("小鸡", );
x.sound();
}
}
Program
从设计的角度来看,一个项目中有多个类需要去编写,由于工作量比较大,每个类可能由不同的人进行编写,比如A程序员去写Dog类,B程序员去写Cat类。这两个类本来没什么联系的,可是由于用户需要他们都实现一个关于“叫”的方法.这就要对他们进行一种约束,让他们都继承于animal接口,目的是方便统一管理,也方便调用。
当然了,不使用接口一样可以达到目的。只不过这样的话,这种约束就不那么明显,如果这样的类还有Duck类等等,比较多的时候难免有人会漏掉这样方法,所以说还是通过接口更可靠一些,约束力更强一些。(摘自互联网)
2、保持程序的可扩展性。(例如上面的例子中,如果有其他的动物类..)
3、一个类可以实现多个接口。可以在同一个类中同时实现多个接口,即实现多重继承。要实现多个接口,需将这些接口用逗号分开。
程序演示:模拟手机即可打电话又可以视频电话
public interface IPhone
{
void call();
}
public interface IVideo
{
void show();
}
实现接口:
class visualPhone:IPhone,IVideo
{
private string phoneName,videoName;
public visualPhone(string name1,string name2)
{
phoneName = name1;
videoName = name2;
}
public void call()
{
Console.WriteLine("{0}开始通话",phoneName);
}
public void show()
{
Console.WriteLine("{0}开始视频",videoName);
}
}
控制台程序:
class Program
{
static void callShow(IPhone x,IVideo y)
{
x.call();
y.show();
} static void Main(string[] args)
{
IPhone m = new visualPhone("步步高", "");
IVideo n = new visualPhone("", "西门子");
callShow(m, n);
}
}
对应的类图: 
接口的特点
接口中只能包含方法、属性、索引器和事件的声明,没有字段和构造函数和析构函数、不能直接被实例化。接口不能自己实现其操作,而是由相应的类来实现。一个类可以实现多个接口。
对象图(Object Diagram)

对象是类的实例,对象图也可看作是类图的实例。
对象图与类图的关系
对象图实质上是类图的实例,主要用于了解系统在某个特定时刻的具体情况,以求发现类图中的错误,进而修正类图。
对象的符号
与类的图形相似,但有如下区别:
1、对象只有名称和属性两个分栏,没有操作分栏。
2、对象的名称要加下划线
3、对象的属性应有具体的值。(例如上面的对象图)
对象名的三种格式

对象图的组成

提示:对象图没有多重性,因为所有的链都是一对一的。
总结
关于类图的相关到这里已经算是结束了,下面将总结包图.....
[UML]UML系列——类图class的实现关系Realization的更多相关文章
- [UML]UML系列——类图class的泛化关系
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图C ...
- [UML]UML系列——类图class的依赖关系
相关文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列—— ...
- [UML]UML系列——类图class的关联关系(聚合、组合)
关联的概念 关联用来表示两个或多个类的对象之间的结构关系,它在代码中表现为一个类以属性的形式包含对另一个类的一个或多个对象的应用. 程序演示:关联关系(code/assocation) 假设:一个公司 ...
- UML类图的6大关系
<小酌重构系列>已经完成了大约1/3了,在这些文章中,我使用了一些简单的类图来描述重构策略.在之后的文章中,我可能会借助稍微复杂一些的UML类图来介绍.但是在此之前,我觉得有必要先介绍一下 ...
- UML类图6种主要关系区别和联系
UML类图关系图示,因为长得都很类似,所以大家总会混淆,本文主要目的就是分析一下6种主要的关系,找到联系与区别,便于记忆. 6种主要的关系如图1所示.继承与实现.组合与聚合.关联与依赖可分别划分为一组 ...
- UML简单介绍—类图详解
类图详解 阅读本文前请先阅读:UML简单介绍—类图这么看就懂了 1.泛化关系 一个动物类: /** * 动物类 */ public class Animal { public String name; ...
- 3.UML中的类图及类图之间的关系
统一建模语言简介 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标 ...
- GOF 的23种JAVA常用设计模式总结 02 UML中的类图与类图之间的关系
统一建模语言UML 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际 ...
- UML中的类图及类图之间的关系
统一建模语言简介 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标 ...
随机推荐
- git 常规使用小结
总结下 git 的常规使用: 一般我们使用 git 来维护项目代码. 前提背景: 远程服务器上代码库,包含分支: 1.master - 版本发布分支 2.dev - 平时开发用的分支 一般操作流程: ...
- mycat高可用方案
1.建议采用标准的mysql主从复制高可用配置并交付给mycat来完成后端mysql节点的主从自动切换. 2.mycat自身的高可用性 由HAproxy+Mycat集群+Mysql主从所组成的高可用性 ...
- 一张图看懂ANSYS17.0 流体 新功能与改进
一张图看懂ANSYS17.0 流体 新功能与改进 提交 我的留言 加载中 已留言 一张图看懂ANSYS17.0 流体 新功能与改进 原创2016-02-03ANSYS模拟在线模拟在线 模拟在线 ...
- 浅谈Tuple之C#4.0新特性那些事儿你还记得多少?
来源:微信公众号CodeL 今天给大家分享的内容基于前几天收到的一条留言信息,留言内容是这样的: 看了这位网友的留言相信有不少刚接触开发的童鞋们也会有同样的困惑,除了用新建类作为桥梁之外还有什么好的办 ...
- Flask入门1-HelloWorld
Flask是基于Python的轻量级Web开发框架,本文简述其构建web用用的基本步骤,以下内容默认开发环境为Ubuntu14.04. 本文参考Flask官方建教程翻译并整理:http://flask ...
- 洛谷P1330封锁阳光大学[二分图染色]
题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M ...
- 从LIS问题浅谈动态规划
今天以LIS问题切入动态规划,现在做一些简单的总结. LIS问题: http://www.cnblogs.com/Booble/archive/2010/11/27/1889482.html
- 有关sql server 2008无法导入数据库mdf文件的处理方法
解决方法1:根据该博客中的引导,加上自己安装版本的细节,可以添加成功 http://www.2cto.com/database/201408/328930.html 解决方法2: 根据<数据库系 ...
- 第1章 Linux系统简介
第1节 UNIX发展历史和发行版本 1. UNIX与Linux发展史 1.1 UNIX发展历史 (1)1965年,美国麻省理工学院(MIT).通用电气公司(GE)及AT&T的贝尔实验室联合开发 ...
- u3d_Shader_effects笔记6 第二章 animating sprite
1.前面的心情 上班看shader我也是醉了.写完这篇看代码去了,不过看着看着恐怕就会困.... 还有就是上天,我该怎么做,下一步,大懒: 2.参考源头 http://blog.csdn.net/ca ...