C#設計模式(類與對象)

來源:互聯網
上載者:User

1.面向過程的程式設計與物件導向的程式設計的區別就在於類的出現.
2.類就相當與一個模組,其中包括私人方法,公有方法,屬性和成員資料等資訊;

下面一個例子可以很清晰的說明物件導向的設計思想:
假設我們將一場遊泳比賽的結果儲存在一個文本資料檔案中,我們要執行的操作就是需要從文字檔中取出每一行的資料,並輸出每個人的成績.
設計思路:
1.設計一個組織運動員資料的類,通過該類可以得出運動員的幾個屬性(針對名稱,年齡,俱樂部,時間這些屬性,我們必須要將其封裝到一個類中去,稱為Swimmer.cs).
2.在擷取這些屬性時,需要考慮到每行記錄中空格問題,時間的轉換問題,字串分割問題(針對每一個問題我們都要考慮封裝到一個類中,稱為StringTokenizer.cs).
3.在開啟檔案時需要進行開啟讀取操作和一次讀取一行操作(針對這個問題又應該封裝到一個類中對檔案進行操作,稱為csFile.cs);

csFile.cs類的代碼:
using System;
using System.IO ;

namespace SwimmerTokenizer
{
 /// <summary>
 /// A simple interface to file IO methods
 /// </summary>
 public class csFile {
  private File fl;
  private StreamReader ts;
  public csFile(string filename)  
  {
   ts = File.OpenText  (filename);
   
  }
  public string readLine() {
   return ts.ReadLine ();
  }
  public void close() {
   ts.Close ();
  }
 }
}

Simmer.cs類的代碼:
using System;
using CsharpPats;

namespace SwimmerTokenizer
{
 /// <summary>
 /// Summary description for Swimmer.
 /// </summary>
 public class Swimmer
 {
  private string frName, lName;
  private string club;
  private int Age;
  private int place;
  private FormatTime tms;
 //-----------
  public Swimmer(String dataLine) {
   StringTokenizer tok = new StringTokenizer (dataLine);
   place =  Convert.ToInt32 (tok.nextElement());  //指向下一個有效字元
   frName = tok.nextElement ();
   lName = tok.nextElement ();
   string s = tok.nextElement ();
   Age = Convert.ToInt32 (s);
   club = tok.nextElement ();
   tms = new FormatTime (tok.nextElement ());
  }
  //-----------
  public string name {
   get{
    return frName+" "+lName;
   }
  }
  //-----------
  public string time {
   get{
    return tms.getTime();
   }
   set  {
    tms = new FormatTime (value);
   }
  }
  //-------------------
  //age property
  public int age {
   get {
    return Age;
   }
   set {
    Age = value;
   }
  }
 }
}

StringTokenizer.cs的代碼:
using System;

namespace CsharpPats
{
 //該類是用來處理字串操作的
 //String Tokenizer class
 public class StringTokenizer  {
  private string data, delimiter;
  private string[] tokens;
  private int index;
  public StringTokenizer(string dataLine)   {
   init(dataLine, " ");
    }
  private void init(String dataLine, string delim) {
   delimiter = delim;
   data = dataLine;
   tokens = data.Split (delimiter.ToCharArray() );
   index = 0;
  }
  public StringTokenizer(string dataLine, string delim) {
     init(dataLine, delim); 
  }
  public bool hasMoreElements() {
   return (index < (tokens.Length));
  }
  public string nextElement() {
   string s = tokens[index++];
   while((s.Length <=0) && (index<tokens.Length ))
    s = tokens[index++];
  return s;
  }
 }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.