• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#设计模式(类与对象)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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;
  }
 }
}


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap