最全C#OOP设计思想之汽车模型源代码
最全C#OOP设计思想之汽车模型源代码
扫一扫加微信
学习OOP编程思想,从这里开始,参考代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Tech2007.CarLibrary;
namespace TestProject
{
public partial class frmTestCar : Form
{
public frmTestCar()
{
InitializeComponent();
}
/// <summary>
/// 消息跟踪记录
/// </summary>
private ITraceLog Trace
{
get { return new TraceLogListBox(this.listBox1); }
}
private void button1_Click(object sender, EventArgs e)
{
//**********************************************************
//学习内容:
// 1.工厂模式MakeCar方法,跟据不同参数制造汽车。
// 2.SetTraceLog方法,Car基类组合一个ITraceLog接口.当Car内部发生任何事情可通过ITraceLog展现。
// 3.对象多态。如定义Car变量,而CarFactory.MakeCar(CarType.Benz250)返回CarBenz250对象。
// 但CarBenz250对象必需继承自Car基类,否则编译品无法通过。
// 4.用工厂模式MakeCar两种方法制造汽车。
//**********************************************************
//由CarType制造一辆Benz250汽车
Car car = CarFactory.MakeCar(CarType.Benz250);
car.SetTraceLog(Trace);
car.ShowCarInfo();
//由对象类型制造一辆CarBMW600M汽车
Car car1 = CarFactory.MakeCar(typeof(CarBMW600M).FullName);
car1.SetTraceLog(Trace);
car1.ShowCarInfo();
}
private void button2_Click(object sender, EventArgs e)
{
//**********************************************************
//学习内容:
// 1.重载对象的Equals方法。Car.Equals为自己定义方法。
//**********************************************************
Car car = CarFactory.MakeCar(CarType.Benz250);
Car car1 = CarFactory.MakeCar(typeof(CarBMW600M).FullName);
ITraceLog log = Trace;
if (car.Equals(car1))
log.ShowMessage("汽车相等.");
else
log.ShowMessage("不同类型汽车");
}
private void button3_Click(object sender, EventArgs e)
{
//**********************************************************
//学习内容:
// 1.测试对象多态行为。
// 2.汽车维修工厂的Repair方法仅提供Car参数,为什么可维修Mazida,BMW200X。
//**********************************************************
Car car = CarFactory.MakeCar(CarType.Mazida); //制造一辆马自达
Car car1 = CarFactory.MakeCar(typeof(CarBMW200X).FullName); //制造一辆宝马200x
CarSuperMaintainStation m = new CarSuperMaintainStation(this.Trace);
//调用汽车维修工厂的Repair方法。
//思考:为什么Repair方法可以维修所有类型为Car的汽车?
// 为什么可以维修Mazida,BMW200X的汽车?
m.Repair(car);
m.Repair(car1);
}
private void button4_Click(object sender, EventArgs e)
{
//**********************************************************
//学习内容:
// 1.测试Override的方法
//**********************************************************
//Car基类有OpenDoor方法.多数汽车的开门方式是往左侧/右侧开门
Car car = new CarBMW600M(); //但BMW600系列是向上弹开车门
car.SetTraceLog(this.Trace);
car.OpenDoor();
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Tech2007.CarLibrary;
namespace TestProject
{
public partial class frmTestCar : Form
{
public frmTestCar()
{
InitializeComponent();
}
/// <summary>
/// 消息跟踪记录
/// </summary>
private ITraceLog Trace
{
get { return new TraceLogListBox(this.listBox1); }
}
private void button1_Click(object sender, EventArgs e)
{
//**********************************************************
//学习内容:
// 1.工厂模式MakeCar方法,跟据不同参数制造汽车。
// 2.SetTraceLog方法,Car基类组合一个ITraceLog接口.当Car内部发生任何事情可通过ITraceLog展现。
// 3.对象多态。如定义Car变量,而CarFactory.MakeCar(CarType.Benz250)返回CarBenz250对象。
// 但CarBenz250对象必需继承自Car基类,否则编译品无法通过。
// 4.用工厂模式MakeCar两种方法制造汽车。
//**********************************************************
//由CarType制造一辆Benz250汽车
Car car = CarFactory.MakeCar(CarType.Benz250);
car.SetTraceLog(Trace);
car.ShowCarInfo();
//由对象类型制造一辆CarBMW600M汽车
Car car1 = CarFactory.MakeCar(typeof(CarBMW600M).FullName);
car1.SetTraceLog(Trace);
car1.ShowCarInfo();
}
private void button2_Click(object sender, EventArgs e)
{
//**********************************************************
//学习内容:
// 1.重载对象的Equals方法。Car.Equals为自己定义方法。
//**********************************************************
Car car = CarFactory.MakeCar(CarType.Benz250);
Car car1 = CarFactory.MakeCar(typeof(CarBMW600M).FullName);
ITraceLog log = Trace;
if (car.Equals(car1))
log.ShowMessage("汽车相等.");
else
log.ShowMessage("不同类型汽车");
}
private void button3_Click(object sender, EventArgs e)
{
//**********************************************************
//学习内容:
// 1.测试对象多态行为。
// 2.汽车维修工厂的Repair方法仅提供Car参数,为什么可维修Mazida,BMW200X。
//**********************************************************
Car car = CarFactory.MakeCar(CarType.Mazida); //制造一辆马自达
Car car1 = CarFactory.MakeCar(typeof(CarBMW200X).FullName); //制造一辆宝马200x
CarSuperMaintainStation m = new CarSuperMaintainStation(this.Trace);
//调用汽车维修工厂的Repair方法。
//思考:为什么Repair方法可以维修所有类型为Car的汽车?
// 为什么可以维修Mazida,BMW200X的汽车?
m.Repair(car);
m.Repair(car1);
}
private void button4_Click(object sender, EventArgs e)
{
//**********************************************************
//学习内容:
// 1.测试Override的方法
//**********************************************************
//Car基类有OpenDoor方法.多数汽车的开门方式是往左侧/右侧开门
Car car = new CarBMW600M(); //但BMW600系列是向上弹开车门
car.SetTraceLog(this.Trace);
car.OpenDoor();
}
扫一扫加微信
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网