使用java设计一个MyMedia类,其中包含MyBook、MyCd及MyTape三个子类。按照类的设计模式,完成他们的插入、删除、及查找功能。并且还拥有一个interfaceMedias接口和一个MediaTest测试类,interfaceMedias接口的方法有public int addMedia(Vector medias,MyMedia tempMedia); public int deleteMedia(Vector medias); public MyMedia findMedia(Vector medias,String artist); public void printlnMedia(Vector medias); public String input(); 并且MediaTest测试类实现了interfaceMedias接口
时间: 2024-02-12 14:08:10 浏览: 25
好的,我理解了你的问题。以下是Java代码实现:
首先是MyMedia类,包含MyBook、MyCd及MyTape三个子类:
```java
public class MyMedia {
private String title;
private String artist;
private int year;
public MyMedia(String title, String artist, int year) {
this.title = title;
this.artist = artist;
this.year = year;
}
public String getTitle() {
return title;
}
public String getArtist() {
return artist;
}
public int getYear() {
return year;
}
@Override
public String toString() {
return "MyMedia{" +
"title='" + title + '\'' +
", artist='" + artist + '\'' +
", year=" + year +
'}';
}
}
class MyBook extends MyMedia {
private String author;
private String publisher;
public MyBook(String title, String artist, int year, String author, String publisher) {
super(title, artist, year);
this.author = author;
this.publisher = publisher;
}
public String getAuthor() {
return author;
}
public String getPublisher() {
return publisher;
}
@Override
public String toString() {
return "MyBook{" +
"title='" + getTitle() + '\'' +
", artist='" + getArtist() + '\'' +
", year=" + getYear() +
", author='" + author + '\'' +
", publisher='" + publisher + '\'' +
'}';
}
}
class MyCd extends MyMedia {
private String label;
public MyCd(String title, String artist, int year, String label) {
super(title, artist, year);
this.label = label;
}
public String getLabel() {
return label;
}
@Override
public String toString() {
return "MyCd{" +
"title='" + getTitle() + '\'' +
", artist='" + getArtist() + '\'' +
", year=" + getYear() +
", label='" + label + '\'' +
'}';
}
}
class MyTape extends MyMedia {
private String genre;
private String length;
public MyTape(String title, String artist, int year, String genre, String length) {
super(title, artist, year);
this.genre = genre;
this.length = length;
}
public String getGenre() {
return genre;
}
public String getLength() {
return length;
}
@Override
public String toString() {
return "MyTape{" +
"title='" + getTitle() + '\'' +
", artist='" + getArtist() + '\'' +
", year=" + getYear() +
", genre='" + genre + '\'' +
", length='" + length + '\'' +
'}';
}
}
```
接下来是interfaceMedias接口:
```java
import java.util.Vector;
public interface interfaceMedias {
public int addMedia(Vector medias, MyMedia tempMedia);
public int deleteMedia(Vector medias);
public MyMedia findMedia(Vector medias, String artist);
public void printlnMedia(Vector medias);
public String input();
}
```
然后是MediaTest测试类,实现了interfaceMedias接口:
```java
import java.util.Scanner;
import java.util.Vector;
public class MediaTest implements interfaceMedias {
public static void main(String[] args) {
Vector<MyMedia> medias = new Vector<MyMedia>();
MediaTest mediaTest = new MediaTest();
MyBook myBook1 = new MyBook("Java Programming", "John Smith", 2004, "Jane Doe", "Wiley");
MyBook myBook2 = new MyBook("Python Programming", "Alice Brown", 2018, "Bob Green", "O'Reilly");
MyCd myCd1 = new MyCd("Greatest Hits", "The Beatles", 2000, "EMI");
MyCd myCd2 = new MyCd("Thriller", "Michael Jackson", 1982, "Epic");
MyTape myTape1 = new MyTape("The Wall", "Pink Floyd", 1979, "Rock", "81:09");
MyTape myTape2 = new MyTape("Purple Rain", "Prince", 1984, "Pop", "43:49");
mediaTest.addMedia(medias, myBook1);
mediaTest.addMedia(medias, myCd1);
mediaTest.addMedia(medias, myTape1);
mediaTest.addMedia(medias, myBook2);
mediaTest.addMedia(medias, myCd2);
mediaTest.addMedia(medias, myTape2);
mediaTest.printlnMedia(medias);
mediaTest.deleteMedia(medias);
mediaTest.printlnMedia(medias);
MyMedia result = mediaTest.findMedia(medias, "The Beatles");
if (result != null) {
System.out.println("Found media: " + result);
} else {
System.out.println("Media not found");
}
}
public int addMedia(Vector medias, MyMedia tempMedia) {
medias.add(tempMedia);
return medias.size();
}
public int deleteMedia(Vector medias) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the artist name to delete: ");
String artist = scanner.nextLine();
for (int i = 0; i < medias.size(); i++) {
MyMedia media = (MyMedia) medias.elementAt(i);
if (media.getArtist().equals(artist)) {
medias.removeElementAt(i);
}
}
return medias.size();
}
public MyMedia findMedia(Vector medias, String artist) {
for (int i = 0; i < medias.size(); i++) {
MyMedia media = (MyMedia) medias.elementAt(i);
if (media.getArtist().equals(artist)) {
return media;
}
}
return null;
}
public void printlnMedia(Vector medias) {
System.out.println("Media List:");
for (int i = 0; i < medias.size(); i++) {
MyMedia media = (MyMedia) medias.elementAt(i);
System.out.println(media);
}
}
public String input() {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter input:");
String input = scanner.nextLine();
return input;
}
}
```
MediaTest测试类中包含了六个媒体对象,分别是两本书、两张CD和两盘磁带。在main()方法中,我们首先创建了一个MyMedia对象的向量medias,然后创建了MediaTest对象mediaTest,并将六个媒体对象添加到medias中。接着,我们调用了mediaTest的printlnMedia()方法,打印出medias中所有媒体对象的信息。
接下来,我们调用了mediaTest的deleteMedia()方法,删除了一个指定艺术家的媒体对象,并再次调用了printlnMedia()方法,打印出更新后的medias中所有媒体对象的信息。
最后,我们调用了mediaTest的findMedia()方法,查找指定艺术家的媒体对象,并打印出查找结果。
希望这份代码能够对你有帮助!