为了更好地体现OO的思想,设计一个图书业务接口如下: public class Book { //TODO 根据上面的属性自行实现 } public interface IBookService { 请写一个图书业务接口的实现类,完成以上所有的业务方法。定义如下: 写一个使用类,测试接口中的所有方法,定义如下: void addBook(Book b); //添加图书 void deleteByIsbn(String ibsn); // void deleteByAuthor(String author); // void updateBook(Book b); //附加题 int size(); //统计书的数量 void clear(); //清空所有图书 Book selectByIsbn(String isbn); Book[] getAllBooks(); //获取所有图书 } public class BookServiceImpl implements IBookService { //TODO 实现接口中的所有方法 } public class UseBookService { // public static void main(String[] args) { //TODO 请自行实现 }
时间: 2024-01-05 10:03:20 浏览: 83
好的,让我们来设计这个图书业务接口及其实现类。
首先,我们需要定义一个Book类,代码如下:
```java
public class Book {
private int id;
private String name;
private String author;
private String isbn;
// 构造方法
public Book(int id, String name, String author, String isbn) {
this.id = id;
this.name = name;
this.author = author;
this.isbn = isbn;
}
// getters 和 setters 方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
}
```
在Book类中,我们定义了四个属性,分别是id、name、author和isbn,用于表示图书的不同信息,并且定义了相应的构造方法和 getters/setters 方法。
接下来,我们可以定义一个IBookService接口,代码如下:
```java
public interface IBookService {
void addBook(Book book); // 添加图书
void deleteByIsbn(String isbn); // 根据 ISBN 删除图书
void deleteByAuthor(String author); // 根据作者名删除图书
void updateBook(Book book); // 更新图书信息
int size(); // 统计图书数量
void clear(); // 清空所有图书
Book selectByIsbn(String isbn); // 根据 ISBN 查询图书
Book[] getAllBooks(); // 获取所有图书
}
```
在IBookService接口中,我们定义了几个方法,分别是添加图书、根据ISBN删除图书、根据作者名删除图书、更新图书信息、统计图书数量、清空所有图书、根据ISBN查询图书和获取所有图书。
接下来,我们可以定义一个BookServiceImpl类来实现IBookService接口,代码如下:
```java
import java.util.ArrayList;
import java.util.List;
public class BookServiceImpl implements IBookService {
private List<Book> books = new ArrayList<>();
@Override
public void addBook(Book book) {
books.add(book);
}
@Override
public void deleteByIsbn(String isbn) {
for (int i = 0; i < books.size(); i++) {
if (books.get(i).getIsbn().equals(isbn)) {
books.remove(i);
break;
}
}
}
@Override
public void deleteByAuthor(String author) {
for (int i = 0; i < books.size(); i++) {
if (books.get(i).getAuthor().equals(author)) {
books.remove(i);
i--;
}
}
}
@Override
public void updateBook(Book book) {
for (int i = 0; i < books.size(); i++) {
if (books.get(i).getId() == book.getId()) {
books.set(i, book);
break;
}
}
}
@Override
public int size() {
return books.size();
}
@Override
public void clear() {
books.clear();
}
@Override
public Book selectByIsbn(String isbn) {
for (int i = 0; i < books.size(); i++) {
if (books.get(i).getIsbn().equals(isbn)) {
return books.get(i);
}
}
return null;
}
@Override
public Book[] getAllBooks() {
return books.toArray(new Book[books.size()]);
}
}
```
在BookServiceImpl类中,我们实现了IBookService接口中定义的所有方法。首先,我们定义了一个books列表来存储所有的Book对象。addBook()方法可以添加一个Book对象到books列表中,deleteByIsbn()方法可以根据ISBN删除对应的Book对象,deleteByAuthor()方法可以根据作者名删除对应的Book对象,updateBook()方法可以更新Book对象的信息,size()方法可以统计books列表中的Book对象数量,clear()方法可以清空books列表,selectByIsbn()方法可以根据ISBN查询对应的Book对象,getAllBooks()方法可以获取books列表中的所有Book对象。
最后,我们可以定义一个UseBookService类来测试IBookService接口中的所有方法,代码如下:
```java
public class UseBookService {
public static void main(String[] args) {
// 创建一个BookServiceImpl对象
IBookService bookService = new BookServiceImpl();
// 添加图书
bookService.addBook(new Book(1, "Java编程思想", "Bruce Eckel", "9787111128069"));
bookService.addBook(new Book(2, "Python基础教程", "Magnus Lie Hetland", "9787508344986"));
bookService.addBook(new Book(3, "C++ Primer Plus", "Stephen Prata", "9787111212202"));
// 获取所有图书
Book[] allBooks = bookService.getAllBooks();
System.out.println("所有图书:");
for (Book book : allBooks) {
System.out.println(book.getName() + " - " + book.getAuthor() + " - " + book.getIsbn());
}
// 统计图书数量
int bookCount = bookService.size();
System.out.println("图书数量:" + bookCount);
// 根据ISBN查询图书
Book book = bookService.selectByIsbn("9787111128069");
System.out.println("查询结果:" + book.getName() + " - " + book.getAuthor() + " - " + book.getIsbn());
// 根据ISBN删除图书
bookService.deleteByIsbn("9787508344986");
// 根据作者名删除图书
bookService.deleteByAuthor("Stephen Prata");
// 更新图书信息
Book newBook = new Book(1, "Java编程思想(第2版)", "Bruce Eckel", "9787111128069");
bookService.updateBook(newBook);
// 获取所有图书
allBooks = bookService.getAllBooks();
System.out.println("所有图书:");
for (Book b : allBooks) {
System.out.println(b.getName() + " - " + b.getAuthor() + " - " + b.getIsbn());
}
// 清空所有图书
bookService.clear();
// 统计图书数量
bookCount = bookService.size();
System.out.println("图书数量:" + bookCount);
}
}
```
在UseBookService类中,我们首先创建了一个BookServiceImpl对象,然后使用addBook()方法添加了三本图书,使用getAllBooks()方法获取了所有图书并输出,使用size()方法统计了图书数量并输出,使用selectByIsbn()方法查询了一本图书并输出,使用deleteByIsbn()方法删除了一本图书,使用deleteByAuthor()方法删除了一本图书,使用updateBook()方法更新了一本图书的信息,再次使用getAllBooks()方法获取所有图书并输出,使用clear()方法清空了所有图书,最后再次使用size()方法统计了图书数量并输出。
这样,我们就完成了这个图书业务接口及其实现类的设计。
阅读全文