编写一个程序,用于描述观众观看电影的信息。 3 实验内容 编写一个Java应用程序,设计要求如下: 电影类(Movie)、动作电影类(ActionMovie)和喜剧电影类(ComedyMovie)、Genre接口、Rating接口和Viewer类之间的UML,及运行结果
时间: 2024-11-12 22:38:12 浏览: 24
在编写这样一个程序时,首先需要创建几个关键类和接口:
1. **电影类(Movie)**:
```java
public class Movie {
private String title;
private int releaseYear;
private Genre genre;
public Movie(String title, int releaseYear, Genre genre) {
this.title = title;
this.releaseYear = releaseYear;
this.genre = genre;
}
// getters and setters
public String getTitle() { return title; }
public int getReleaseYear() { return releaseYear; }
public Genre getGenre() { return genre; }
}
```
2. **Genre接口**:
```java
public interface Genre {
void setGenre(String genreType);
String getGenre();
}
```
3. **Rating接口**:
```java
public interface Rating {
void setRating(int rating);
int getRating();
}
```
4. **动作电影类(ActionMovie)**和**喜剧电影类(ComedyMovie)**,作为`Movie`的子类并分别实现`Genre`和`Rating`接口:
```java
public class ActionMovie extends Movie implements Genre, Rating {
// 实现接口方法...
}
public class ComedyMovie extends Movie implements Genre, Rating {
// 实现接口方法...
}
```
5. **Viewer类**:
```java
public class Viewer {
private String name;
private List<Movie> watchedMovies;
public Viewer(String name) {
this.name = name;
this.watchedMovies = new ArrayList<>();
}
// 添加、查看等方法...
}
```
6. UML 图形设计:
- 创建一个表示关系的UML图,包括电影类、动作电影类、喜剧电影类、Genre接口、Rating接口以及它们之间的关联(例如,电影有genre和rating属性,可以关联到相应的接口实现类;Viewer类可以有一个movies集合,存放不同类型和评级的电影)。
7. **实验内容**:
- 实现各个类和接口的方法,并在Viewer类中提供添加电影、查看已观看电影等操作。
- 创建实例,如一个Viewer对象和多种类型的Movie对象,展示多态性(比如一个Viewer通过不同类型电影引用调用不同的getGenre和getRating方法)。
- 测试程序,输入观众信息和观看的电影,检查数据是否准确存储和显示。
运行结果示例:
当用户运行程序,他们可能会看到类似这样的输出:
```
Viewer John has watched the following movies:
1. "Mission Impossible" (Action, 2022, 8.5/10)
2. "The Hangover" (Comedy, 2009, 7.2/10)
```
阅读全文