none
C# 物件 與 類別 RRS feed

  • 問題

  • 今天被提到說 我寫的程式 都是一些類別之類的

    如下等等:

    /* 隊伍判斷 */
    private bool Team(int eat, int Beeaten) { }
    /* 權重判斷 */
    private bool Judgment(int eat,int Beeaten) { }

    並期望我寫的東西可以物件化 像是之前提到的我在做象棋遊戲
    而我的棋子都是透過PictureBox去new出來的 在擺上圖片

    他們覺得我的棋子或是棋盤 可以做到物件化

    我我我... 不知道到底什麼是物件化

    看了msdn資料庫 或是舊文章 也看不太懂{剛入門}

    可以大概舉個例 闡述一下嗎 感謝各位大大>.<

    困惑中...

    2012年7月13日 上午 08:09

解答

所有回覆

  • 2012年7月13日 上午 08:31
  • 物件導向程式設計入門

    雖然是用VB,但觀念是相通的。


    http://blog.kkbruce.net

    2012年7月13日 上午 09:27
  • 棋類遊戲很適合以 OOP 來寫。不過, 當然, 你必須先把上面亂馬客和 KKBruce 提供的連結看一下, 或者去買本 OO 入門書來看, 花點時間去研究, 這樣基礎才能打得好。基礎打好之後, 一輩子受用。這種觀念的東西, 值得花工夫好好鑽研, 不要想在網路上東學西學, 否則只能學到片段的知識, 將來副作用很大。

    等你有了基礎之後, 你可以考慮建立一個為所有其它棋子類別所設計的介面如下:

    public interface IChessman
    {
        bool Move(Player player, Grid originalGrid, Grid targetGrid);
    }

    然後, 例如一個卒子類別可以寫成如下:

    public class ChessmanSoldier : IChessman
    {
        public bool Move(Player player, Grid originalGrid, Grid targetGrid)
        {
            if (Grid.ValidateGrid(originalGrid.X, originalGrid.Y) &&
                Grid.ValidateGrid(targetGrid.X, targetGrid.Y))
            {
                // 做其它動作
                return true;
            }
            return false;
        }
    }

    當然, 必須有其它的一些前置類別, 例如:

    public enum Player
    {
        Black,
        Red
    }
    
    public class Grid
    {
        public int X;
        public int Y;
        public static bool ValidateGrid(int x, int y)
        {
            // 檢查格子座標是否正確
            return true;
        }
    }

    以上的程式只是非常簡單的空架子, 只能很簡單的示範 OOP 的最基本原理。然而, 事實上, 如果是我來寫這個棋類程式, 我應該會再導入更進階的架構, 例如 Design Pattern, 還有事件等等。把程式寫成物件導向, 對使用者而言可能看不出有什麼差別, 但是對你而言, 程式本身會變得更有結構、更容易維護, 也更容易除錯, 所以是對你自己有好處的。


    2012年7月13日 上午 10:36
  • 買過車輪餅嗎 ? 車輪餅製做不是都有個模子.

    假設 : PictureBox 類別是車輪餅的模子

    PictureBox a=new PictureBox();

    當你使用上面的語法,  new PictureBox 表示在記憶體中產生一個車輪餅.

    至於 a, 它只是一個指向此車輪餅的稱呼,  比方: 這位客人的車輪餅.

    PS: 我之前回你的問題中不是有個 對初心者有助益的 MSDN 文件庫索引整理 (二)

    你有花時間去看去想嗎 ? 花點時間去看這些基本功吧


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。


    2012年7月13日 下午 03:55
    版主
  • 其实开始编写物件导向程式语言时,每个开发者的看法都会不一。

    因为主要原因在于《程式设计》,你在物件导向程式(全物件导向如java ,C#)编写强制程式开发者一定使用“物件与物件沟通”。可是并没有强制如何“设计类别”,所以使用物件导向程式语言不代表已经使用了“物件导向的精髓”,而让程式难维护等等。

    程式“设计”有一定的原则,可以没有强制的规定。如 单一责任,开放-关闭原则,依赖倒转原则,等。

    有些程式不会长期使用,维护。所以根本不需要花太多时间在设计上。

    理解 《物件导向的基础》后,建议试着理解《设计模式》。

    前几天我有写了设计模式的一篇文章,有兴趣可以阅读。

    设计模式 (Design Pattern) 介绍&读后感

    有兴趣也可以购买一些书籍如:<GOF设计模式>(提供了23种常用到的模式),<物件导向分析与设计>,<Head First Design Pattern>


    http://mysftway.blogspot.com/ 熱誠熱心地幫忙大家! 希望與大家切磋技術哦~

    2012年7月14日 上午 08:52