最全C#OOP面向对象程序设计源代码(Car.cs)
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace Tech2007.CarLibrary
{
/// <summary>
/// 汽车基类
/// </summary>
public class Car : IDrivable //支持可驾驶接口.
{
protected string _ProductCode = string.Empty;
protected string _Name = string.Empty;
protected Color _Color = Color.Blue;
protected string _Module = string.Empty;
protected string _Manufactory = string.Empty;
public string CarProductCode { get { return _ProductCode; } set { _ProductCode = value; } }
public string CarName { get { return _Name; } set { _Name = value; } }
public Color CarColor { get { return _Color; } set { _Color = value; } }
public string CarModule { get { return _Module; } set { _Module = value; } }
public string CarManufactory { get { return _Manufactory; } set { _Manufactory = value; } }
public string PrivateProperty { get { return "abc"; } set { ;} }
public override int GetHashCode()
{
return base.GetHashCode();
}
/// <summary>
/// 用于比较对象,传入的对象与自己比较
/// </summary>
public override bool Equals(object obj)
{
if (obj is Car) //首先判断传入的对象是不是汽车类型, 比如传进一个乒乓球,绝对不相同了.
{
Car car = obj as Car; //将object转换成Car
//判断汽车的名称与型号, 如需要加强判断还可以比较汽车的Color,生产商等.
if (car.CarName == this.CarName && car.CarModule == this.CarModule)
return true;
else
return false;
}
return false;
}
//汽车引擎
protected CarEngine _engine = null;
public CarEngine Engine { get { return _engine; } }
//为了显示动态信息,汽车对象内组合一个处理日志的类
protected ITraceLog _TraceLog = null;
/// <summary>
/// 汽车碰撞试验
/// </summary>
public virtual void Crash()
{
//汽车装有安全装置,没问题,启动安全装置.
if (this is IProtectDevice)
{
(this as IProtectDevice).Reaction();
}
else
{
_TraceLog.ShowMessage("该车无安全装置,人员受伤!");
}
}
/// <summary>
/// 驾驶汽车
/// </summary>
public virtual void Drive()
{
_engine.Run();
_TraceLog.ShowMessage(_Name + "正在行驶....");
}
/// <summary>
/// 喇叭发声
/// </summary>
public virtual void PlaySound()
{
_TraceLog.ShowMessage(_Name + "按喇嘛警告行人....");
}
/// <summary>
/// 打开车门
/// </summary>
public virtual void OpenDoor()
{
_TraceLog.ShowMessage(_Name + "正在打开车门(开门方式:往左侧/右侧)....");
}
/// <summary>
/// 设置汽车的引擎
/// </summary>
public void SetEngine(CarEngine engine) { _engine = engine; }
/// <summary>
/// 用于显示动态信息, 一个附加类, 这里用到简单的合成模式(Composion Pattern)
/// </summary>
public void SetTraceLog(ITraceLog log)
{
_TraceLog = log;
_engine.SetLog(log);
}
/// <summary>
/// 显示汽车信息
/// </summary>
public virtual void ShowCarInfo()
{
_TraceLog.ShowMessage("汽车名称: " + _Name);
_TraceLog.ShowMessage(" 型号: " + _Module);
_TraceLog.ShowMessage(" 颜色: " + _Color.Name);
_TraceLog.ShowMessage(" 制造厂: " + _Manufactory);
if (_engine != null)
{
_TraceLog.ShowMessage(" 发动机型号: " + _engine.Name);
_TraceLog.ShowMessage(" 排量: " + _engine.Displacement);
}
else
_TraceLog.ShowMessage(" 该汽车没有安装发动机");
}
}
/// <summary>
/// 宝马系列
/// </summary>
public class CarBMW200X : Car
{
public CarBMW200X()
{
_ProductCode = "BMW200X";
_Color = Color.Black;
_Module = "Module:200X";
_Name = "宝马商务型汽车";
_Manufactory = "德国宝马";
_engine = new Engine_3500ML();
}
}
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace Tech2007.CarLibrary
{
/// <summary>
/// 汽车基类
/// </summary>
public class Car : IDrivable //支持可驾驶接口.
{
protected string _ProductCode = string.Empty;
protected string _Name = string.Empty;
protected Color _Color = Color.Blue;
protected string _Module = string.Empty;
protected string _Manufactory = string.Empty;
public string CarProductCode { get { return _ProductCode; } set { _ProductCode = value; } }
public string CarName { get { return _Name; } set { _Name = value; } }
public Color CarColor { get { return _Color; } set { _Color = value; } }
public string CarModule { get { return _Module; } set { _Module = value; } }
public string CarManufactory { get { return _Manufactory; } set { _Manufactory = value; } }
public string PrivateProperty { get { return "abc"; } set { ;} }
public override int GetHashCode()
{
return base.GetHashCode();
}
/// <summary>
/// 用于比较对象,传入的对象与自己比较
/// </summary>
public override bool Equals(object obj)
{
if (obj is Car) //首先判断传入的对象是不是汽车类型, 比如传进一个乒乓球,绝对不相同了.
{
Car car = obj as Car; //将object转换成Car
//判断汽车的名称与型号, 如需要加强判断还可以比较汽车的Color,生产商等.
if (car.CarName == this.CarName && car.CarModule == this.CarModule)
return true;
else
return false;
}
return false;
}
//汽车引擎
protected CarEngine _engine = null;
public CarEngine Engine { get { return _engine; } }
//为了显示动态信息,汽车对象内组合一个处理日志的类
protected ITraceLog _TraceLog = null;
/// <summary>
/// 汽车碰撞试验
/// </summary>
public virtual void Crash()
{
//汽车装有安全装置,没问题,启动安全装置.
if (this is IProtectDevice)
{
(this as IProtectDevice).Reaction();
}
else
{
_TraceLog.ShowMessage("该车无安全装置,人员受伤!");
}
}
/// <summary>
/// 驾驶汽车
/// </summary>
public virtual void Drive()
{
_engine.Run();
_TraceLog.ShowMessage(_Name + "正在行驶....");
}
/// <summary>
/// 喇叭发声
/// </summary>
public virtual void PlaySound()
{
_TraceLog.ShowMessage(_Name + "按喇嘛警告行人....");
}
/// <summary>
/// 打开车门
/// </summary>
public virtual void OpenDoor()
{
_TraceLog.ShowMessage(_Name + "正在打开车门(开门方式:往左侧/右侧)....");
}
/// <summary>
/// 设置汽车的引擎
/// </summary>
public void SetEngine(CarEngine engine) { _engine = engine; }
/// <summary>
/// 用于显示动态信息, 一个附加类, 这里用到简单的合成模式(Composion Pattern)
/// </summary>
public void SetTraceLog(ITraceLog log)
{
_TraceLog = log;
_engine.SetLog(log);
}
/// <summary>
/// 显示汽车信息
/// </summary>
public virtual void ShowCarInfo()
{
_TraceLog.ShowMessage("汽车名称: " + _Name);
_TraceLog.ShowMessage(" 型号: " + _Module);
_TraceLog.ShowMessage(" 颜色: " + _Color.Name);
_TraceLog.ShowMessage(" 制造厂: " + _Manufactory);
if (_engine != null)
{
_TraceLog.ShowMessage(" 发动机型号: " + _engine.Name);
_TraceLog.ShowMessage(" 排量: " + _engine.Displacement);
}
else
_TraceLog.ShowMessage(" 该汽车没有安装发动机");
}
}
/// <summary>
/// 宝马系列
/// </summary>
public class CarBMW200X : Car
{
public CarBMW200X()
{
_ProductCode = "BMW200X";
_Color = Color.Black;
_Module = "Module:200X";
_Name = "宝马商务型汽车";
_Manufactory = "德国宝马";
_engine = new Engine_3500ML();
}
}
参考文档:
最全C#OOP设计思想之汽车模型源代码
OOP面向对象编程(1)图说OOP基础-C/S开发框架
C# OOP编程 模拟做早餐探索同步异步机制-C/S开发框架
C#.NET史上最全字符串加密/解密/数字签名工具(CryptoHelper.cs)
OOP设计思想之教学设备系统.附UML图.(一)
C#面向对象设计(OOP)之对象多态(Polymorphic)
C# 对象多态性(OOP基础)
C#.Net OOP系列之接口设计及策略应用实战
C/S软件授权注册系统V3.0(Winform+WebApi+.NET8+EFCore版本)|C/S开发框架
最新MES系统快速开发平台(Winform+NET8+EFCore)|C/S开发框架
C/S架构软件开发平台 | 旗舰版V6.0开发者技能要求|C/S开发框架
Winform软件开发框架|快速开发平台推荐|C/S开发框架
WebApi框架 | AOP|C/S开发框架
C# .NET 入门概念与知识点总结|C/S开发框架
中国国家统计局省市区划代码数据库下载 - 2021年最新- Excel,SQLLite数据库
2022年最新数据:中国国家省市区行政区域数据库下载(Excel/SQLLite)|C/S开发框架
最全C#OOP设计思想之汽车模型源代码
OOP面向对象编程(1)图说OOP基础-C/S开发框架
C# OOP编程 模拟做早餐探索同步异步机制-C/S开发框架
C#.NET史上最全字符串加密/解密/数字签名工具(CryptoHelper.cs)
OOP设计思想之教学设备系统.附UML图.(一)
C#面向对象设计(OOP)之对象多态(Polymorphic)
C# 对象多态性(OOP基础)
C#.Net OOP系列之接口设计及策略应用实战
C/S软件授权注册系统V3.0(Winform+WebApi+.NET8+EFCore版本)|C/S开发框架
最新MES系统快速开发平台(Winform+NET8+EFCore)|C/S开发框架
C/S架构软件开发平台 | 旗舰版V6.0开发者技能要求|C/S开发框架
Winform软件开发框架|快速开发平台推荐|C/S开发框架
WebApi框架 | AOP|C/S开发框架
C# .NET 入门概念与知识点总结|C/S开发框架
中国国家统计局省市区划代码数据库下载 - 2021年最新- Excel,SQLLite数据库
2022年最新数据:中国国家省市区行政区域数据库下载(Excel/SQLLite)|C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
