瑞星卡卡安全论坛

首页 » 技术交流区 » 系统软件 » 请教ASP.NET类的设计问题
希罗·尤尔 - 2007-1-10 12:57:00
讨论一个学籍管理系统,为简化问题,假设学生只有学号、姓名、电话号码三个属性,常见的类设计是

public class student
{
      string NO;
      string Name;
      string TeleNumber;

      string StuNO
      {
            get
            {
                  return NO;
            }
            set
            {
                  NO = value;
            }
      }
      //省略一堆get、set

      public void insert();
      public void update();
      public void delete();
}

然后这样调用:

student stu = new student();
stu.StuNO = NO.text;
stu.StuName = Name.text;
stu.StuTeleNumber = TeleNumber.text;
stu.insert();

另一种设计是:

public class Student
{
      public void insert(string NO,string Name,string TeleNumber);
      public void update(string NO,string Name,string TeleNumber);
      public void delete(string NO);
}

然后这样调用:

student stu = new student();
stu.insert(NO.text,Name.text,TeleNumber.text);


简单说一下我的疑问,采用第一种设计的时候,类有成员变量,使用的时候,实际上是给每一个成员变量赋值,然后再调用函数,往数据库插入新的学生记录,但是这样做是不是有这样一些问题:首先,把文本框的值一一传给对象是不是多余?直接作为函数参数是不是就省了这样的一步?其次,当调用delete方法的时候,根本不需要用到Name和Telephone,这两个变量是不是浪费了空间?采用第二种设计的时候解决了上面的问题,但是,当学生的信息很多的时候,insert方法和update方法就会出现一大堆的参数列表。本人实在不知道该如何权衡,请指教。
v0201010031 - 2007-1-17 10:48:00
用第二种办法,为的不仅是时间或者是什么所谓的内存空间问题,而是面向对象的本意,既然用的是.NET,就要用面向对象
v0201010031 - 2007-1-17 10:50:00
还有,你的这个类里面所有的变量都应该是私有变量,必须,必须使用private 关键字
希罗·尤尔 - 2007-1-17 21:24:00
楼上说的是用第一种方法吧?第二种方法根本没有变量。

在本机上运行的程序可以有很多的资源,时间和内存空间基本上不成问题;但是对于网络程序来说,要顾及很多用户同时访问的情况,没可能随便浪费时间和内存空间的,否则会给服务器带来很大的负担。
1
查看完整版本: 请教ASP.NET类的设计问题