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; } } }
|
请发表评论