简体   繁体   English

如何在Java的新类中创建特定类型的属性?

[英]How to create an attribute of a specific type in a new class in java?

I'm a Java Newbie and my Task is to create a taxi project with driver, passengers, seats and so on... 我是Java新手,我的任务是创建一个包含驾驶员,乘客,座位等的出租车项目。

I am stuck in this point: Create a class called Taxi which represents a taxi. 我坚持这一点:创建一个称为出租车的类,它代表出租车。 Because every taxi has a driver, every Taxi object should have a driver attribute (of type Human). 因为每个出租车都有驾驶员,所以每个Taxi对象都应具有驾驶员属性(人类类型)。 Additionally, the Taxi can have passengers who are also represented by Human objects. 此外,出租车可以有也由人为对象代表的乘客。

My already existing code: 我已经存在的代码:

public class Main {

public static void main(String[] args){

    Human human1 = new Human("Max", "Mustermann");

    // System.out.println(human1.getForename() + " " + human1.getName());
    System.out.println("This is " + human1 + ".");

    Taxi taxi1 = new Taxi();

    Human driver1 = new
}

}

public class Human {

private String name;
public String forename;

public Human(String forename, String name){
    this.name = name;
    this.forename = forename;
}

public String getName(){
    return name;
}

public String getForename(){
    return forename;
}

public String toString(){
    return this.forename + " " + this.name;
}
}




public class Taxi {


}

How to create driver and passengers of type human in the class Taxi? 如何在出租车类中创建人类类型的驾驶员和乘客?

Thank you. 谢谢。

Try something like: 尝试类似:

public class Taxi {
    private Human driver;//Taxi has a driver
    public Taxi(Human driver) {
        this.driver = driver;
    }
}

// in main
Taxi taxi = new Taxi(human1);//pass that driver in constructor

I think that you should avoid mixing Human and Taxi concepts in your classes. 我认为您应该避免在课堂上混用HumanTaxi概念。
Human is really too broad. Human真的太宽泛了。 This is fine for biology or philosophy model domain not for taxi model domain. 这对于生物学或哲学模型领域而不是对于出租车模型领域来说是很好的。
You have some drivers ? 你有司机吗? Create a Driver class. 创建一个驱动程序类。
You have some passengers ? 你有乘客吗? Create a Person or a Passenger class. 创建一个人或一个乘客舱。

Separating concepts allow to settle things as the domain is. 分离的概念允许按领域来解决问题。

Then provide methods in Taxi to fulfill your requirements : 然后在出租车上提供满足您要求的方法:

  • having a driver 有司机
  • adding/removing passengers 增加/减少乘客

For example : 例如 :

public class Taxi {
    private Driver driver;
    private List<Passenger> passengers = new ArrayList<>();

    public Taxi(Driver driver) {
        this.driver = driver;
    }

    public addPassenger(Passenger passenger){
        this.passengers.add(passenger);
    }

    public removePassenger(Passenger passenger){
        this.passengers.remove(passenger);
    }
}

Here the Taxi instance may only be "driven" by a Driver instance and it may "accept" only Passenger instances. 在这里,出租车实例只能由Driver实例“驱动”,并且可以仅“接受” Passenger实例。
If you have only the Human class, you are stuck as anybody may drive a taxi. 如果您只有Human班级,那么您就会陷入困境,因为任何人都可能会开出租车。

If the Driver may also be a Passenger, you may replace the Passenger class by a Person class. 如果驾驶员也可能是乘客,则可以用“人”类代替“乘客”类。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM