开闭原则与里氏代换原则实验UML图及编程实现C#Word格式.docx

上传人:b****5 文档编号:20649872 上传时间:2023-01-24 格式:DOCX 页数:8 大小:57.10KB
下载 相关 举报
开闭原则与里氏代换原则实验UML图及编程实现C#Word格式.docx_第1页
第1页 / 共8页
开闭原则与里氏代换原则实验UML图及编程实现C#Word格式.docx_第2页
第2页 / 共8页
开闭原则与里氏代换原则实验UML图及编程实现C#Word格式.docx_第3页
第3页 / 共8页
开闭原则与里氏代换原则实验UML图及编程实现C#Word格式.docx_第4页
第4页 / 共8页
开闭原则与里氏代换原则实验UML图及编程实现C#Word格式.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

开闭原则与里氏代换原则实验UML图及编程实现C#Word格式.docx

《开闭原则与里氏代换原则实验UML图及编程实现C#Word格式.docx》由会员分享,可在线阅读,更多相关《开闭原则与里氏代换原则实验UML图及编程实现C#Word格式.docx(8页珍藏版)》请在冰豆网上搜索。

开闭原则与里氏代换原则实验UML图及编程实现C#Word格式.docx

长方形类:

两个属性,宽度和高度;

正方形类:

一个属性,边。

1、UML类图如下:

2、运用的设计原则:

开闭原则:

一个软件实体应当对扩展开放,对修改关闭。

定义一个抽象类Stringle类,抽象类中有求面积和周长的函数,当想再次扩展求圆、菱形等的面积,继承抽象类,实现其功能,很方便就对其进行扩展。

里氏代换原则:

所有引用基类(父类)的地方必须能透明地使用其子类的对象。

Stringle类为基类,Square类和Rectangular为其子类,在引用基类的地方就能使用子类实现,代码如下。

3、C#实现代码如下:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespaceConsoleApplication1

{

classProgram

staticvoidMain(string[]args)

Stringlesquare=newSquare(5);

Stringlerectangular=newRectangular(3,5);

Accounteraccounter=newAccounter();

accounter.calculate(square);

accounter.calculate(rectangular);

Console.ReadLine();

}

publicclassAccounter

publicAccounter(){}

publicvoidcalculate(Stringlestringle)

stringle.Area();

stringle.ZhouChang();

///<

summary>

///抽象类,定义了求面积和周长的方法,没有实现

/summary>

publicabstractclassStringle

publicabstractvoidArea();

publicabstractvoidZhouChang();

///正方形类继承自抽象类

publicclassSquare:

Stringle

intwidth;

publicSquare(intw)

width=w;

publicoverridevoidArea()

intarea=width*width;

Console.WriteLine("

正方形的面积为:

"

+area);

publicoverridevoidZhouChang()

intscircle=width*4;

正方形的周长为:

+scircle);

///长方形类继承自抽象类

publicclassRectangular:

intheight;

publicRectangular(intw,inth)

height=h;

intarea=width*height;

长方形的面积为:

intscircle=width*2+height*2;

长方形的周长为:

4、实验结果:

2、问题

(二)“士兵用枪杀敌”UML图理解与编程实现

(1)CS游戏中的枪械类图

(2)如果我们有一个玩具手枪,该如何定义呢?

先在上图增加一个类ToyGun,然后继承于AbstractGun类

(3)玩具枪与真实枪分离的类图

用C#实现代码如下:

namespaceConsoleApplicationGun

AbstractGunhandgun=newHandGun();

//手枪

AbstractGunriflegun=newRifleGun();

//步枪

AbstractGunmachinegun=newMachineGun();

//机枪

AbstractGuntoygun=newToyGun();

//

//AbstractToytoygun=newToyGun();

Soldiersoldier=newSoldier();

soldier.killEnemy(handgun);

//士兵拿手枪杀敌人

soldier.killEnemy(riflegun);

//士兵拿步枪杀敌人

soldier.killEnemy(machinegun);

//士兵拿机枪杀敌人

soldier.killEnemy(toygun);

//士兵拿玩具枪杀敌人

publicclassSoldier

publicSoldier(){}

publicvoidkillEnemy(AbstractGunabstractgun)

abstractgun.shoot();

publicabstractclassAbstractGun

publicAbstractGun(){}

publicabstractvoidshoot();

publicabstractclassAbstractToy

publicAbstractToy(){}

publicclassHandGun:

AbstractGun

publicHandGun(){}

publicoverridevoidshoot()

Handgunshoot!

);

publicclassRifleGun:

publicRifleGun(){}

publicoverridevoidshoot()

RifleGunshoot!

publicclassMachineGun:

publicMachineGun(){}

MachineGunshoot!

}

publicclassToyGun:

publicToyGun(){}

ToyGunshoot!

实验结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1