2016-11-10 10 views
2

Я делал кучу упражнений, и все это имело смысл, но когда мне пришлось писать код с нуля, я внезапно смутился, если бы кто-нибудь помог мне немного, это было бы здорово.Как вернуть объект из класса, и что именно представляет собой этот объект, когда конструктор создает новый HashMap?

у меня есть:

public class Airplane { 
    private HashMap<String,Integer> plane; 
    public Airplane() { 
    this.plane = new HashMap<String,Integer>(); 
    } 
    public addAirplane(String id, int capacity) { 
    this.plane.put(id,capacity); 


public class Flight { 
    private HashMap<Airplane, List<String>> flight; 
    public Flight() { 
    this.flight = new HashMap<Airplane,List<String>>(); 
    public addFlight(Airplane airplane, String departurePort, String destinationPort) { 
    this.flight.put(airplane, Arrays.asList(departurePort, destinationPort)); 
    } 

Тогда у меня есть еще один класс, где я создаю экземпляры как плоскости и полета,

private Airplane airplane = new Airplane(); 
private Flight flight = new Flight(); 

и по большей части, кажется, работает хорошо, но я не могу выяснить, что я должен получить и добавить здесь.

Я прочитал идентификатор самолета и два кода аэропорта от пользователя, и я хочу сделать что-то вроде этого:

flight.addFlight(//here I have Airplane's name//, departureAirport, destinationAirport); 

Таким образом, в основном два вопроса: 1) Как получить объект «Самолет» при наличии только его имени. 2) Что это за объект «Самолет»? Это HashMap? Это экземпляр HashMap? Есть ли разница, если я попытаюсь передать HashMap вместо Airplane методу flight.addFlight (самолет, строка, строка)?

+3

Вы не используете карты '' Самолет'' и 'Flight' не должны содержать карты. Они должны содержать 'id' и' capacity', которые должны передаваться в конструкторе. Вы действительно хотели бы иметь еще два класса, которые содержат «Map », в том числе 'id' является уникальным. Там вы хотите хранить экземпляры «Самолет» и «Полет». – SomeJavaGuy

+1

Ваш код не имеет смысла. Он прерывается в середине метода, а затем начинает определять класс. Не могли бы вы разместить менее фрагментарный код, если вы отправляете код, пожалуйста? – khelwood

+0

@khelwood Я усекал его, как я уже говорил, код действительно работает –

ответ

0

Хорошо, я попытаюсь объяснить, чего вы хотели достичь. Просто проверьте, действительно ли это то, что вы действительно хотели.

Скажите, что вы хотите разработать приложение для аэропорта. Давайте сделаем это очень просто в этот момент времени. Вы можете продлить его позже для своих собственных случаев использования.

Начнем разработку вашего приложения.

Каждый Airport имеет Flights и имеет возможности для работы на этих рейсах. Следовательно, простой дизайн класс аэропорта и полета и связанных с ними объектов, как показано ниже:

public class Airport { 
    private List<Flight> allFlights; 

    public List<Flight> getAllFlights() { 
     return allFlights; 
    } 

    public void setAllFlights(List<Flight> allFlights) { 
     this.allFlights = allFlights; 
    } 

    /** 
    * Add flights 
    * @param flight 
    */ 
    public void addFlights(Flight flight){ 
     allFlights.add(flight); 
    } 

    /** 
    * Delete flights 
    * @param flight 
    */ 
    public void deleteFlight(Flight flight){ 
     for(Flight eachFlight : allFlights){ 
      if(eachFlight.equals(flight)){ 
       allFlights.remove(eachFlight); 
       break; 
      } 
     } 
    } 

    /** 
    * Update specific flight info. 
    * 
    * @param flightId 
    * @param airplane 
    * @param source 
    * @param destination 
    * @return 
    */ 
    public boolean updateFlight(long flightId, Airplane airplane, String source, String destination){ 
     boolean isUpdated = false; 
     for(Flight eachFlight : allFlights){ 
      if(eachFlight.getFlightId() == flightId){ 
       eachFlight.setAirplane(airplane); 
       eachFlight.setSourceName(source); 
       eachFlight.setDestinationName(destination); 
       isUpdated = true; 
       break; 
      } 
     } 
     return isUpdated; 
    } 
} 

Каждый Flight имеет Airplane вместе с источником и пунктом назначения полета и самолет просто Plain Old Java Objects (POJO),

public class Flight { 
    private long flightId; 
    private Airplane airplane; 
    private String sourceName; 
    private String destinationName; 

    public long getFlightId() { 
     return flightId; 
    } 

    public void setFlightId(long flightId) { 
     this.flightId = flightId; 
    } 

    public Airplane getAirplane() { 
     return airplane; 
    } 

    public void setAirplane(Airplane airplane) { 
     this.airplane = airplane; 
    } 

    public String getSourceName() { 
     return sourceName; 
    } 

    public void setSourceName(String sourceName) { 
     this.sourceName = sourceName; 
    } 

    public String getDestinationName() { 
     return destinationName; 
    } 

    public void setDestinationName(String destinationName) { 
     this.destinationName = destinationName; 
    } 

    //Override equals method 
} 

public class Airplane { 
    private long id; 
    private String make; 
    private String airlinesCompany; 

    public Airplane(long id, String make, String airlinesCompany) { 
     this.id = id; 
     this.make = make; 
     this.airlinesCompany = airlinesCompany; 
    } 

    public long getId() { 
     return id; 
    } 

    public String getMake() { 
     return make; 
    } 

    public String getAirlinesCompany() { 
     return airlinesCompany; 
    } 
} 

Надеюсь, что этот проект очистит вашу идею.

 Смежные вопросы

  • Нет связанных вопросов^_^