zoukankan      html  css  js  c++  java
  • 面向对象分析与设计中类的设计

    在应用Java语言进行面向对象的编程与设计过程中,首先进行的都是类的设计。类是组成一个系统的基本单元。

    类的设计的建议

    (1) 在用Java语言把编写类的过程中,一般在一个.java源文件中只编写一个类,如果确实要存放多个类,则同一文件中也只能有一个类是用public修饰符修饰的,并且此类与文件名同名。

    (2) 在完成某些业务逻辑方法时,最好利用一些优秀算法使代码尽可能短小精悍。

    设计类的一些注意事项

    (1) 在抽象出问题域中的类时,按照“对象类似”原则进行抽象。如果问题域中的多个实体都有相似的属性和行为,那么可以将将这些属性和行为写到同一个类中,对于差别比较大的行为,最好不要写入,或者另写入一个新建的类。

    (2) 封装核心代码时,最好加入单元测试代码或加入main()方法进行测试,以保证每个类的方法封装都符合业务要求。

    (3) 若系统中的某项业务已经是行业标准,最好将此模块定义成一个或多个接口。不要定义成抽象类,以免给后期扩展带来不必要的麻烦。

    (4) 在已经创建号的类的基础上创建新类时,最好少用继承,多用组合。因为子类继承父类时,可能继承了对子类没用的或有害的方法,会给整个代码带来很多麻烦。

    (5) 初学者在设计类之前,尽可能多收集、阅读别人写的优秀的代码示例、理解别人的思想。

    类名、变量名、方法名的选取

    (1) 类名、变量名、方法名一般都是用英文标识符标识,不要用中文取名。类名的首字母应该大写,变量和方法的首字母用小写。对于所有标识符,其中包含的所有单词都应该紧靠在一起,对于中间单词的首字母用大写。例如,类名可取ThisIsMyClassName,属性名可取studentName等,但要避免类名过长。

    (2) 类名、变量名、方法名的取名最好要有意义,不要随便取名。这样便于以后查阅代码。

    (3) 若在定义中出现了常量初始化字符,则在static final修饰的基本类型标识符中大写所有的字母,如public static final String PI=3.14;这样便可以标识出这些常量属于编译期的常数。

    (4) Java包(package)的命名属于一种特殊情况:全都用小写字母命名,即便中间单词的首字母也是如此。另外,对于域名的扩展名称,如com、org、net或者edu等,全部都应该小写。

    类的属性设计

    (1) 将类的属性设置为私有。

    在设计类的过程中,最重要的时不能破坏面向对象的封装性。针对类的属性,一般都是把它设置成私有的,提供公有的设置方法和取值方法。

    (2) 一定要对局部变量进行初始化

    在Java中,系统只会对成员变量进行默认初始化,不会对局部变量进行默认初始化。在设计类的过程中,最好不要依赖于默认的初始值,而是应该显式地初始化变量和局部变量。

    类的方法设计

    (1) 在设计方法时,需要考虑构造方法,考虑系统提供的方法对自己定义的方法的影响,比如系统已经提供了数组的复制功能就没有必要自己定义,应该做到简明扼要、功能独立。如果方法比较大,可以适当抽取出功能比较相近的部分,重新再定义一个方法,让这些方法通过互调的方式完成代码的重复使用。

    (2) 在定义构造方法时,一般不调用其他方法。在初始化各个变量时,可能会产生某种异常,通常将此异常直接抛出。这样设计就不会盲目地继承此类,避免创建失败还当作正确创建的情况。

    (3) 定义方法时,参数不宜过多,方法的参数过多,将使得方法调用变得难以编写、阅读和维护,应该试着将方法的参数放到更适合的类中,通过对象的形式来进行传递,或通过JDK的可变参数传递的特性来解决此类问题。

    (4) 一般在进行显式的清理工作,特别是在学习到JDBC时,如果进行数据库的连接过多,会耗尽系统资源,导致系统崩溃。这时应该定义一个专门的清理或关闭方法来清理内存,必要时可以写到finally异常代码块中进行清理。

    继承的设计

    (1) 不要使用protected变量,以免破坏封装。原因有两点,首先时由于子类集是无界的,任何人都可以从定义的类派生出子类,然后可以编写代码访问protected实例字段,因而破坏封装性。再者,在Java语言中,同一包的任何类,无论是否时子类,都能访问protected字段。

    (2) 在类的关系模型中使用继承。在使用继承时,应认真考虑两个类之间是否真的存在继承关系。

    (3) 除非通过继承得到的方法有用,否则不要使用继承。

    (4) 重写方法时不要改变预期行为。

    (5) 尽量使用多态,而不是类型信息。

    (6) 尽量将非常常用的方法和属性放在超类中。

    (7) 不要泛用反射。

     

     

  • 相关阅读:
    设计模式之工厂模式-抽象工厂(02)
    1036 跟奥巴马一起编程 (15 分)
    1034 有理数四则运算 (20 分)
    1033 旧键盘打字 (20 分)
    1031 查验身份证 (15 分)
    大学排名定向爬虫
    1030 完美数列 (25 分)二分
    1029 旧键盘 (20 分)
    1028 人口普查 (20 分)
    1026 程序运行时间 (15 分)四舍五入
  • 原文地址:https://www.cnblogs.com/1192170380com/p/8065381.html
Copyright © 2011-2022 走看看