java - 如何在舱位内仅容纳多名乘客?

标签 java oop

我的类(class)中有三门课。 Ship.javaCabin.javaPassenger.java。根据该计划,单个客舱最多只能容纳 3 名乘客。但我一直不知道如何做到这一点。我在我的 Ship.java 类中创建了一个小屋对象数组。我只能使用下面提到的 addCustomer 方法将一名乘客添加到客舱

Cabin[] cruiseShip = new Cabin[12];
for (int i = 0; i < cruiseShip.length; i++) {
    cruiseShip[i] = new Cabin();
}

public static void addCustomer(Cabin[] cruiseShip, String firstName, String surName, int expenses, int cabinNumber){
    if (cruiseShip[cabinNumber].getCabinName().equals("empty")){
        cruiseShip[cabinNumber].setFirstName(firstName);
        cruiseShip[cabinNumber].setSurName(surName);
        cruiseShip[cabinNumber].setExpenses(expenses);
        cruiseShip[cabinNumber].setCabinName("not empty");

        System.out.println("Cabin number " + cruiseShip[cabinNumber].getCabinNumber() + " is occupied by " + cruiseShip[cabinNumber].getFirstName() + " " + cruiseShip[cabinNumber].getSurName() );
    }
}

这就是Cabin.java的样子:

public class Cabin extends Passenger {
    int cabinNumber;
    String cabinName;

    public String getCabinName() {
        return cabinName;
    }

    public void setCabinName(String cabinName) {
        this.cabinName = cabinName;
    }

    public int getCabinNumber() {
        return cabinNumber;
    }

    public void setCabinNumber(int cabinNumber) {
        this.cabinNumber = cabinNumber;
    }
}

这就是 Passenger.java 的外观:

public class Passenger {
    String firstName;
    String surName;
    int expenses;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getSurName() {
        return surName;
    }

    public void setSurName(String surName) {
        this.surName = surName;
    }

    public int getExpenses() {
        return expenses;
    }

    public void setExpenses(int expenses) {
        this.expenses = expenses;
    }
}

最佳答案

Cabin应该包含一个容纳乘客的数据结构。(关联 1-n,来自 1_cabin-N_passengers)您还可以限制数量。与客舱类型相关的乘客数量(最多 2-3-n 名乘客),并检查在特定时间内不要在同一客舱中添加 n 次相同的乘客。与 Ship 相同的逻辑其中有Cabins .

class Cabin
{
  ... etc ... as u did 
  List<Passenger> listP = new ArrayList<Passenger>();
}
listP.add(new Passenger(...));

class Ship
{
   ...
   List<Cabin> listC = new ArrayList<Cabin>();
}
listC.add(new Cabin(...));
//get a specific cabin from the ship and add a new Passenger
//note maybe it's better to do your custom methods for add,get_Ship, Cabin (based on the requiremts). 
//Standard List Methods usually do not fit exactly custom requirements, so need to be enhanced 
ship.getlistC().get(i_specificCabin).listP.add(new Passenger(...)); 

小心不要混淆语义,思考现实世界中事物是如何工作的(参见@Jim Garrison)。

注意:也许是Map<String/Integer,CustomObject>非常适合基于 key(id) 的轻松访问。

关于java - 如何在舱位内仅容纳多名乘客?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71491781/

相关文章:

java - 如何在Windows 7中以管理员身份复制

java - setBounds 宽度值将宽度设置为最小值?

java - 带有 GWT 的 App Engine 模块

java - 从父类访问子类是否被视为反模式

java - Java 中的 'this' 关键字

java - 我使用数组编译 java 彩票程序时出现 2 个错误

java - 将字符转换为其二进制值

javascript - javascript中的oop将dom元素绑定(bind)到对象

在 Base 类中声明的 C# 接口(interface)方法不需要在 Derived 类中再次实现

java - 调用基于 Spring 的 Web 服务的客户端架构