Super und Unterklassen

comgang

Mitglied
Hallo,
Ich bin gerade dabei ein 2D Koordinatensystem zu programmieren.
Ich habe eine Klasse Koordinatensystem und eine Klasse Koordinate.
Wenn ich eine Instanz vom Koordinatensystem erstelle, muss ich über den Konstruktor die größe übergeben in Reihen und Spalten.
Dadurch werden dann ganz viele Instanzen von Koordinate angelegt und in einer ArrayList gespeichert.
Jetzt habe ich in der Klasse Koordinatensystem die Methoden getLink, getRechts usw. die Methoden geben mir die Instanz der Benachbarten Koordinaten, die möchte ich aber eigentlich nicht in der Klasse Koordinatensystem, sondern in der Klasse Koordinate haben.
Also, dass ich, wenn ich die Instanz von einer Koordinate habe einfach getLinks aufrufen kann und nicht erst wieder die Instanz vom Koordinatensystem brauche, der ich dann die Koordinate geben muss.

Es geht hier nicht um die funktion, das funktioniert alles, es geht nur um das Objektorientierte.

Wenn ich Koordinate als Unterklasse mache, müsste ich den Konstruktor übernehmen, aber es macht ja keinen Sinn, eine Instanz von Koordinate zu erstellen und dadurch ein ganzes Koordinatensystem zu haben.
Aber ich will trotzdem, dass die Koordinate weiß, zu welchem Koordinatensystem sie gehört.
Das ich zum Beispiel dann auch, wenn ich die Instanz einer Koordinate habe, einfach getKoordinatensystem aufrufen kann.

P.S. Ich bin Anfänger :D
 

minzee

Bekanntes Mitglied
Find ich eigentlich nicht gut. So wie ich das sehe, kann eine Koordinate nicht ohne einem Koordinatensystem existieren. Da gibt es eine Abhängigkeit. So was kann man in Java sicher irgendwie schön mit einer inneren Klasse programmieren, oder?
Java:
import java.util.Random;
class KS
{
   class K
   {
      public int x;
      public int y;
      public K(int x, int y)
      {
         this.x = x;
         this.y = y;
      }
      public K left()
      {
         for(int i = 0; i < KS.this.a.length; ++i)
         {
            if(KS.this.a[i].x < x)
            {
               return KS.this.a[i];
            }
         }
         return null;
      }
   }
   public K[] a;
   public KS(int w, int h)
   {
      // irgendwelche Koordinaten setzen:
      Random r = new Random();
      for(int i = 0; i < 30; ++i)
      {
         a[i] = new K(r.nextInt(w), r.nextInt(h));
      }
   }
   public K get(int i)
   {
      return a[i];
   }
}
public class Main
{
   public static void main(String[] args)
   {
      KS ks = new KS(10, 10);
      KS.K kA = ks.get(0);
      KS.K kB = kA.left();
      if(kB != null)
      {
         System.out.println("gefunden: " + kB.x + "/" + kB.y);
      }
      else
      {
         System.out.println("nicht gefunden");
      }
   }
}
Leider kenne ich mich mit inneren Klassen noch überhaupt nicht aus. Das Programm hat noch Fehler. Aber ich glaube, so irgendwie sollte das aussehen.

Falls ihr auch dieser Meinung seid, würde mich das interessieren, wie das Programm richtig aussehen muss :)
 
Zuletzt bearbeitet:

tommysenf

Top Contributor
Find ich eigentlich nicht gut. So wie ich das sehe, kann eine Koordinate nicht ohne einem Koordinatensystem existieren. Da gibt es eine Abhängigkeit.
Falls ihr auch dieser Meinung seid, würde mich das interessieren, wie das Programm richtig aussehen muss :)

Das ganze nennt sich dann eine Komposition und wird über ein Attribut realisiert, welches dem Konstruktor mitgegeben wird und nicht über innere Klassen. Also genau so wie es Thallius beschrieben hat.
 

