课程
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
报告
设计题目:简单设计模式及应用
学 院:计算机科学与信息学院
专 业: 软 件 工 程
班 级:
学 号:
学生姓名:
指导教师:
年 月 日
一、实训目的及要求
l 什么是设计模式
l 了解抽象工厂设计模式
l 应用简单工厂模式和工厂设计模式
二、实训环境
windows7操作系统,配置Vc#2010运行环境,安装SQL Server2010数据库管理系统
三、实训内容
不同的图形具有不同的计算面积和周长的方法,通过选择图行类别获得不同图形面积和周长的计算方法,从而得到图形的面积。用简单工厂模式和工厂方法模式分别编写程序计算不同图形的面积和周长
四、算法描述及实训步骤
A简单工厂模式
1算法描述
定义一个图形基类shaped,从Shaped派生出具体图形类Circle、Rectangular、Triangle、Square。定义一个产生图形工厂ShapeFactory
UML图如下所示
Shaped
//图形工厂
#Color :string
+GetArea():double
+GetPerimeter():double
<
>
ShapeFactory
+CreateShape():Shaped
Rectangular
-Lenth:double
-Width:double
+Rectangular(string Color, double Lenth,double Width)
+GetArea():double
+GetPerimeter():double
Triangle
-Ed1:double
-Ed2:double
-Ed3:double
+Triangle(stringColor,double Ed1, double Ed2, double Ed3)
+GetArea():double
+GetPerimeter():double
Square
-Ed0:double
+Square(string Color, double Ed0)
+GetArea():double
+GetPerimeter():double
Circle
-Radius:double
+Circle(string Color,double Radius)
+GetArea():double
+GetPerimeter():double
2.实训步骤
(1)创建一个控制台应用程序,名为GetShaped。
(2)添加一个基类shaped,代码如下
public abstract class Shaped
{
protected string Color;
public Shaped()
{ ;}
public Shaped(string Color)
{
this.Color = Color;
}
public string GetColor()
{
return Color;
}
public abstract double GetArea();
public abstract double Getperimeter();
}
(3)添加一个派生类Circle如下:
public class Circle : Shaped
{
private double Radius;
public Circle(string Color, double Radius)
{
this.Color = Color;
this.Radius = Radius;
}
public override double GetArea()
{
return System.Math.PI * Radius * Radius;
}
public override double Getperimeter()
{
return 2.0 * System.Math.PI * Radius;
}
}
(4)添加一个派生类Rectangular如下:
public class Rectangular : Shaped
{
private double Length, Width;
public Rectangular(string Color, double Length, double Width)
{
this.Color = Color;
this.Length = Length;
this.Width = Width;
}
public override double GetArea()
{
return Length * Width;
}
public override double Getperimeter()
{
return 2.0 * Length + 2.0 * Width;
}
}
(5)添加一个派生类Triangle如下:
public class Triangle : Shaped
{
private double Ed1, Ed2, Ed3;
public Triangle(string Color, double Ed1, double Ed2, double Ed3)
{
this.Color = Color;
this.Ed1 = Ed1;
this.Ed2 = Ed2;
this.Ed3 = Ed3;
}
public override double GetArea()
{
double p = (Ed1 + Ed2 + Ed3) / 2;
return System.Math.Sqrt(p * (p - Ed1) * (p - Ed2) * (p - Ed3));
}
public override double Getperimeter()
{
return Ed1 + Ed2 + Ed3;
}
}
(6)添加一个派生类Square如下:
public class Square : Shaped
{
private double Ed0;
public Square(string Color, double Ed0)
{
this.Color = Color;
this.Ed0 = Ed0;
}
public override double GetArea()
{
return Ed0 * Ed0;
}
public override double Getperimeter()