作者hatasum (我很可爱)
看板C_Sharp
标题Re: [问题] 我有一个问题
时间Sun Dec 28 21:30:46 2008
※ 引述《hatasum (我很可爱)》之铭言:
: ※ 引述《jackeyH (面包小男孩)》之铭言:
: : 一次回答你问的三个问题好了
: : 我这样说好了在Object Oriented的世界里我们都会将目标需求切分成
: : 以物件为单位的元件在加以组合互动,而类别(Class)则是在物件尚未实体化之前
: : (所谓实体话是指将物件新生出来,并给定属性值)的抽象化定义
: : 也就是说呢在你的问题中,车是一个类别,轮胎是一个类别
: : 而给定属性质的Toyata某型号的车以及给定规格的轮胎就可以被称为一个物件
: : 依照这个概念去设计你的类别基本上就不会觉得很奇怪
: : class Tair
: : {
: : private int _size = -1;
: : public int size
: : {
: : get { return _size; }
: : set { _size = value; }
: : }
: : }
: : class Car
: : {
: : private string _brand="None";
: : public string brand
: : {
: : get { return _brand; }
: : set { _brand = value; }
: : }
: : private Tair _tairInform=new Tair();
: : public Tair tairInform
: : {
: : get { return _tairInform; }
: : set { _tairInform = value; }
: : }
: : public Car(string inputBand)
: : {
: : _brand = inputBand;
: : }
: : }
: : 也就假设是说当你产生一台新的Toyota YARIS的车的物件是时候你会这样做
: : Car myCar=new Car("Toyota YARIS");
: : 而要指定其轮胎大小也就可以
: : myCar.Tair.size=10;
: : 不过呢基本上类别和结构的概念已经不太一样,结构我们一般只会用来
: : 一个用来定义某个物体有相关的属性的集合
: : EX: 定义一个结构来描述IP Header各项属性,Source Addr,Distination Addr...
: : 而类别则是除了定义这个物体相关的数性之外还会定义与这个使用类别成为物件之後
: : 所需相关的操作 EX: 定义人有身高、年龄、体重等等数性 以及 移动、生长等等动作
: : 题外话像get,set这类保留字其实是有点已经破坏原始物件导向程式设计中封装的原则了
: : ---
: : 是我的认知..不知道有没有回答道你的问题..XD
: ^^"感谢你的指导
: 我刚试了一下 发现我还是卡手卡脚的@@"
: 我先把我的code 放上来
: public class carinfo
: {
: public class tire //tire的size
: {
: private int _size;
: public int size
: {
: get { return _size; }
: set { _size = size; }
: }
: }
: public class car //car的内容 内容有name lefttire
: {
: private string _name;
: public string name
: {
: get { return _name; }
: set { _name = name; }
: }
: private tire _lefttire = new tire();
: public tire lefttire
: {
: get { return _lefttire; }
: set { _lefttire = lefttire; }
: }
: }
: }
: private void btn_Click(object sender, EventArgs e)
: {
: carinfo.car apple = new carinfo.car(); //呼叫apple为car
: apple.lefttire.size = 12;//设定apple的左轮size为12
: }
: =======================================================================
: 但是我希望的是
: new apple为car
: new apple.lefttire为apple.tire (或者是lefttire = new apple.tire??)
: new apple.righttire为apple.tire
: ...
: apple.lefttire.size=12
: apple.righttire.size=13
: ...
: 等等...
: 不知道这样我该怎麽修改??@@
: ======================================================================
: 感觉我还是对於这编的概念很不清楚......XD
: 但是我真的很想赶快改善这个写程式的习惯
: 毕竟OO这条路...不能只用自己的想法在想程式
: 不然我想以後我永远都不会进步的XD
: ^^"麻烦大家了
public class Tire
{
private TireInfo _forwardRightTire = new TireInfo();
public TireInfo forwardRightTire
{
get { return _forwardRightTire; }
set { _forwardRightTire = value; }
}
private TireInfo _forwardLeftTire = new TireInfo();
public TireInfo forwardLeftTire
{
get { return _forwardLeftTire; }
set { _forwardLeftTire = value; }
}
private TireInfo _backwardRightTire = new TireInfo();
public TireInfo backwardRightTire
{
get { return _backwardRightTire; }
set { _backwardRightTire = value; }
}
private TireInfo _backwardLeftTire = new TireInfo();
public TireInfo backwardLeftTire
{
get { return _backwardLeftTire; }
set { _backwardLeftTire = value; }
}
}
public class TireInfo
{
private int _size;
public int size
{
get { return _size; }
set { _size = value; }
}
private string _TireForm;
public string TireForm
{
get { return _TireForm; }
set { _TireForm = value; }
}
}
恩...这是我这阵子学习的心得...XD
感觉c#很强大 也希望我能持续学习到更多更多该学的东西^^"
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.169.28.190
1F:推 tomex:属性在.net 3.0可以简化式地宣告,不用落落长。 12/28 22:34
2F:→ hatasum:恩恩 我也觉得很漏漏长 ^^那我在研究看看 谢谢罗 12/28 22:46