摘要:
Java中的类都是单根结构,所有的类都归结于Object类,所有的类都是Object的子类。Object类中有一个to String函数,所以在其他类中编写to String函数时会出现override的提示。 对于设计一个具有复杂框架的程序来说,降低耦合的一个重要方法是 让函数都定义在它所针对的那 阅读全文
摘要:
避免代码复制。解决方案:函数、父类; 封装。尽量private每个类的成员变量,用操作封装数据,减少类与类之间成员变量的直接调用,而是调用method,降低耦合; 可扩展性最大化。尽量使用框架+数据的模式,可以使用容器,避免硬编码。避免以后功能扩展的时候做大规模的代码改造。 阅读全文
摘要:
为什么要引入继承?
还是做一个媒体库,里面可以放CD,可以放DVD。如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD的函数,单独做一个添加DVD的函数,如果还要往这个媒体库里添加其他的媒体类,还要再创建另一个添加函数。我们说这样的代码不具备可扩展性。另外,CD和DVD有很多相似之处,它们的成员变量里都有标题,播放时长,评论,等等,我们称这样的程序存在大量的代码复制,代码复制是代码不良的表现。所以我们可以创建一个它们的父类,把他们相同的成员变量都添加进父类,而它们都可以继承得到这些变量,在添加到媒体库的时候仅仅需要创建一个添加它们父类的这么一个函数,它们便也可添加进去。 阅读全文
摘要:
现在我们要做这么一个媒体库,用来存放CD和DVD。可以往媒体库里添加CD和DVD,还可以列出来媒体库里所有的CD和DVD。
我们用到了继承的概念:CD是一个对象,DVD也是。两者又有很多相似的地方,比方说都有名字,播放时间,评论,等等,为了以后便于管理和调试,我们做了一个父类叫Item,它下面有两个子类:CD,DVD。
然后我们还需要做一个类(对象)来管理它们,这个对象有一个ArrayList的成员变量当作媒体库,有一个add函数用来添加CD或DVD,还得有个list函数用来列出媒体库里的所有东西。我们给这个类起名Database。 阅读全文
摘要:
要用Java实现记事本的功能。首先列出记事本所需功能:
可以添加记录(字符串);
可以获得记录条数;
可以删除其中某一条记录;
可以获得指定第几条的记录;
可以列出所有的记录。
如果这个记事本是某个大程序的其中一部分,也就是说还有上层程序,那么上层程序就有可能会调用这个记事本以上列出的某个数据。
所以我们称上述多列功能为这个记事本的 接口 。
那么调用这些接口就是通过记事本这个类的public函数(method)。
但是,怎么实现记录呢?显然所记录的字符串不能记录在某个数组里,因为数组的长度是预先设定好的。这时就要用到泛型容器Arraylist。 阅读全文
摘要:
小时和分钟具有相同属性(值,上限),可以用一个类Display来定义这两个对象;
但是两者之间又具有联系(当分钟达到上限时,小时要加1),但两者同属于一个类里,不能产生直接联系,这时我们用另外一个类Clock来对它们进行管理;
首先用Clock类来定义一个clock的对象,用它来管理两个Display类型的对象,也即是clock的成员变量(min,hour),来管理它们之间的关系,再做显示;
总结:一个对象里有两个对象,或者 用一个对象来管理其他两个对象之间的关系。 阅读全文