作者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
推 tomex:屬性在.net 3.0可以簡化式地宣告,不用落落長。 12/28 22:34
→ hatasum:恩恩 我也覺得很漏漏長 ^^那我在研究看看 謝謝囉 12/28 22:46