2008-07-22

一些面向对象软件设计和软件工程的基础知识

  虽然目前对软工没爱,不过一些原则还是要知道的。
软件开发的四个基本步骤:

  • 建立软件需求
  • 软件设计
  • 实现软件设计
  • 软件测试
当然一般都是会有步骤重叠发生的拉。
  一般来说,在软件需求文档里面,会出现的一些名词,很可能就是我们要建立的类或对象。据此再确定出我们要设计的类,原则基本上就是,我们是应该将某一事物表达成一个对象还是另一个对象的基本属性。
  识别出类之后,需要给每个类分派职责。设计的初期没有必要为一个类指定所有的方法,常常只需要分派基本职责就够了。
  在Java中,不仅方法可以有静态属性,变量也可以。一个被声明为static的成员不同于实例变量(类的每一个实例都会创建不是static的变量的副本),静态变量是由所有类实例共享的。因此,任意实例对静态变量的修改在程序运行过程中都是累积的。
此外这里还有一些java的特性:
  • final常量经常使用static修饰,不过对类的所有对象来说,只是一个常量值。
  • 由于静态方法是脱离具体对象操作的,所以不能引用实例变量。实例变量只能存在于类的实例中,不过静态变量可以被静态方法引用。例子就是main方法只能访问静态变量或局部变量。
      


      在软件中,类之间的基本关系是依赖、聚合和继承。
      基本来说,依赖就是类A必须对类B的对象引用。聚合就是 has-a的关系,继承就是is-a的关系。
      有时候同一个类的对象之间也存在依赖性。比如String的concat方法。str3=str1.concat(str2)
      聚合的例子最好的表现就是一个帐户的类中用户名是String类
      
      一般,在设计方法的时候是写伪代码的。主要目的在不设计具体的语法细节时,分解复杂的目标。
      java是面向对象的语言,所以它支持多态性,也就是支持方法重载,实际上就是通过方法名相同,但是参数不同来判断调用哪个对应的方法。

      在java中,还有一个超级无敌有用的概念就是接口(interface)了。
      java中的接口被定义为一组公用的方法,通过这组方法与一个对象交互。
      接口是一组常量和抽象方法的几何,抽象方法之所以叫抽象就是因为这家伙没有实现,只是定义了名字,和C中的函数声明一样的语法规则。所以这东西不能实例化。
    比如Complexity的包含的两个抽象方法:setComplexity getComplextiy.

    public interface Complexity
    {
      public void setComplexity(int complexity);
      public int getComplexity();
    }
      一个类通过实现定义在接口的所有抽象方法来实现借口。实现借口的类必须在声明时加上implements 接口名。接口中也可以有final常量。实现接口的类对其有方法权限
      接口的存在实现了实现了强大的多态性。

    没有评论: