: 画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方法。
时间: 2023-12-23 22:06:23 浏览: 156
讲述UML类图的画法
4星 · 用户满意度95%
以下是 UML 类图:
```
+----------------+
| Printer |
+----------------+
| + print() |
+----------------+
^
|
|
+----------------+
| InkjetPrinter |
+----------------+
| + print() |
+----------------+
^
|
|
+----------------+
| LaserPrinter |
+----------------+
| + print() |
+----------------+
^
|
|
+----------------+
| Report |
+----------------+
| - printer |
+----------------+
| + foo() |
| + setPrinter() |
+----------------+
```
以下是 Java 代码:
```java
// Printer.java
public class Printer {
public void print() {
System.out.println("打印机打印");
}
}
// InkjetPrinter.java
public class InkjetPrinter extends Printer {
@Override
public void print() {
System.out.println("喷墨打印机打印");
}
}
// LaserPrinter.java
public class LaserPrinter extends Printer {
@Override
public void print() {
System.out.println("激光打印机打印");
}
}
// Report.java
public class Report {
private Printer printer;
public void setPrinter(Printer p) {
printer = p;
}
public void foo() {
printer.print();
}
}
// Main.java
public class Main {
public static void main(String[] args) {
Report report = new Report();
report.setPrinter(new InkjetPrinter());
report.foo();
report.setPrinter(new LaserPrinter());
report.foo();
}
}
```
在上述代码中,我们定义了三个类,分别是 `Printer` 打印机类、`InkjetPrinter` 喷墨打印机类、`LaserPrinter` 激光打印机类和 `Report` 报表类。`InkjetPrinter` 和 `LaserPrinter` 都是 `Printer` 的子类,分别重写了 `print()` 方法。`Report` 类中有一个 `Printer` 类型的引用 `printer`,并且有一个用于注入具体打印机对象的 `setPrinter()` 方法和一个调用 `printer` 的 `print()` 方法的 `foo()` 方法。在 `Main` 类中,我们创建了一个 `Report` 对象并注入了一个 `InkjetPrinter` 对象,然后调用了 `foo()` 方法,这时会输出“喷墨打印机打印”;接着我们又注入了一个 `LaserPrinter` 对象并再次调用了 `foo()` 方法,这时会输出“激光打印机打印”。
阅读全文