温州网站建设温州,wordpress博客模板推荐,设计软件solidworks,顺德微信网站建设day23
实践题#xff1a; 需求#xff1a; 学院要求有学院的基本信息 学院的老师也要有基本信息 学院的打印机可以分别打印学院的基本信息和教师的基本信息 设计这样一个系统#xff0c;要求要有较好的可扩展性和可维护性 package com.saas.oo1;
public class Colle…day23
实践题 需求 学院要求有学院的基本信息 学院的老师也要有基本信息 学院的打印机可以分别打印学院的基本信息和教师的基本信息 设计这样一个系统要求要有较好的可扩展性和可维护性 package com.saas.oo1;
public class College {
String name; // 学院的名称String position; // 学院的位置int year; // 学院的建校时间
// 学院的打印机将打印机与名称位置等一样做成学院的一个属性Printer printer new Printer();
// 学院的打印机来打印学院的信息public void printContent(College coll){// printer是打印机对象是学院类中的一个打印机属性// 学院的打印机调用打印机的打印方法将学院的详细信息进行打印printer.print(coll.info());}
// 学院的打印机来打印教师的信息public void printContent(Teacher tea){// printer是打印机对象是学院类中的一个打印机属性// 学院的打印机调用打印机的打印方法将教师的详细信息进行打印printer.print(tea.info());}
// 学院的信息public String info(){String detail name:\t name \nposition:\t position \nyear:\t year;
return detail;}
} package com.saas.oo1;
public class Teacher {
String name; // 教师的姓名
String major; // 教师的专业
// 教师的详细信息public String info(){String detail name:\t name \nmajor :\t major;
return detail;}
} package com.saas.oo1;
/*** 打印机类* 打印机可以打印任何给定的内容资源*/
public class Printer {
/*** 打印机能够打印指定的内容信息* param content*/public void print(String content){System.out.println(start printting...);System.out.println(content);}
} package com.saas.oo1;
public class Test {
public static void main(String[] args) {// 创建学院对象College coll new College();
// 分别给学院对象的名称、位置和建校时间赋值coll.name xianyangzhiye;coll.position tongyilu;coll.year 86;
// 调用学院的打印方法打印学院的详细信息coll.printContent(coll);
System.out.println();
// 构建教师对象Teacher tea new Teacher();
// 分别设置教师对象的姓名和专业信息tea.name wusong;tea.major software;
// 调用学院的打印方法打印教师的详细信息coll.printContent(tea);}
} 最终的执行结果如下 start printting...
name: xianyangzhiye
position: tongyilu
year: 86start printting...
name: wusong
major : software 以上的执行结果基本可以满足之前要求的前三点 对于第四点要求系统拥有良好的可扩展性和可维护性目前并不能实现 现在升级以上代码对于打印机进行进一步扩展因为打印机可能存在黑白打印或者彩色打印 修改以上的部分类 package com.saas.oo2;
/*** 打印机类* 打印机可以打印任何给定的内容资源*/
public class Printer {
/*** 打印机能够打印指定的内容信息* param content*/public void print(String content){System.out.println(start printing...);System.out.println(content);}
} package com.saas.oo2;
/*** 彩色打印机*/
public class ColorPrinter extends Printer{
Overridepublic void print(String content) {System.out.println(color printing);super.print(content);}
} 彩色打印机继承自打印机类 package com.saas.oo2;
/*** 黑白打印机*/
public class BlackPrinter extends Printer{
Overridepublic void print(String content) {System.out.println(blank white printing);super.print(content);}
} 黑白打印机继承自打印机类 package com.saas.oo2;
public class College {
String name; // 学院的名称String position; // 学院的位置int year; // 学院的建校时间
// 学院的打印机将打印机与名称位置等一样做成学院的一个属性private Printer printer;
public void setPrinter(Printer printer) {this.printer printer;}
// 学院的打印机来打印学院的信息public void printContent(College coll){// printer是打印机对象是学院类中的一个打印机属性// 学院的打印机调用打印机的打印方法将学院的详细信息进行打印printer.print(coll.info());}
// 学院的打印机来打印教师的信息public void printContent(Teacher tea){// printer是打印机对象是学院类中的一个打印机属性// 学院的打印机调用打印机的打印方法将教师的详细信息进行打印printer.print(tea.info());}
// 学院的信息public String info(){String detail name:\t name \nposition:\t position \nyear:\t year;
return detail;}
} 将College类中的打印机属性设置为可插拔式方式实现 这种设计非常方便给定的任何打印机类型的对象都将以这种打印机效果进行打印 注意这种设计还有一个缺陷学院和教师都有详细信息的描述后面我们可以使用接口来进行升级改造