七、详细设计

  详细设计还得从数据库开始。作为专业菜鸟,我们要把所有的SQL语句都放在存储过程当中,不要放在程序里。这样做的好处是:容易修改、维护,执行速度快、减少数据传输量。存储过程可以简单的理解为在SQL服务器上创建小函数,它们有名字、参数,通过调用这些小函数,我们可以完成对表的增、删、查、改操作,相当于把SQL语句放在了服务器上,并且是经过编译的,执行速度快。在程序中,我们不必再写复杂的SQL语句,直接写存储过程名称就可以了。

  具体如何使用存储过程,可以参考这篇博文:http://www.51testing.com/html/60/n-814760.html

  一定要仔细研究上边那篇文章,因为这是数据库使用的经典例子,把他搞懂了使用数据就没什么问题了,我就偷个懒,不在重复写啦。

  如果遇到一些问题,或许这篇文章会帮你:http://www.51testing.com/html/59/n-814759.html

  另外,可以看出,本教程的例子,班级表依赖年级表,学生表依赖班级表,所以在删除记录时,必须级联删除,级联删除可以在程序中完成,但我还是比较喜欢放在SQL触发器中。触发器的使用方法和存储过程大同小异,在这就不赘述了,可以google。

  详细设计还是要用到UML图,这回用的一般是时序图和流程图,其他的虽然重要,但是比较少用,具体的还是google。

  很遗憾的告诉大家,教程到此就结束了,细节上远远没有结束,存储过程具体代码、各层的代码都没有写,UML的图还有很多没画,但那些都是细节知识,本教程的目的是宏观指导,本小菜也需要继续学习,时间非常有限,所以只能写这么多了。

  剩下的基本上都是写代码,我写出来也没啥意思,开发一个项目,基本的流程都在这呢,我主要不是教大家写代码,而不是告诉大家一个项目的流程,体会一个稍微大点的程序是怎么设计出来的,分享一下我自己的经验。跟着这个教程走,就是再菜,也是专业菜鸟!

  教程中涉及大量知识点,都需要大家耐心的去查阅资料,不怕不会,就怕不知道,刚开始会用就可以了,随着学习的深入,再去搞懂细节原理。我学这些东西也不是一天两天就学成的,是大约一年半的积累,希望大家能静下心来,踏实学习。

  最后,恭祝大家都能成为IT界的精英!


菜鸟教程typescript 菜鸟教程sql_ui

  DAL包:

菜鸟教程typescript 菜鸟教程sql_存储过程_02

  BLL包:

菜鸟教程typescript 菜鸟教程sql_ui_03

  UI包:

菜鸟教程typescript 菜鸟教程sql_菜鸟教程typescript_04

六、概要设计

  数据库分析完了,基础已经搞定,接下来就是对程序的初步设计。如何设计呢?如果是小程序,用脑子想想,也就算设计完了,但是如果是稍微复杂点的系统,恐怕就不行了。概要设计还是要借助于UML图,现在你知道它有多重要了吧?我们先来设计程序的大致结构,可以用UML的包图。作为专业水准的菜鸟,我们要用三层架构来设计程序。所谓三层架构,就是把程序分为基本的三层,分别为:UI层(用户界面层)、BLL层(业务逻辑层)、DAL层(数据访问层)。把程序分成三层,好处不言而喻,从此你就再也见不到所有东西都在一个窗体里混乱的情形,如果什么地方需要修改,再也不用去改动整个工程。每一层都有各自的功能,从UI层到DAL层,它们是向下依赖的。其中,UI层只负责显示界面,不应该有逻辑(有效性验证的逻辑还是可以有的),所有的功能都是通过调用BLL层完成;BLL层负责程序的所有逻辑组织,它通过调用DAL层完成复杂的操作,然后提供一个简洁的接口让UI层调用,相当于一个大外观层,BLL层的类,可以按照窗体写,也就是说每一个窗体对应一个BLL层的类,类的各种方法完成窗体的所有功能;DAL层负责访问数据库,数据库中每一个表,在DAL层中都有一个与之对应的操作类,通过该操作类,可以实现对对应表的一切操作。前边提到的实体类,就是为三层架构服务的,三层之间一般都是通过实体类传递数据,这样简洁、方便,实体类就相当于一个容器。注意,还有一个层,也可以不单独作为一个层的DBHelper,这个部分负责最低级的与数据库交互代码,比如连接数据库、插入数据、查询数据等等,把这些最基本的代码提炼到一个单独的层中有利于代码的复用,使程序更加精炼。欲知其他知识,请轻点google,我说到此为止。献上一张三层架构的示意图:

菜鸟教程typescript 菜鸟教程sql_存储过程_05

  再来一个数据库、DAL操作类、实体类的关系,这个有点乱,刚开始不好理解,多想想就知道啦:

菜鸟教程typescript 菜鸟教程sql_数据库_06

  有了上边的分析,我们就可以用Rational Rose画程序包图了,提一个小技巧,Rose的包理论上应该在包图里画,但是那样没法画类,所以还是建议在类图里画包,用包把类图分成几个大部分,然后在每个部分里画特定的类,这样双击包直接就可以看到该包中的类了。根据三层架构,我们可以画出下边的包图:

菜鸟教程typescript 菜鸟教程sql_ui_07

  整体架构就是这样了,接下来就搞定每个包里都有什么类。