gpt4 book ai didi

java - 客户与产品列表之间的UML关系(Java Supermaket软件)

转载 作者:行者123 更新时间:2023-12-02 01:08:36 25 4
gpt4 key购买 nike

我正在尝试创建一个超市软件,允许客户或所有者通过基于 Java 的 GUI 登录并使用我的系统。客户登录后可以查看产品。当所有者登录后,他们可以查看产品并添加新产品。

我想要 Customer 中的方法类(class):ViewProducts()
Owner中的方法类(class):ViewProducts() , AddProducts() .
这些方法是否错误,因为它们不是特定于客户/所有者的(它们与产品相关)。

我的关系是 CustomerProductList 具有 1 对 1 关系的类和 OwnerProductList有1对1的关系,并且这两个类可以以自己的方式操作数据。我这样做错了吗?

这种方式没有意义,因为 CustomerOwner不能具有与它们无关的属性,例如 ProductList .

最佳答案

您应该始终致力于捕捉现实中存在的事物。一个Customer实例ProductList有1对1的关系因为ProductList可供多人查看Customer一次,以及 Customer绝不拥有该列表。

可能更接近现实的是:

  • 每个 Supermarket个人管理一个Inventory个人
  • 每个 Inventory个人:
    • 一个 Supermarket 管理个人
    • 包含 Inventory Item个人
  • 每个 Inventory Item个人
    • 一个 Inventory 组成个人
    • 描述 Product个人
  • 每个 Product个人
    • 一个Inventory Item描述个人
    • 位于 1 Physical Location个人
  • 每个 User Account个人
    • 识别一个人
    • 扮演个人角色
  • 每个角色都提供个人能力

在现实生活中,人们扮演角色。这些角色可能是“顾客”、“医生”或“警察”。每个人Role具有一组可以执行的功能。在面向对象系统中,每个人Role可以通过操作来实现其能力,如 purchaseProduct() , prescribeMedication() ,或writeMovingViolation() .

有多种方法可以在面向对象系统中表示这些角色和功能。在一种方法中,customer Role 的实例可能配置为允许访问 queryInventory()purchaseProduct() Supermarket 上的操作和InventoryItem分别上课。安owner Role 的实例1 可能配置为允许访问 addInventoryItem()removeInventoryItem() Inventory 上的操作类。

这是 UML 模型的示例:

enter image description here

在另一种方法中,您可以创建 Role 的单例子类类,名为CustomerRoleOwnerRole ,然后让每个子类调用操作。你可以把你的viewProducts()addProducts()对这些单例进行操作。

<小时/>

1 考虑将此角色称为“经理”,这样超市老板就可以雇用其他人来做这项工作。

关于java - 客户与产品列表之间的UML关系(Java Supermaket软件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59700252/

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