gpt4 book ai didi

java - 如何在Java中实现使用依赖,枚举数据类型?混淆实现聚合,组合

转载 作者:行者123 更新时间:2023-11-29 08:48:53 25 4
gpt4 key购买 nike

我必须在 java 代码中实现以下类图。该图非常复杂,有些部分造成混淆。这个问题肯定会对我和任何读者有很大帮助,因为它包含 UML 图的几个重要方面。 enter image description here

class Book{
String isbn;
String publisher;
String publishDate;
int pages;
}
class BookItem extends Book{
String barcode;
boolean isReferenceOnly;
}
class Author{
String name;
String biography;
Collection<Book> book;
}
class Account{
String number;
List<History> history;
String openDate;
AccountState state;
public Account(AccountState state){
this.state = state;
}
}
enum AccountState{
Active,
Frozen,
Closed
}
class Catalog implements Search, Manage{
List<BookItem> bookItem;
/* Implement the methods of Manage interface */
void add(BookItem item){ }
void remove(BookItem item){ }
/* Implement the methods of Search interface */
int search(BookItem item){ }
}
class Account{
String number;
List<History> history;
Student student = new Student();

void setStudent(Student student){
this.student = student;
}
}
interface Search{
int search(BookItem item);
}
interface Manage{
void add(BookItem item);
void remove(BookItem item);
}
class Student{
String name;
String address;
Search searchBook = new Catalog();
}
class Librarian{
String name;
String address;
String position;
Search searchBook = new Catalog();
Manage manage = new Catalog();
Account account = new Account();

void setAccount(Account account){
this.account = account;
}
class Library{
String name;
String Address;
List<BookItem> bookItem = new ArrayList<BookItem>();
Catalog catalog = new catalog();
List<Account> accounts = new ArrayList<Account>();

Library(Catalog catalog){
this.catalog = catalog;
}
void setBookItem(List<BookItem> bookItem){
this.bookItem = bookItem;
}
void setAccounts(List<Account> accounts){
this.accounts = accounts;
}
}

我是按以下方式实现的,但在各种情况下会出现混淆:

  1. 如何使用 Search 接口(interface)实现 Class Student。
  2. 如何使用 Search 和 Manage 接口(interface)实现 Class Librarian。
  3. 为什么我们不使用关联而不是使用依赖。
  4. 如何在这种情况下实现具有使用依赖性的枚举数据类型[我刚刚将 AccountState 视为一个类,但这是一个错误的实现]。
  5. 如何在帐户中使用 AccountState [我刚刚创建了一个 AccountState 对象]。
  6. 阅读许多博客后仍然无法自信地实现聚合和组合。 注意:在此图中存在 3 个聚合和 1 个组合。它们是:
    (a) 图书馆由许多帐户组成。 {聚合}
    (b) 许多图书项目是图书馆的一部分。 {聚合}
    (c) 帐户是学生的一部分。 {聚合}
    (d) 图书馆必须有目录。 {作文}
    请给你宝贵的意见,这样我才能学好它。谢谢。

最佳答案

由于这个问题是出于学习目的的家庭作业,我将仅发布有关如何实现您需要复习的内容的示例,不会直接回答有关如何应用它们的问题到您当前的设计。

  • Java中的枚举是使用enum实现的.

    enum WeekDays {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY;
    }
  • 聚合/组合意味着拥有另一个类的字段。如果是弱关联(聚合),应该通过setter或其他方法初始化。如果是强关联,则应在类构造函数中对其进行初始化,因为类的生活/工作需要它。

    class WeakAssociation { }
    class StrongAssociation { }
    class NeedWeekAndStrongAssociation {
    private WeakAssociation weakAssociation;
    private StrongAssociation strongAssociation;
    public NeedWeekAndStrongAssociation(StrongAssociation strongAssociation) {
    this.strongAssociation = strongAssociation;
    }
    public void setWeakAssociation(WeakAssociation weakAssociation) {
    this.weakAssociation = weakAssociation;
    }
    }
  • 使用依赖性意味着类/接口(interface)将在其一个或多个方法中使用另一个类/接口(interface):

    class WantToBeUsed {
    public void methodToBeUsed(String data) {
    //fancy implementation
    }
    }
    class CannotDoThisAlone {
    public void cannotDoItAlone(String data) {
    WantToBeUsed wantToBeUsed = new WantToBeUsed();
    wantToBeUsed.methodToBeUsed(data);
    }
    }

关于java - 如何在Java中实现使用依赖,枚举数据类型?混淆实现聚合,组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23712645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com