tommysenf

Top Contributor
Nested classes sollten genutzt werden, wenn sie nicht oder nur über ein Interface nach außen exponiert werden müssen. Ein gutes Beispiel ist die Implementierung von Iteratoren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
mrStudent <? extends T> und <? super T> Java Basics - Anfänger-Themen 1
Say super.methode / super.variable und super(variable) Java Basics - Anfänger-Themen 2
M Super(); Java Basics - Anfänger-Themen 1
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
N extends und super vs new object Java Basics - Anfänger-Themen 4
CptK Vererbung Attributtyp in Super-Klasse noch nicht festlegen Java Basics - Anfänger-Themen 1
B Warum können super() und this() nicht gemeinsam in einem Konstruktor verwendet werden? Java Basics - Anfänger-Themen 7
Queiser Super boolean Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B super vs. this Java Basics - Anfänger-Themen 24
M Was macht super (...)? Java Basics - Anfänger-Themen 1
E Daten dem Super Aufruf übergeben Java Basics - Anfänger-Themen 3
Henri Aufruf von getX() und getY() aus der Super klasse Objekt() Java Basics - Anfänger-Themen 3
N Frage zu this, super und return Java Basics - Anfänger-Themen 13
E this() / super() Java Basics - Anfänger-Themen 7
T super Java Basics - Anfänger-Themen 3
G funktionen der super-klasse von der super-klasse Java Basics - Anfänger-Themen 6
O Vererbung this innerhalb von super Java Basics - Anfänger-Themen 7
X Frage zu Sub/Super Klassen Java Basics - Anfänger-Themen 7
V Vererbung (wie) kann man eine 'super'-Methode auf ein Objekt anwenden ? Java Basics - Anfänger-Themen 6
E Erste Schritte <? super Unterklasse> Return-Typ darf nicht vom Wildcard-Typ sein Java Basics - Anfänger-Themen 5
E Erste Schritte Lower Bounded Wildcards <? super Integer> Java Basics - Anfänger-Themen 1
K Vererbung (super) Java Basics - Anfänger-Themen 2
Avarion Getter von Super-Klasse funktioniert nicht Java Basics - Anfänger-Themen 10
I Verständnisfrage zu BridgePattern, Verwedung von super() Java Basics - Anfänger-Themen 4
llabusch Vererbung Super Konstruktor Java Basics - Anfänger-Themen 5
Z Super einfache Frage For-Schleife im Detail Java Basics - Anfänger-Themen 3
vandread Java Wildcards - Wann super wann extends? Java Basics - Anfänger-Themen 2
A Super Klasse Java Basics - Anfänger-Themen 3
O OOP super aufruf 2 objekte? Java Basics - Anfänger-Themen 3
S super() im Konstruktor Java Basics - Anfänger-Themen 12
L Erste Schritte Super Constructor mit Array - Liste? Java Basics - Anfänger-Themen 15
A Shallow copy .super.clone() Java Basics - Anfänger-Themen 2
P Vererbung super() ohne Parameter Java Basics - Anfänger-Themen 2
D Super und Sub-Klassen Java Basics - Anfänger-Themen 2
D super.tostring Java Basics - Anfänger-Themen 8
A Super-Anweisung in abstrakter Klasse Java Basics - Anfänger-Themen 12
K Überschreiben einer "super.super"-Methode Java Basics - Anfänger-Themen 6
Luk10 super() und this Java Basics - Anfänger-Themen 7
S super() aufruf ausgabe Java Basics - Anfänger-Themen 3
L Frage zu Generics: "super" Java Basics - Anfänger-Themen 16
S super.paint() Java Basics - Anfänger-Themen 4
G Vererbung, Konstruktoranweisungen VOR super() Java Basics - Anfänger-Themen 4
G Variablen initialisieren vor super() Java Basics - Anfänger-Themen 8
H Konstruktoren – super! Java Basics - Anfänger-Themen 3
A Am Buch lesen, nun brauch ich eure Hilfe um mir super() zu erklären Java Basics - Anfänger-Themen 4
J Problem mit super Java Basics - Anfänger-Themen 10
G super operator und incompatible types, simple fehler Java Basics - Anfänger-Themen 8
kulturfenster super.paintComponent(g); Java Basics - Anfänger-Themen 3
J abstrakte klasse und methode super Java Basics - Anfänger-Themen 2
B super methode aufrufen und ergänzen? Java Basics - Anfänger-Themen 5
G Innerhalb von Runnable auf super. zugreifen? Java Basics - Anfänger-Themen 3
X this dynamisch, super statisch? Java Basics - Anfänger-Themen 3
A Frage zu super, abstracte Klassen und Kapselung Java Basics - Anfänger-Themen 3
G frage zu vererbung (super) Java Basics - Anfänger-Themen 10
G super(null) Java Basics - Anfänger-Themen 7
F Der "super" Ausdruck Java Basics - Anfänger-Themen 4
S was macht super() ? Java Basics - Anfänger-Themen 7
J Konstruktor der Oberklasse und super Java Basics - Anfänger-Themen 1
W super.methode Java Basics - Anfänger-Themen 2
G neues String Array in super() übergeben Java Basics - Anfänger-Themen 3
I call to super must be first statement in constructor Java Basics - Anfänger-Themen 3
K java syntax: wofür steht super(screen)? Java Basics - Anfänger-Themen 5
S Verwendung von Super Java Basics - Anfänger-Themen 7
P super an methode übergeben Java Basics - Anfänger-Themen 8
S supertyp steht ohne super in hierachy - eclipse Java Basics - Anfänger-Themen 4
U super-Konstruktor Aufrufen mit Object, dass Exception wirft Java Basics - Anfänger-Themen 2
I Reflection: Suche Feld + in Unterklassen Java Basics - Anfänger-Themen 7
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
G Unterklassen (Klasse für Ausgabe) Java Basics - Anfänger-Themen 4
S getter, setter in abstrakter Klasse oder lieber Unterklassen Java Basics - Anfänger-Themen 4
K Vererbung Auf Methoden von Unterklassen zugreifen Java Basics - Anfänger-Themen 6
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
J Oberklassen / Unterklassen Referenzverwendbarkeiten Java Basics - Anfänger-Themen 3
A Vererbung Oberklassen und Unterklassen Java Basics - Anfänger-Themen 4
S Vererbung Objekte von Ober - und Unterklassen zählen Java Basics - Anfänger-Themen 3
K Vererbung protected NUR für Unterklassen? Java Basics - Anfänger-Themen 17
L Objekte zählen mehrerer Unterklassen Java Basics - Anfänger-Themen 3
B Unterklassen von Exeptions müssen importiert werden ? Java Basics - Anfänger-Themen 3
J Klassen, Unterklassen, Vererbung - Compilerfehler Java Basics - Anfänger-Themen 11
M Unterklassen mit unterschiedlicher Zustandsanzahl Java Basics - Anfänger-Themen 15
F Oberklassen und Unterklassen, Arrayzugriff Java Basics - Anfänger-Themen 4
M Unterklassen Java Basics - Anfänger-Themen 5
B Unterklassen, Packages Java Basics - Anfänger-Themen 3
G abstracte Klassen und deren Unterklassen Java Basics - Anfänger-Themen 10
T Konstruktor bei Unterklassen? Java Basics - Anfänger-Themen 4
G Klassen und Unterklassen Fragen Java Basics - Anfänger-Themen 18
E Zugriff auf unterklassen! Java Basics - Anfänger-Themen 8
E ober und Unterklassen Java Basics - Anfänger-Themen 2
E Unterklassen auf gemeinsame Oberklasse zugreifen Java Basics - Anfänger-Themen 8
J Cast zwischen zwei Unterklassen der selben Oberklasse. Java Basics - Anfänger-Themen 7
G Unterklassen finden Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben