使用另一个类创建类

时间:2016-02-27 11:56:04

标签: java

我决定编写我的第一个Java Program-HotelPRO 。课程如下:

call(...)

所以基本上我用roomNumber创建了一个房间,如果它被占用了。 客户想要有一个名字,PESEL(波兰id)和一个房间(应该是Room类的构造函数?所以所有的客户都会有一个房间(默认为0表示没有房间))。你能告诉我怎么做吗?我很确定我的代码是错误的。

2 个答案:

答案 0 :(得分:0)

最简单的方法是向Customer类添加一个构造函数,它将接收三个参数:

Customer( String name, int PESEL, Room room) {... }

这是因为当您定义新客户时,您将分配到您在酒店已经拥有的房间(未被占用),因此您应该从您拥有的房间列表中为他分配一个未占用的房间。

为了使代码更加健壮,您可以在构造函数中引入一个检查,以查看作为参数接收的房间对象是否未被占用,然后再将其分配给客户。如果它被占用只是提出异常,因为客户不能被放入占用的房间。

如果Room参数为null,则表示您只需注册想要预订的客户,而您可能没有房间号。但是,具有取决于空值的逻辑之王并不是很好。最好只是设置一个不同的类来模拟预订,而Customer类只会引用实际拥有房间的客户。

答案 1 :(得分:0)

从您的评论中,我了解到您需要Customer的构造函数。这是一个:

public class Customer {
    String name;
    int PESEL;
    Room room;

    // constructor for Customer with a room argument
    Customer(String name,int PESEL, Room room) {
        this.name=name;
        this.PESEL=PESEL;
        this.room = room;
        }
    }

    // constructor for Customer with a default room, though impractical :)
    Customer(String name,int PESEL) {
        this.name=name;
        this.PESEL=PESEL;
        this.room = new Room(0);
    }
}

根据传递给Customer的参数,调用正确的构造函数。例如,要创建分配了Customer的{​​{1}}对象,您可以执行以下操作:

Room

要创建默认房间为0的客户,您可以执行以下操作:

Room room = new Room(139);
Customer c = new Customer("Customer1", 10, room);