面向抽象编程是指设计一个类时,不让该类面向具体的类,而是面向抽象类或接口。即所设计类中的重要数据是抽象类或接口声明的变量。要求以面向抽象编程设计医疗仪器警报声“模拟器”,希望所设计的模拟器可以模拟许多警报的叫声。 (1)定义抽象类MedicalDevice,里面包含无参数返回的抽象方法alarm()和返回String类型的方法getDeviceNameO,用于返回报警仪器名称。 (2)定义模拟器Simulator类里面包含抽象数据成员变量对象数据类型为Device以及相应的setDevice方法用于设置成员变量Device对象的值。定义playSound方法用于在屏幕上打印出产生报警仪器的名称以及产生警报(调用alam()和getDeviceName()方法)。 (3)定义心电监护仪ECGmonitor类继承于MedicalDevice类,并实现alarm()方法和getDeviceName()方法。 (4)定义呼吸机Ventilator类继承于MedicalDevice类,并实现alarm()方法和getDeviceName()方法。 (5)定义主类并测试模拟器类对象。
时间: 2024-03-12 08:46:11 浏览: 11
以下是代码实现:
```java
// 定义抽象类 MedicalDevice
abstract class MedicalDevice {
public abstract void alarm();
public abstract String getDeviceName();
}
// 定义心电监护仪 ECGmonitor 类
class ECGmonitor extends MedicalDevice {
public void alarm() {
System.out.println("心电监护仪报警");
}
public String getDeviceName() {
return "心电监护仪";
}
}
// 定义呼吸机 Ventilator 类
class Ventilator extends MedicalDevice {
public void alarm() {
System.out.println("呼吸机报警");
}
public String getDeviceName() {
return "呼吸机";
}
}
// 定义模拟器 Simulator 类
class Simulator {
private MedicalDevice device;
public void setDevice(MedicalDevice device) {
this.device = device;
}
public void playSound() {
if (device != null) {
System.out.println(device.getDeviceName() + "发出警报:");
device.alarm();
}
}
}
// 定义主类 Main 并测试模拟器类对象
public class Main {
public static void main(String[] args) {
Simulator simulator = new Simulator();
ECGmonitor ecg = new ECGmonitor();
Ventilator ventilator = new Ventilator();
simulator.setDevice(ecg);
simulator.playSound();
simulator.setDevice(ventilator);
simulator.playSound();
}
}
```
输出结果为:
```
心电监护仪发出警报:
心电监护仪报警
呼吸机发出警报:
呼吸机报警
```
以上代码实现了面向抽象编程的要求,通过定义抽象类 `MedicalDevice` ,并在 `Simulator` 类中使用该抽象类类型的数据成员,实现了模拟器可以模拟多种警报声的功能。同时,由于 `ECGmonitor` 类和 `Ventilator` 类都是 `MedicalDevice` 的子类,并实现了 `alarm()` 和 `getDeviceName()` 方法,因此可以在 `Simulator` 类中对这两个子类对象进行操作。