设计在线图书的数据结构

时间:2013-08-19 10:31:18

标签: oop

public class Book {
 private long ID;
 private String details;
 private static Set books;

 public Book(long iD, String details) { ... }
 public static void addBook(long iD, String details){....}

 public void update() { }
 public static void delete(Book b) { books.remove(b); }
 public static Book find(long id){....}
 };

 public class User {
 private long ID;
 private String details;
 private int accountType;
 private static Set users;

 public Book searchLibrary(long id) { return Book.find(id); }
 public void renewMembership() { ... }

 public static User find(long ID) {....}

 public static void addUser(long ID, String details,int accountType) {
 users.add(new User(ID, details, accountType));
 }

 public User(long iD, String details, int accountType) { ... }
 }

 public class OnlineReaderSystem {
 private Book b;
 private User u;
 public OnlineReaderSystem(Book b, User u) { ... }
 public void listenRequest() { }
 public Book searchBook(long ID) { return Book.find(ID); }
 public User searchUser(long ID){ return User.find(ID); }
 public void display() { }
 }

这是设计在线图书阅读器的数据结构问题的标准解决方案。我的问题是为什么我们要求在书中声明静态数据成员(私有静态集书籍)书籍class(用户类中的静态成员也一样)。这种方法的优点是什么? (删除了一些函数定义,以便我们可以避免与Java / C ++ / C#相关的答案,我只希望静态变量在所有这些面向对象语言中都可用)

1 个答案:

答案 0 :(得分:0)

此代码使用课程Book存储您应用中的所有图书,类似地,用户拥有所有用户的static Set。当数据成员为static时,所有图书实例将共享相同的Set图书,对用户也是如此。
这意味着您必须使用代码

进行编写
Book.find(1, "details"); //assuming format for call, given language not stated

这确实有些奇怪。
另一种方法是形成书籍,用户等的集合,并在不在类中创建数据static的情况下进行搜索。