面向对象开发中的对象构建(但是我们实际开发真的面向对象了吗?)

     向面对象开发,很好很强大。但是我们实际开发真的面向对象了吗?真的用到一些特性了吗?

     面向对象开发,首先就要脱离统着数据表找关系的模式了。一切都从对象(现实开始(当然要考虑你的对象的数据结构可行性,不过一般都是没有问题的。现实就是这样,最庞大的莫过于宇宙,但它也都是可描述的何况宇宙中的万物了)。下面通过一个示例来讨论一下。

     我们通过一个学校的关系来作为焦点(学校-班级-学生),说到这,大家可能就拍砖了,这么简单的关系。不就是一个一对多的关系吗?这样的数据表很容易实现嘛。确实,这样的关系不复杂可以说非常简单,不过话又说回来再复杂的关系不也是在这之上千变亿化了?话题不在于此我们转回……
    
     要实现这样一个关系我们可能就要建立三个对象了 school、class、student,具体的关系我们可以这样,表里的关系可能就是通过主从键建立的一对多的关系了,以至于建立对象的时候大家也还是保持这样的一对多的关系,以导至对象变成是描述表的了而不是描述现实世界了!这样面向对象还有何意义?数据查询的时候大家可以会通过对象关系或是建立出来一个新的“虚对象”来填充对象数据,这样是可以的,但不是很好的。(表的多对多关系转换到对象可以是虚对象来实现关系了)。

     这时大家不防回到现实中来,回想一下童年,回想一下自己的母校,我们美丽的校园(一个),学校里有好多不同的班级(多个),班级里面有好多我们戴着红领巾的同学(很多个),这样他们的关系也就出来了“一个学校可以有多个班级,一个班级可以有很多学生,一个班级只能属于一个学校同样一名学生只能属于一个班级”(注:这里不要想表那些关系,不要感觉它他很像,我们只观注现实),这样下面的对象就建立出来了:

school(name,address,List<class(name,address,school,List<student(name,sex,age,class,school>))
    这时我想找一名学生的基本信息,就可以student(name,sex,age)
    找一名学生的基本信息包托它的班级学校:sutdent(name,sex,age,class,school)
    找一个班级并知道这个班级所在的学校:class(name,address,school)
    找一个学校包括它所有的班级:school(name,address,List<class>)
    找一个学校所括它所有的学生:school(name,address,List<class(List<student>)>)
    等等我们都可以很灵活的就办到,到这里我们已经完全回忆起自己的母校了,突然发现自己的记忆力真棒(一个好的记忆方法(数据结构)和一个好的组织查询方法帮了很大的忙)。
    话题回到数据为操作上来,这些操作都很容易就可以实现了,一对多多对一的查询!

    等着拍砖了,等着骂我不要放到首页来(是看今天首页文章不多,不够大家看的嘛!)

posted @ 2009-01-19 16:36  AssionSoft  阅读(2016)  评论(15编辑  收藏  举报