当前位置: 首页 > 知识库问答 >
问题:

如何使用Java OOP概念对这种关系建模

孟凯泽
2023-03-14

我有这个条件(物业租金制度,租金按每晚计算)

  1. 所有者有一个或多个属性。属性有描述价格is占用属性。
  2. 房源可以是:酒店(有3种房型),公寓/公寓,寄宿家庭的房子。
  3. 通过注册表功能,客户可以订购在特定日期可用的一个或多个属性。

以下是注册表功能的预定义条件:

  1. 系统中有2个注册所有者和客户
  2. 业主1拥有10间酒店客房(标准型),每晚30美元,3间酒店客房(套房型),每晚60美元
  3. 业主2拥有3套公寓,每晚70美元,5套寄宿家庭住房,每晚20美元
  4. 客户可以在特定日期租用一个或多个所有者的财产

为了建模属性,我使用继承概念。现在,它看起来像这样。Property.java

public class Property {
    private String description;
    private int propertyPrice;
    private String ownerName; // should it be here? or should it be made in another class?
    private boolean isOccupied;

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public int getPropertyPrice() {
        return propertyPrice;
    }

    public void setPropertyPrice(int propertyPrice) {
        this.propertyPrice = propertyPrice;
    }
}

酒店JAVA

public class Hotel extends Property {
    private String[] roomType;
    private int[] roomCount;
    
    public Hotel(){
        this.roomType = new String[]{"Standard", "Deluxe", "Suite"};
        this.roomCount = new int[]{0, 0, 0};
    }

    public String[] getRoomType() {
        return roomType;
    }

    public void setRoomType(String[] roomType) {
        this.roomType = roomType;
    }

    public int[] getRoomCount() {
        return roomCount;
    }

    public void setRoomCount(int[] roomCount) {
        this.roomCount = roomCount;
    }    
}

一个partment.java

public class Apartment extends Property {
    private int roomCount;

    public int getRoomCount() {
        return roomCount;
    }

    public void setRoomCount(int roomCount) {
        this.roomCount = roomCount;
    }
}

家庭寄宿JAVA

public class HomestayRoom extends Property {
    private String parentName; 

    public String getParentName() {
        return parentName;
    }

    public void setParentName(String parentName) {
        this.parentName = parentName;
    }
}

让我困惑的是,我如何定义注册表的预定义条件来模拟所有者-属性关系?我应该在另一节课上成为主人吗?如果是,我如何将物业与其所有者联系起来?

共有1个答案

卢健
2023-03-14

您所做的大多数操作都是正确的,但也可以有一个属性类型enum

public enum PropertyType{
    HOTEL,APARTMENT,HOMESTAY
}

现在你是超级阶级了

public class Property {
    private String description;
    private int propertyPrice;
    private String ownerName;
    private boolean isOccupied;
    private PropertyType pt;
    ....
    }

酒店的建造师是

public Hotel(){
        this.roomType = new String[]{"Standard", "Deluxe", "Suite"};
        this.roomCount = new int[]{0, 0, 0};
        super(PropertyType.HOTEL);
    }

类似地,您可以为HomestayApartment设置构造函数,并添加额外的超级(属性类型。HOMESTAY)超级(属性类型。公寓)分别。

 类似资料:
  • 关系模型可以表示为包含列和行的表,每一行都称为元组。 列的每个表都有一个名称或属性。 域 - 包含属性可以采用的一组原子值。 属性 - 包含特定表中列的名称。每个属性必须有一个域。 关系实例 - 在关系数据库系统中,关系实例由一组有限的元组表示。关系实例没有重复的元组。 关系模式 - 关系模式包含所有列或属性的关系名称和名称。 关系键 - 在关系键中,每行都有一个或多个属性。它可以唯一地标识关系中

  • 我有两个共享一个公共键的表。我想要的是,当我加载第一个表的类时,我还会得到对应于第二个表的类的列表,它们在第二个表中共享键。 更具体地说:tableA有一个id(id1),它存在于tableB的多个条目中。但是,tableB使用复合键并使用id1和id2作为键。 我想实现的是,当加载表A的POJO时,我还会得到表B的所有条目,其中表A中的id1等于表B中的id1。

  • 我正在学习冬眠,只是有点困惑。

  • 我有一个简单的和可能。老生常谈的问题。我正在研究实体关系图的第一个概念阶段。 这个DABMS将被一些管理人员使用,这些管理人员将控制(注册和修改帐户)客户。 在我的关系图中,我有两个实体“Manager”和“Customer”。是否有必要将它们与一个关系(M:N)联系起来,以指定管理者是那些将管理客户帐户的人,或者这种关系是不必要的?

  • 若要添加一个关系,点击工具栏的 “关系”按钮,并拖放子实体到父实体。若要显示或隐藏链接的名标签,简单地在属性窗格中勾选或取消勾选“显示名”选项。 当你移动滑鼠到一个关系连接器时,父和子实体的边界会分别变为绿色和蓝色。 在画布中关系对象的弹出菜单选项包括: 选项 描述 基数在 实体名1 设置基数在实体名1:无、唯一、多个、一或多个、零或一个、零或多个。 基数在 实体名2 设置基数在实体名2:无、唯一

  • 若要添加一个关系,点击工具栏的 “关系”按钮,并拖放子实体到父实体。若要显示或隐藏链接的名标签,简单地在属性窗格中勾选或取消勾选“显示名”选项。 当你移动滑鼠到一个关系连接器时,父和子实体的边界会分别变为绿色和蓝色。 在画布中关系对象的弹出式菜单选项包括: 选项 描述 基数在 实体名1 设置基数在实体名1:无、唯一、多个、一或多个、零或一个、零或多个。 基数在 实体名2 设置基数在实体名2:无、唯