<span style="font-size:32px;">下边的代码是C#控制台程序,测试了一些模板、接口等的用法,作为入门。</span>
<span style="font-size:32px;">利用下边的代码在VS2013里生成代码的类图,类、接口关系图。</span>
<span style="font-size:18px;">生成方法:</span>
<span style="font-size:18px;"><span style="white-space:pre"> </span>解决方案(右键)->Show on Code Map.即可动画查看类图。</span>
<span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleTest
{
class Program
{
private delegate void pIndex(int n);
private delegate int pInt(int m, int n);
private delegate double pDbl(double m, double n);
static void Main(string[] args) // Default PRIVATE Attr.
{
int i = 0;
int j = 0;
int k = 0;
Console.Write("Hello, C#!\n");
///---/// 显示当前日期及时间
isolationStrip();
DateTime dt1 = DateTime.Now;
Console.WriteLine();
Console.WriteLine("dt1: {0} Year {1} Month {2} Day {3} Hour {4} Minutes {5} Seconds {6} MillSec",
dt1.Year, dt1.Month, dt1.Day, dt1.Hour, dt1.Minute, dt1.Second, dt1.Millisecond);
Console.Write("\n\n");
///---/// 数学函数测试
isolationStrip();
double doublePara1 = Math.Sin(0.5);
Console.WriteLine("\nSin({1}) is :{0}.", doublePara1, 0.5);
TestDelegate classOne = new TestDelegate();
pIndex p = new pIndex( classOne.showDoubleValue);
p(111);
p = new pIndex( classOne.showValue);
p(111);
pInt pInt = new pInt(classOne.Add);
pInt(172,12);
pInt = new pInt(classOne.Red);
pInt(108, 12);
pInt = new pInt(classOne.Multi);
pInt(108, 12);
pInt = new pInt(classOne.Div);
pInt(108, 12);
pDbl pDbl = new pDbl(classOne.Add);
pDbl(172.345, 12.34);
pDbl = new pDbl(classOne.Red);
pDbl(172.345, 12.34);
pDbl = new pDbl(classOne.Multi);
pDbl(172.345, 12.34);
pDbl = new pDbl(classOne.Div);
pDbl(172.345, 12.34);
int e = 0;
string e1 = "";
Stack<string> sStr = new Stack<string>();
Stack<int> sInt = new Stack<int>();
// Int type stack
sInt.Push(14);
sInt.Push(54);
sInt.Push(12);
Console.WriteLine("Pop Stack Sort:");
while ( !sInt.StackEmpty())
{
sInt.Pop( ref e);
Console.WriteLine(" {0} ", e);
}
Console.WriteLine();
Console.WriteLine();
// String type stack
sStr.Push("LE");
sStr.Push("YY");
sStr.Push("Bright");
Console.WriteLine("Pop Stack Sort:");
while (!sStr.StackEmpty())
{
sStr.Pop(ref e1);
Console.WriteLine(" {0} ", e1);
}
Console.WriteLine();
Console.WriteLine();
///---/// Output 第1个矩形信息
isolationStrip();
Rectangle rect = new Rectangle(200.0, 120.00);
rect.showDetialInfo();
Console.WriteLine("\nNow outputting the {0}th circle info, \nits area is {1}", 1, rect.getArea());
Console.WriteLine();
///---/// Output 第1个椭球信息
isolationStrip();
Circle Ellipsoid = new Ellipsoid(1.00, 5.00, 12.0);
Ellipsoid.showInfo();
Console.WriteLine("\nNow outputting the {0}th circle info, \nits area is {1}", 1, Ellipsoid.getArea());
Ellipsoid.showDetialInfo();
Console.WriteLine();
Console.WriteLine();
///---/// Output 第1个圆形信息
isolationStrip();
Circle circleClass = new Circle( 1.00, 5.00);
circleClass.showInfo();
Console.WriteLine("\nNow outputting the {0}th circle info, \nits area is {1}", 1, circleClass.getArea());
circleClass.showDetialInfo();
Console.WriteLine();
Console.WriteLine();
///---/// Output 第2个圆形信息
Circle circleClass2 = new Circle();
circleClass2.showInfo();
Console.WriteLine("\nNow outputting the {0}th circle info, \nits area is {1}", 2, circleClass2.getArea());
circleClass2.showDetialInfo();
Console.WriteLine();
Console.WriteLine();
///---/// Output 第3个圆形信息
Circle circleClass3 = new Circle(100.00, 512.00);
circleClass3.showInfo();
Console.WriteLine("\nNow outputting the {0}th circle info, \nits area is {1}", 3, circleClass3.getArea());
Console.WriteLine();
Console.WriteLine();
///---/// 模板方法1
isolationStrip();
MyOpe<Circle> thiOpe = new MyOpe<Circle>();
circleClass2.showDetialInfo();
circleClass3.showDetialInfo();
Console.WriteLine("\n");
thiOpe.MySwap( ref circleClass2, ref circleClass3);
Console.WriteLine("After calling the template function - swap:\n");
circleClass2.showDetialInfo();
circleClass3.showDetialInfo();
Console.WriteLine("\n\n");
///---/// 模板方法2
MyPurelOpe<Circle> forthOpe = new MyPurelOpe<Circle>();
circleClass2.showDetialInfo();
circleClass3.showDetialInfo();
Console.WriteLine("\n");
forthOpe.MySwap(ref circleClass2, ref circleClass3);
Console.WriteLine("After calling the template function - swap:\n");
circleClass2.showDetialInfo();
circleClass3.showDetialInfo();
Console.WriteLine("\n\n");
---/// 自定义函数调用
Console.WriteLine( FcnTest001());
FcnTest002();
Console.ReadKey();
}
/// <summary>
/// 添加自定义函数
/// </summary>
/// <returns></returns>
private static string FcnTest001()
{
return "\nSelf-defination Funciotn 001:\n"+"Now testing the Function Call FcnTest001.";
}
private static void FcnTest002()
{
Console.WriteLine("\nSelf-defination Funciotn 002:\n" +
"Now testing the Function Call FcnTest002. ..." +
"And the static is necessary to limiting the function.");
}
private static void isolationStrip()
{
Console.WriteLine("\n" +
"///---///---///---///---///---///---///---///---///---///---///---///---///---///" +
"\n"+
"///---///---///---///---///---/ Isolationg Strip /---///---///---///---///---///" +
"\n" +
"///---///---///---///---///---///---///---///---///---///---///---///---///---///" +
"\n");
}
/// <summary>
/// 模板方法实例001
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="para1"></param>
/// <param name="para2"></param>
private static void MySwap<T>(ref T para1, ref T para2)
{
T tmp = para1;
para1 = para2;
para2 = tmp;
}
}
/// <summary>
/// 一些自定义类以及接口
/// </summary>
public class TestDelegate
{
/// <summary>
/// 纯方法类,无属性
/// </summary>
public void showDoubleValue(int n)
{
Console.WriteLine("{0} Multiply 2 is {1}", n, 2 * n);
}
public void showValue(int n)
{
Console.WriteLine("Varialbe is {0}", n);
}
public int Add(int m, int n)
{
Console.WriteLine("{0} Add {1} is {2}", m, n, m+n);
return m + n;
}
public int Red(int m, int n)
{
Console.WriteLine("{0} Reduce {1} is {2}", m, n, m - n);
return m - n;
}
public int Multi(int m, int n)
{
Console.WriteLine("{0} Multi {1} is {2}", m, n, m * n);
return m * n;
}
public int Div(int m, int n)
{
Console.WriteLine("{0} Divide {1} is {2}", m, n, m / n);
return m / n;
}
public double Add(double m, double n)
{
Console.WriteLine("{0} Add {1} is {2}", m, n, m + n);
return m + n;
}
public double Red(double m, double n)
{
Console.WriteLine("{0} Reduce {1} is {2}", m, n, m - n);
return m - n;
}
public double Multi(double m, double n)
{
Console.WriteLine("{0} Multi {1} is {2}", m, n, m * n);
return m * n;
}
public double Div(double m, double n)
{
Console.WriteLine("{0} Divide {1} is {2}", m, n, m / n);
return m / n;
}
}
public class Stack<T>
{
/// <summary>
/// 堆栈类
/// </summary>
///
T[] data;
int top;
public Stack()
{
data = new T[10];
top = -1;
}
public bool StackEmpty()
{
return -1 == top;
}
public void Push( T e)
{
top ++;
data[top] = e;
}
public void Pop( ref T e)
{
e = data[top];
top--;
}
}
public class MyOpe<T>
{
/// <summary>
/// 模板类,操作测试,含属性成员数组,有构造函数
/// </summary>
public T[] temp;
public MyOpe()
{
temp = new T[3];
}
public void MySwap(ref T para1, ref T para2)
{
temp[0] = para1;
para1 = para2;
para2 = temp[0];
}
public void MySwap(T para1, T para2)
{
temp[0] = para1;
para1 = para2;
para2 = temp[0];
}
public void MySwap( )
{
temp[2] = temp[0];
temp[0] = temp[1];
temp[1] = temp[2];
}
public void show()
{
Console.WriteLine( "\n"+temp[0].ToString());
Console.WriteLine( "\n"+temp[1].ToString());
Console.WriteLine( "\n"+temp[2].ToString());
}
}
public class MyPurelOpe<T>
{
/// <summary>
/// 模板操作类,含一个属性成员,无构造函数
/// </summary>
public T temp;
public void MySwap(ref T para1, ref T para2)
{
temp = para1;
para1 = para2;
para2 = temp;
}
public void show()
{
Console.WriteLine("\n" + temp.ToString()+"\n");
}
}
public interface Ia
{
/// <summary>
/// 接口定义
/// </summary>
/// <returns></returns>
double getArea();
double getCircumference();
}
public interface Ib
{
/// <summary>
/// 接口定义
/// </summary>
void showInfo();
void showDetialInfo();
}
public interface Ic
{
/// <summary>
/// 接口定义
/// </summary>
double getScale();
}
public interface Id
{
/// <summary>
/// 接口定义
/// </summary>
double getCubeScale();
double getVolume();
}
public class Rectangle:Ia,Ib
{
private double x,y;
public Rectangle()
{
x = 1.00;
y = 1.00;
Console.WriteLine("Rectangle Constructor");
}
~Rectangle()
{
Console.WriteLine("Rectangle Deconstructor");
}
public Rectangle( double x1, double y1)
{
x = x1;
y = y1;
Console.WriteLine("Rectangle Constructor");
}
public virtual double getArea()
{
return x * y;
}
public virtual double getCircumference()
{
return 2*(x + y);
}
public virtual void showInfo()
{
Console.WriteLine("Rectangle element x is : {0}", x);
Console.WriteLine("Rectangle element y is : {0}", y);
}
public virtual void showDetialInfo()
{
Console.WriteLine("Rectangle element x is : {0}", x);
Console.WriteLine("Rectangle element y is : {0}", y);
Console.WriteLine("Rectangle Area is : {0}", getArea());
Console.WriteLine("Rectangle circumference is : {0}", getCircumference());
}
}
public class Circle : Rectangle,Ic
{
double x, y;
public Circle()
{
x = 3.00;
y = x;
Console.WriteLine("Circle Constructor");
}
~Circle()
{
Console.WriteLine("Circle Deconstructor");
}
public Circle(double x1, double y1)
{
x = x1;
y = y1;
Console.WriteLine("Circle Constructor");
}
public override double getArea()
{
return 3.1415926*x*y;
}
public override double getCircumference()
{
return 3.1415926 * (x + y);
}
public virtual double getScale()
{
return x>y ? 2*x : 2*y;
}
public override void showInfo()
{
Console.WriteLine("Circle element x is : {0}", x);
Console.WriteLine("Circle element y is : {0}", y);
}
public override void showDetialInfo()
{
Console.WriteLine("Circle element x is : {0}", x);
Console.WriteLine("Circle element y is : {0}", y);
Console.WriteLine("Circle Area is : {0}", getArea());
Console.WriteLine("Circle Circumference is : {0}", getCircumference());
Console.WriteLine("Circle Size-Scale is : {0}", getScale());
}
}
public class Ellipsoid : Circle, Id
{
double x, y, z;
public Ellipsoid()
{
x = 3.00;
y = x;
z = y;
Console.WriteLine("Ellipsoid Constructor");
}
~Ellipsoid()
{
Console.WriteLine("Ellipsoid Deconstructor");
}
public Ellipsoid(double singlePara)
{
x = singlePara;
y = x;
z = x;
Console.WriteLine("Ellipsoid Constructor");
}
public Ellipsoid(double x1, double y1, double z1)
{
x = x1;
y = y1;
z = z1;
Console.WriteLine("Ellipsoid Constructor");
}
public override double getArea()
{
double p = 1.6075;
p = 4 * 3.1415926 * Math.Pow((Math.Pow(x * y, p) + Math.Pow(x * z, p) + Math.Pow(z * y, p))/3.00, 1.0 / p);
return getVolume();
}
public override double getCircumference()
{
return 2*3.1415926*getScale(); ///---/// 最大切面的 circumference
}
public override double getScale()
{
return Math.Max(z,Math.Max( x, y));
}
public virtual double getCubeScale()
{
return x*y*z;
}
public virtual double getVolume()
{
return 4.0/3.0*3.1415926*x*y*z;
}
public override void showInfo()
{
Console.WriteLine("Following are the informations of the attributes of current element :");
Console.WriteLine("Ellipsoid element x is : {0}", x);
Console.WriteLine("Ellipsoid element y is : {0}", y);
Console.WriteLine("Ellipsoid element z is : {0}", z);
}
public override void showDetialInfo()
{
Console.WriteLine("Ellipsoid element x is : {0}", x);
Console.WriteLine("Ellipsoid element y is : {0}", y);
Console.WriteLine("Ellipsoid element z is : {0}", z);
Console.WriteLine("Ellipsoid Area is : {0}", getArea());
Console.WriteLine("Ellipsoid Circumference is : {0}", getCircumference());
Console.WriteLine("Ellipsoid Size-Scale is : {0}", getScale());
Console.WriteLine("Ellipsoid Volume is : {0}", getVolume());
}
}
}</span>
<span style="font-size:18px;">
</span>
<span style="font-size:18px;">
</span>
<span style="font-size:18px;">
</span>
<span style="font-size:18px;"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABNkAAAIuCAYAAACCb958AAAgAElEQVR4AezdB3xb5b3/8Z/t2Nlx9nJwEjIgO4FAQ0IhQCCUvUtp6eA25Q+Ulg4o0HJpS2/XZXZAW1o6KBS4QAstlNVQaKEBAhlkQAZJSEyWs8j2/J/vsR/5SJZsWZItyfo8eSk6ks58S7J0vnpGXmlpaa1REEAAAQQQQAABBBBAAAEEEEAAAQQQQCBhgfyEl2RBBBBAAAEEEEAAAQQQQAABBBBAAAEEEPAFCNl4ISCAAAIIIIAAAggggAACCCCAAAIIIJCkACFbkoAsjgACCCCAAAIIIIAAAggggAACCCCAACEbrwEEEEAAAQQQQAABBBBAAAEEEEAAAQSSFCBkSxKQxRFAAAEEEEAAAQQQQAABBBBAAAEEECBk4zWAAAIIIIAAAggggAACCCCAAAIIIIBAkgKEbEkCsjgCCCCAAAIIIIAAAggggAACCCCAAAKEbLwGEEAAAQQQQAABBBBAAAEEEEAAAQQQSFKAkC1JQBZHAAEEEEAAAQQQQAABBBBAAAEEEECAkI3XAAIIIIAAAggggAACCCCAAAIIIIAAAkkKELIlCcjiCCCAAAIIIIAAAggggAACCCCAAAIIELLxGkAAAQQQQAABBBBAAAEEEEAAAQQQQCBJAUK2JAFZHAEEEEAAAQQQQAABBBBAAAEEEEAAAUI2XgMIIIAAAggggAACCCCAAAIIIIAAAggkKUDIliQgiyOAAAIIIIAAAggggAACCCCAAAIIIEDIxmsAAQQQQAABBBBAAAEEEEAAAQQQQACBJAUI2ZIEZHEEEEAAAQQQQAABBBBAAAEEEEAAAQQI2XgNIIAAAggggAACCCCAAAIIIIAAAgggkKQAIVuSgCyOAAIIIIAAAggggAACCCCAAAIIIIAAIRuvAQQQQAABBBBAAAEEEEAAAQQQQAABBJIUIGRLEpDFEUAAAQQQQAABBBBAAAEEEEAAAQQQIGTjNYAAAggggAACCCCAAAIIIIAAAggggECSAoRsSQKyOAIIIIAAAggggAACCCCAAAIIIIAAAoRsvAYQQAABBBBAAAEEEEAAAQQQQAABBBBIUoCQLUlAFkcAAQQQQAABBBBAAAEEEEAAAQQQQICQjdcAAggggAACCCCAAAIIIIAAAggggAACSQoQsiUJyOIIIIAAAggggAACCCCAAAIIIIAAAggQsvEaQAABBBBAAAEEEEAAAQQQQAABBBBAIEkBQrYkAVkcAQQQQAABBBBAAAEEEEAAAQQQQAABQjZeAwgggAACCCCAAAIIIIAAAggggAACCCQpQMiWJCCLI4AAAggggAACCCCAAAIIIIAAAgggQMjGawABBBBAAAEEEEAAAQQQQAABBBBAAIEkBQjZkgRkcQQQQAABBBBAAAEEEEAAAQQQQAABBAjZeA0ggAACCCCAAAIIIIAAAggggAACCCCQpAAhW5KALI4AAggggAACCCCAAAIIIIAAAggggAAhG68BBBBAAAEEEEAAAQQQQAABBBBAAAEEkhQgZEsSkMURQAABBBBAAAEEEEAAAQQQQAABBBAgZOM1gAACCCCAAAIIIIAAAggggAACCCCAQJIChGxJArI4AggggAACCCCAAAIIIIAAAggggAAChGy8BhBAAAEEEEAAAQQQQAABBBBAAAEEEEhSgJAtSUAWRwABBBBAAAEEEEAAAQQQQAABBBBAgJCN1wACCCCAAAIIIIAAAggggAACCCCAAAJJChCyJQnI4ggggAACCCCAAAIIIIAAAggggAACCBCy8RpAAAEEEEAAAQQQQAABBBBAAAEEEEAgSQFCtiQBWRwBBBBAAAEEEEAAAQQQQAABBBBAAAFCNl4DCCCAAAIIIIAAAggggAACCCCAAAIIJClAyJYkIIsjgAACCCCAAAIIIIAAAggggAACCGSXQF5eXsp3mJAt5aSsEAEEEEAAAQQQQAABBBBAAAEEEEAgkwVqa2tTvnuEbCknZYUIIIAAAggggAACCCCAAAIIIIAAArkmQMiWa884x4sAAggggAACCCCAAAIIIIAAAgggkHIBQraUk7JCBBBAAAEEEEAAAQQQQAABBBBAAIFcEyBky7VnnONFAAEEEEAAAQQQQAABBBBAAAEEEEi5ACFbyklZIQIIIIAAAggggAACCCCAAAIIIIBArgkQsuXaM87xIoAAAggggAACCCCAAAIIIIAAAgikXICQLeWkrBABBBBAAAEEEEAAAQQQQAABBBBAINcECNly7RnneBFAAAEEEEAAAQQQQAABBBBAAAEEUi5AyJZyUlaIAAIIIIAAAggggAACCCCAAAIIIJBrAoRsufaMc7wIIIAAAggggAACCCCAAAIIIIAAAikXIGRLOSkrRAABBBBAAAEEEEAAAQQQQAABBBDINQFCtlx7xjleBBBAAAEEEEAAAQQQQAABBBBAAIGUCxCypZyUFSKAAAIIIIAAAggggAACCCCAAAII5JoAIVuuPeMcLwIIIIAAAggggAACCCCAAAIIIIBAygU6pHyNca5w9NBKG3FIpQ3sW209utbEuRSzIYAAAggggAACCCCAAAIIIIAAAgi0R4GN5QW2eVsHW7C8yD7cm331wto0ZFOY9sVPfGinH7fXBnnhGgUBBBBAAAEEEEAAAQQQQAABBBBAAIGgQJUXGb25rJP99i/d7bn/dA4+lNHTeaWlpbVtsYeXnLbHrvvcTmqttQU220AAAQQQQAABBBBAAAEEEEAAAQTagcD8pR3tq7f2sQ2b27SeWEJybRKy3fj5nfb58z5MaAdZCAEEEEAAAQQQQAABBBBAAAEEEEAgdwW27iiwy7/b1xa+2zGjEVo1ZOvUsdauv2ynffrM3U0irNvWvcnHeRABBBBAAAEEEEAAAQQQQAABBBBAoP0K9Oxy0Io7V8Q8wOXvFdkP7+tp/3qrU8x50v1Aq4ZsZx6/z+76RnmjY9xzsNB+OneSvbKm1Bas62Mf7su+zuwaHRR3IIAAAggggAACCCCAAAIIIIAAAggkLDCs/wH7yLAP7OIj37FZY9c3Ws+6DzrYqVcOsoMVeY0ey4Q7Wq1B69gRFXb1J3Y1OsY31gywzz1whllhV/voyaPt+E/1tNLhxY3m4w4EEEAAAQQQQAABBBBAAAEEEEAAgdwQ2Lenwla+u91WLN9qF/zqUPvUsWvth2fOtW4dK0MAQwdX2WXn7LZ7HukRui+TJlqtJtvnvIO+6Qs7wo717Q197Lhbz7dTzxpln7t8shUVFYQ9zg0EEEAAAQQQQAABBBBAAAEEEEAAgdwWWOWFbbfe8i8b32e1PfqFv4VhfLg332Z8usT27s+82myt1k5z9vR9YQhVNfn2Xw+daSfOGmKXX30kAVuYDjcQQAABBBBAAAEEEEAAAQQQQAABBCQw8rDe9p1bZ9m/VpbYL18aF4bSo2uNHXvE/rD7MuVGq4RsOuAjxhwMO8YH5o22bXu72mVXHR12PzcQQAABBBBAAAEEEEAAAQQQQAABBBAICgwY2NU++/+m2v88My14tz89fVJ45tRohjTd0SohW99e1dYhoiXogk2lNn7yQOvarShNh8pmEUAAAQQQQAABBBBAAAEEEEAAAQSyRWDG8UNsx54O9u7mnmG7fOiQhn7awh5I841WGfhgUN