引例 一个最简单的窗口: SimplestWindow. java 现在要生成一个红色的窗体有几种方法? 2021/2/24 北京理工大学计算机系
2021/2/24 北京理工大学计算机系 4 引例 ◼ 一个最简单的窗口:SimplestWindow.java ◼ 问题: 现在要生成一个红色的窗体有几种方法?
最直观的方法 (1)在man函数中增加一句: Set Background(…y) 这是过程式的思维方法,受C的毒害太深! (2)复制所有 Window. java源文件到新文件中,然后 修改。 居然有这么蠢的程序员用这种作法,我无言了 题外话:出了名了中印程序员“数组s链表” (3)增加一个构造函数传递一个参数表明要生成红 色的窗体 可行的方法,基本合格 2021/2/24 北京理工大学计算机系
2021/2/24 北京理工大学计算机系 5 最直观的方法 ◼ (1)在main()函数中增加一句:SetBackground(…); 这是过程式的思维方法,受C的毒害太深! ◼ (2)复制所有Window.java源文件到新文件中,然后 修改。 ◼ (3)增加一个构造函数,传递一个参数表明要生成红 色的窗体 居然有这么蠢的程序员用这种作法,我无言了。 题外话:出了名了中印程序员“数组 vs 链表” 可行的方法,基本合格
使用组合 首先需要改造 SimplestWindow以便于重用 代码。 新建一个类,以 SimplestWindow的一个对 象作为类成员 实例: Use Composition EXample java 2021/2/24 北京理工大学计算机系 7
2021/2/24 北京理工大学计算机系 7 使用组合 ◼ 首先需要改造SimplestWindow以便于重用 代码。 ◼ 新建一个类,以SimplestWindow的一个对 象作为类成员 ◼ 实例:UseCompositionExample.java
使用继承 新建一个 RedWindow类,从 SimplestWindows中派生出来 实例: UseInherits Example java 2021/2/24 北京理工大学计算机系
2021/2/24 北京理工大学计算机系 8 使用继承 ◼ 新建一个RedWindow类,从 SimplestWindows中派生出来 ◼ 实例:UseInheritsExample.java
组合Vs继承 对比两个示例: 1)使用组合的可以使用 SimplestWindow 的所有 Public方法,因而灵活度高 (2)使用继承的代码特别少,使用者不需 要了解 SimplestWindow的任何细节 面向对象设计通用原则 组合优先于继承 2021/2/24 北京理工大学计算机系 9
2021/2/24 北京理工大学计算机系 9 组合 vs 继承 ◼ 对比两个示例: (1)使用组合的可以使用SimplestWindow 的所有Public方法,因而灵活度高 (2)使用继承的代码特别少,使用者不需 要了解SimplestWindow的任何细节。 ◼ 面向对象设计通用原则: 组合优先于继承