现在有乒乓球运动员和篮球运动员,乒乓球教练和篮球教练,为了出国交流,跟乒乓球相关的人员都需要学习英语,请用所学知识分析,这个案例中有哪些具体类,哪些抽象类,哪些接口,画出UML图,并用Java代码实现
时间: 2023-06-14 17:07:07 浏览: 51
在这个案例中,可以将乒乓球运动员、篮球运动员、乒乓球教练、篮球教练看做具体类,英语学习可以看做一个抽象类或接口。
UML图如下:
```
+----------------+
| Person |
+----------------+
| name: String |
+----------------+
^
|
+-------+--------+
| |
| +-------------+ +--------------+
| | Athlete | | Coach |
| +-------------+ +--------------+
| | sport: | | specialty: |
| | String | | String |
| +-------------+ +--------------+
| | play():void | | teach():void |
| +-------------+ +--------------+
^ ^
| |
+-------------+-----------+ +-----------+------------+
| | | |
| +-------------------+ | | +------------------+ |
| | PingPongAthlete | | | | BasketballCoach | |
| +-------------------+ | | +------------------+ |
| | play():void | | | | teach():void | |
| +-------------------+ | | +------------------+ |
| | | |
| +-------------------+ | | +------------------+ |
| | BasketballPlayer| | | | PingPongCoach | |
| +-------------------+ | | +------------------+ |
| | play():void | | | | teach():void | |
| +-------------------+ | | +------------------+ |
| | | |
| +-------------------+ | | +------------------+ |
| | EnglishLearning | | | | EnglishLearning | |
| +-------------------+ | | +------------------+ |
| | learn():void | | | | learn():void | |
| +-------------------+ | | +------------------+ |
+------------------------+ +------------------------+
```
Java代码实现如下:
```java
abstract class Person {
String name;
Person(String name) {
this.name = name;
}
}
interface Athlete {
void play();
}
interface Coach {
void teach();
}
class PingPongAthlete implements Athlete {
String sport;
PingPongAthlete(String name) {
sport = "Ping Pong";
}
public void play() {
System.out.println("Playing Ping Pong");
}
}
class BasketballPlayer implements Athlete {
String sport;
BasketballPlayer(String name) {
sport = "Basketball";
}
public void play() {
System.out.println("Playing Basketball");
}
}
class PingPongCoach implements Coach {
String specialty;
PingPongCoach(String name) {
specialty = "Ping Pong";
}
public void teach() {
System.out.println("Teaching Ping Pong");
}
}
class BasketballCoach implements Coach {
String specialty;
BasketballCoach(String name) {
specialty = "Basketball";
}
public void teach() {
System.out.println("Teaching Basketball");
}
}
interface EnglishLearning {
void learn();
}
class EnglishLearningImpl implements EnglishLearning {
public void learn() {
System.out.println("Learning English");
}
}
```