画UML类图并编程: 1.有一个打印机类Printer,定义方法print(), 2.创建其两个子类,(1)喷墨打印机类InkpetPrinter ,重写print()方法,方法中输出“喷墨打印机打印” (2)激光打印机类LaserPrnter 重写print() 方法,方法中输出“激光打印机打印” 。 3.有一个报表类Report (1)有一个Printer类的引用printer (2)类中有一个方法foo(),调用printer的print方法 (3)写setPrinter(Printer p) 方法注入具体的打印机 4.main()方法中,创建Report类的对象,并调用setPrinter方法注入具体的InkpetPrinter 或 LaserPrnter 类的对象,然后调用其foo方法。 以Word文档格式提交
时间: 2023-12-23 14:06:23 浏览: 17
很抱歉,作为一个语言模型AI,我无法生成Word文档,但我可以为您提供类图和Java代码。以下是类图和代码:
类图:
```
+----------------+ +------------------+
| Printer | | Report |
+----------------+ +------------------+
| | | -printer:Printer|
+----------------+ +------------------+
| +print():void| | +foo():void |
+----------------+ | +setPrinter(p:Printer):void|
+------------------+
^ ^
| |
+------------------+ +---------------------+
|InkpetPrinter | |LaserPrnter |
+------------------+ +---------------------+
| +print():void | | +print():void |
+------------------+ +---------------------+
```
Java代码:
Printer.java:
```
public class Printer {
public void print() {
System.out.println("打印机打印");
}
}
```
InkpetPrinter.java:
```
public class InkpetPrinter extends Printer {
@Override
public void print() {
System.out.println("喷墨打印机打印");
}
}
```
LaserPrnter.java:
```
public class LaserPrnter extends Printer {
@Override
public void print() {
System.out.println("激光打印机打印");
}
}
```
Report.java:
```
public class Report {
private Printer printer;
public void foo() {
printer.print();
}
public void setPrinter(Printer p) {
this.printer = p;
}
}
```
Main.java:
```
public class Main {
public static void main(String[] args) {
Report report = new Report();
report.setPrinter(new InkpetPrinter()); //或者report.setPrinter(new LaserPrnter());
report.foo();
}
}
```