2017-09-10 1 views
-3

Hey Leute, ich brauche Hilfe bei einem Java Projekt, an dem ich gerade arbeite.Java Projekt Ein Array im Array erstellen

Im Prinzip habe ich 5 Klassen Testclass, Gebäude, Haus, Garage, und HouseRooms

  • Ein Gebäude eine Reihe von Etagen, und eine Reihe von Fenstern.
  • Ein Haus ist ein Gebäude.

  • Eine Garage ist ein Gebäude.

  • Ein Raum hat eine Länge, Breite, einen Bodenbelag und eine Reihe von Schränke.

  • Ein Haus hat eine Reihe von Badezimmern und eine Reihe von Zimmern.
  • Ein Haus hat eine Methode, die die durchschnittliche Größe der Räume zurückgibt.
  • Eine Garage kann einige Autos halten, und es kann einen Zementboden oder einen Kiesboden haben.

  • Eine Garage hat eine Länge und eine Breite. (Verwenden Sie die Klasse Raum nicht als Mitglied der Garage Klasse.)

Die Testclass muss eine Arraylist, die ich habe, aber ich bin nicht sicher, wie für jedes Haus eine Reihe von Räumen zu schaffen mit eigenen Objekten. Ich habe versucht, wie Sie in der HouseRooms-Klasse sehen können, aber ich weiß nicht, ob das der beste Weg ist.

image

public class TestClass { 
    public static void main(String[] args) { 
     ArrayList<Building> buildings = new ArrayList(); 
    } 
} 

public class Building { 
    private String buildingType; //House or Garage 
    private int floors; 
    private int windows; 
} 

public class House extends Building { 
    private int bathrooms; 
    private ArrayList<Room> rooms = new ArrayList(); 
} 
class Rooms { 
    private double length; 
    private double width; 
    private String floorCover; 
    private int closets; 
} 

public class Garage extends Building { 
    private int cars; 
    private String floorType; 
    private double length; 
    private double width; 
} 
+1

A Haus ist ein Gebäude, also ist eine Garage, aber ein Zimmer ist kein Haus, also sollte "Raum" 'Haus' nicht verlängern. Ihr kleines Bild zeigt sogar, dass "Raum" 'Objekt' erweitert, nicht' Haus'. --- Wenn ein Haus Zimmer haben sollte, warum haben Sie dann eine separate Klasse mit dem Namen 'HouseRooms' erstellt, anstatt nur' field'' in 'House' einzutragen? – Andreas

+0

Oh, ich verstehe, aber wie würde ich die Zimmer mit House verbinden? Würde ich ein Objekt schaffen, das Gebäude und Zimmer auch erweitert? –

+0

Was meinst du mit * "ein Gebäude mit einem Haus" *? Ein Haus * ist * ein Gebäude. --- Beim Erweitern von Objekten geht es nicht um * Verknüpfen *. Wenn Sie das denken, lesen Sie bitte erneut Ihren Java-Leitfaden. – Andreas

Antwort

0

Sie Aufzählungstyp für buildingType Variable verwenden

public class Building { 
     private BuildingType buildingType; //House or Garage 
     private int floors; 
     private int windows; 

    enum BuildingType{ 
    HOUSE,GARAGE 
    } 

    } 

und Raumklasse sollte nicht verlängern Haus statt Haus sollte Räume wie:

public class House extends Building { 
    private int bathrooms; 
    private ArrayList<Room> rooms = new ArrayList(); 
} 
+0

Ok danke, hätte ich noch eine separate HouseRooms Klasse, oder würde ich alles in House setzen. –

+0

Sie müssen HouseRooms Klasse entfernen, da, wenn Hausklasse scheint öffentlichen Klasse Haus erweitert Gebäude { private int Badezimmer; private ArrayList rooms = new ArrayList(); } das bedeutet Haus hat Zimmer. – gokhanbirincii

+1

, um besser zu verstehen, können Sie diese oop Themen überprüfen (Aggregation Zusammensetzung Assoziation) – gokhanbirincii