初学C#~~~
假如我要写一个学校的管理程序。程序能显示一个在校人员列表,可以进行条件筛选。
如果说一切都是对象:
学生包含姓名,年龄,年级,班级。老师包含姓名,年龄,所教科目,所教年级,所教班级。
于是我写一个基类,包含姓名,年龄几个字段或者属性什么。然后写两个派生类:学生类和老师类,分别加上剩下的东西。可是这些东西有啥用?难道程序中的列表要显示所有学生资源时,就得把学生这个类实例化几千遍?如果直接写一个函数,读出数据库的内容,写到listview或者datagrid之类的不是更方便,何必设计所谓的老师类,学生类啥的。类啥的到底杂用?
各位大大能不能给举个例子,讲解一下。

解决方案 »

  1.   

    难道程序中的列表要显示所有学生资源时,就得把学生这个类实例化几千遍?
    sql返回dataset
    如果直接写一个函数,读出数据库的内容,写到listview或者datagrid之类的不是更方便,何必设计所谓的老师类,学生类啥的。
    如果让你修改其中一条数据,怎么办???
    类啥的到底杂用?
    类 A=new 类()
      

  2.   

    用个DataTable就解决了,实在不行几千个对象也不是什么大数目,几万个都没有任何问题(对象里面只是一些简单的属性字段,很小的啦)
      

  3.   


    其实我修改的时候也是直接函数,写一个sql完成的,依然没用到类~~: update StuData set StuName=XXX where StuID=XX
      

  4.   

    批量显示的时候无需实例化类,用DataTable集中加载就是了。
    显示或者编辑单挑记录的时候,可以用实例化的类来操作,这样方便一些。但,如果用ORM的话,确实每条记录会被实例化成一个类的。弱弱的问一下,你见过一次显示一千条记录的程序么?做了8年的开发了,我没见过也没开发过这样的程序,一般都是分页显示,一次显示数十条数据。
      

  5.   

    是不是只要有string这一种类型就万能了呢?面向对象软件讲求的是“人性、自然”,较多地是从分析、设计角度,看看人需要更快、更好地设计新东西需要什么技术。而不是从机器角度去看。
      

  6.   

    简单说一个特性吧,比如你写了准确的类型,那么错误的程序在编译时就立刻可以发现,甚至不用编译只要打入代码(即时进行词法分析)时就能给出提示和建议。而如果你用貌似“通用、万能”的string、DataTable之类东西,其实可能是“无能”的,因为它并不贴切地表达设计的想法,于是工具就不会帮人提高编写软件的效率。至于运行效率,一方面真正的效率其实来自于算法整体改变而不是纠结于个别语句的执行效率,另一方面编译器也会不断提高只能从而填补为人写的程序与为机器写的程序之间的性能差别。
      

  7.   

    再比如要“listview或者datagrid”这种东西干嘛呀?直接copy一堆代码然后去修改不好么?其实人都会逐步选择“适当”的东西,而不是绝对化。如果一个东西恰好封装得与你的需求最适当,那么那种一味强调它多么完美或者多么低级,都是左右不了聪明人的。
      

  8.   

    难道程序中的列表要显示所有学生资源时,就得把学生这个类实例化几千遍?
    sql返回dataset
    如果直接写一个函数,读出数据库的内容,写到listview或者datagrid之类的不是更方便,
    客户端显示时 正如你所说的,直接从数据库里获取信息 然后显示出来就OK了,不必实例化对象,因为不需要,树的node有一个Tag属性,你可以将你需要的Data存到Tag里,一般来讲你直接把此节点对应的DataRow存到Tag属性里就行了,以后需要取此节点的信息时直接到DataRow中去读,完全没必要实例化对象何必设计所谓的老师类,学生类啥的。
    如果让你修改其中一条数据,怎么办???
    如果修改其中的一个数据
    既然要修改一个节点,就直接修改就好了,然后将结果写回到数据库中即可,也完全用不到对象类啥的到底杂用?
    面向对象是一种思想,当你需要的时候就自然会用到,而且不是三言两语就能说清楚的
      

  9.   

    SQL查询,fill到dataset,然后绑定到datagridview,也就查询几次数据库而已
      

  10.   

    就别用对象,就这样写吧,N年后看看你写的代码就知道了,当有一个从sql数据库转到oracle数据库的时候就更好了,甚或写一个分布式的系统,我看你怎么转过去,;当做一系列权限的时候,看你怎么方便的添加功能,当数据库表出现意外(不够用或设计错误)需要修改的时候,看你怎么办;多说无益,自己体会到才是真理;