一、关于正向建模与开发
本单元的作业要求是在完成设计的基础上再书写代码。清晰严谨的设计可以在coding时发挥重要的作用,使书写代码的速度和质量都有很大的提高。这个单元的三次作业都要求使用UML图完成设计,UML图完成的设计更具有规范性,便于不同人之间进行交流,但是,作为初次使用这一工具的我们,可能在使用的过程中会遇到一系列的问题。
但是无论如何,我认为本单元作业的主要目的是先设计再代码,在完成作业时,我也刻意去注意这一方面,尽量让自己的设计更清晰,更完备。
二、单元设计架构
虽然经过了较为严谨的设计,但是在实现的时候,还是发现了很多没有考虑全面的问题,这导致,我的类之间的耦合性及其强,再加上我还创建了较多的类,所以在类图中,就会看到很对的像“蜘蛛网”一样的线,这对代码的维护提出了很大的考验,是本单元作业完成中最大的一个诟病。
我在第一次作业就在顶层设计了一个名为Library类,用于管理一个学校的图书借阅情况,所以在增加校际借阅后,一个学校内部的过程相对来说能够省去很多的工作。Library负责与几个图书管理员、自助机器、后勤处进行联系。同时设置Book类及Student类对书籍和学生进行管理,方便记录借书的情况。
其中Book类为了能够使用Hashmap的contains等方法,重写了hashCode和equals两个方法。具体代码如下:
@Override
public int hashCode() {
return bookNo.hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Book) {
return this.bookNo.equals(((Book)obj).bookNo);
} else {
return false;
}
}
对于时间处理单独设置了Clock类,输出由Output类进行。
三、UML模型设计
四、面向对象思维演进
从Unit1的字符串处理(递归下降算法)到Unit2的多线程(电梯)在到Unit3的Jml规则(通讯交流)最后是本单元的UML设计,可以发现,设计的思想,面向对象是思想始终贯穿着课程的始终。我也从一开始只会面向过程(瞎建类),一步步地掌握了一些面向对象的方法,能够将面向对象的思想运用到程序的架构中去。
五、课程收获
面向对象程序设计,让我收获最大的肯定就是面向对象的思维了,但除此之外,更锻炼了我做事的能力。每一次作业都可以是生活中的一个实际问题,面向对象这门课给了我们一个很好的解决问题的思路。有计划,有条理,分工明确,这些都是做好一件事必不可少的。