Ein Klassendurcheinander

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo Leute,

hab mal eine allgemeine Frage zu Klassen. Ich habe mir ein paar Klassen angelegt. In der einen Klasse habe ich z.B.
nur Array´s angelegt, in einer anderen ein JFrame mit Grundelemnten, wir Größ usw. Ich habe insgesamt 6 Klassen inkl. einer main-Klasse.

Meine Frage ist nun. Ist es wichtig, dass ich eine Vererbungsstruktur einhalte?? Oder kann ich die Klassen, in der nur Daten für mein Projetk enthalten sind sozusagen "parallel" halten, also nichts mit Superklasse oder Subklasse?
Ich könnte dann doch von meheren JFrames auf die Daten in meiner Array-Klasse zugreifen.

Wenn ich eine neue Klasse bilde und möchte gerne ein neues JFrame erzeugen, dann kann ich doch eine Instanz der Klasse bilden in der die Grunddaten für mein JFrame sind ohne extends zu verwenden, wenn ich die andere Klasse importiere??. Aber wenn ich extends verwende besitzt meine neue Klasse, die dann die Subklasse der Klasse mit den Gruddaten für ein JFrame ist, dann brauche ich somit keine neue Instanz zu bilden oder????

Danke schon mal für eure Antwirten,

monet
 

ARadauer

Top Contributor
Ist es wichtig, dass ich eine Vererbungsstruktur einhalte?? Oder kann ich die Klassen, in der nur Daten für mein Projetk enthalten sind sozusagen "parallel" halten, also nichts mit Superklasse oder Subklasse?

natürlich!
du hast zb einen hund der von tier erbt und nebenbei noch ein Frame. wer sagt den dass, das frame von tier oder hund oder irgendwas ausser javax.swing.JFrame (was es sowieso tut) erben muss???


Aber wenn ich extends verwende besitzt meine neue Klasse, die dann die Subklasse der Klasse mit den Gruddaten für ein JFrame ist, dann brauche ich somit keine neue Instanz zu bilden oder????

da verstehst du was falsch, nicht besitzt sondern ist. deine subklasse ist dann ein JFrame. vererbung: ein hund ist ein tier.

wie kommst du darauf vererbung zu benutzen, damit du auf variablen anderer klassen zugreifen kannst?

ich habs jetzt nicht ganz verstanden was du da gemacht hast, aber wenn dein jframe die daten aus deiner arrayklasse benutzen möchte, dann soll sie sie selbst instanzieren oder eine instanz kann ihr von aussen gesetzt werden. aber vererben is der falsche ansatz!!!
 

sliwalker

Top Contributor
Hä?

Du hast nicht nur ein Klassendurcheinander, sondern wohl auch ein Denkdurcheinander :)

Ich glaube Du solltest hier mal nochmal erklären, wie Du das mit den Klassen und der Vererbung verstanden hast. Ich glaube da liegt noch ein Fehler.

Es ist legitim sich Datenklassen zu erstellen, wo Du Deine Daten für das gesamte Programm ablegst. das hat erstmal nichts damit zu tun, ob Du von irgendwo erbst oder nicht.

greetz
SLi
 
G

Guest

Gast
Puhh, erstam ldanke für die schnellen Antworten :)

wie kommst du darauf vererbung zu benutzen, damit du auf variablen anderer klassen zugreifen kannst?

wollte es mal ausprobieren. Warum, das weiss ich auch nicht so ganz... :) ???:L

ich habs jetzt nicht ganz verstanden was du da gemacht hast, aber wenn dein jframe die daten aus deiner arrayklasse benutzen möchte, dann soll sie sie selbst instanzieren oder eine instanz kann ihr von aussen gesetzt werden. aber vererben is der falsche ansatz!!!

Also brauche ich nicht extra noch extends einzufügen, wenn ich eine Instanz einer Klasse erzeugen möchte, die sich aber in einer anderen Klasse befindet. Ich füge einfach das Packet der alten Klasse in die neue Klasse ein wo ich die neue Instanz der alten Klasse gebildet habe.

aber vererben is der falsche ansatz!!!

Wann wäre denn vererben Sinnvoll??

Danke,

monet
 
G

Guest

Gast
Du hast nicht nur ein Klassendurcheinander, sondern wohl auch ein Denkdurcheinander :)

:) manchmal schon.....

Ich glaube Du solltest hier mal nochmal erklären, wie Du das mit den Klassen und der Vererbung verstanden hast. Ich glaube da liegt noch ein Fehler.

Also, wenn ich z.B. eine Klasse Auto /Super-Klasse) erzeuge und z.B. 3 Klassenvariablen instanziere, dann erbt die neue Klasse (SUB-Klasse), die ich z.B. Cabrio nenne und eine Instanz Audi bilde alle Variablen der Super-Klasse.
Sehe ich das richtig???

Es ist legitim sich Datenklassen zu erstellen, wo Du Deine Daten für das gesamte Programm ablegst. das hat erstmal nichts damit zu tun, ob Du von irgendwo erbst oder nicht.

Ich frage mich dann, wozu dann Vererbung noch sinnvoll ist, wenn man so oder so auf verschiedene Klassen durch Instanzen zugreifen kann und die Variablen und Methoden nutzen kann?????
Ich importiere einfach das Package der notwendigen Klasse und zack, fertig... oder nicht????

Danke,

monet
 

ARadauer

Top Contributor
vererbung ist unter anderem sinnvoll wenn du die funktionalität eines objektes erweitern möchtest.
 

sliwalker

Top Contributor
Anonymous hat gesagt.:
Ich glaube Du solltest hier mal nochmal erklären, wie Du das mit den Klassen und der Vererbung verstanden hast. Ich glaube da liegt noch ein Fehler.

Also, wenn ich z.B. eine Klasse Auto /Super-Klasse) erzeuge und z.B. 3 Klassenvariablen instanziere, dann erbt die neue Klasse (SUB-Klasse), die ich z.B. Cabrio nenne und eine Instanz Audi bilde alle Variablen der Super-Klasse.
Sehe ich das richtig???
Das ist richtig. Die Feinabstimmung mit protected usw. lassen wir erstmal aussen vor.
Aber es geht nicht nur um Variablen, sondern auch um Methoden.
So kannst Du eine Klasse Koerper(Geometrie) haben, die die Varaiblen(attribute) int laenge und in breite hat, sowie eine Methode berechneFlaeche().

Dann kannst Du sagen class Quadrat extends Koerper. Setzt die beiden Attribute und rufts einfach berechneFlaeche() auf, ohne sie in Quadrat implementiert haben zu müssen. So vermeidest Du doppelten Code usw.
Die Methode existiert also schon...


Anonymous hat gesagt.:
Es ist legitim sich Datenklassen zu erstellen, wo Du Deine Daten für das gesamte Programm ablegst. das hat erstmal nichts damit zu tun, ob Du von irgendwo erbst oder nicht.

Ich frage mich dann, wozu dann Vererbung noch sinnvoll ist, wenn man so oder so auf verschiedene Klassen durch Instanzen zugreifen kann und die Variablen und Methoden nutzen kann?????
Ich importiere einfach das Package der notwendigen Klasse und zack, fertig... oder nicht????

/sign Vorredner.
als Beispiel:
Du hast jetzt also Koerper und Quadrat erstellt, willst aber nun einen Würfel bauen.
Den könntest Du von Quadrat ableiten und eine zusätzliche Variable "tiefe" einbauen, soie eine Methode berechneVolumen(). Die Methode berechneFlaeche(9 ist ja noch vorhanden, müsste aber "Überschrieben" werden, sprich Du schreibst sie nochmal in Deine neue Klasse, aber mit anderem Quellcode innen drin, nämlich die alte berechnung mal 6 um die fläche eines Würfel zu bekommen.

So kannst Du Code wiederverwenden, was die Fehleranfälligkeit, Lesbarkeit und den Entwicklungsaufwand verringert(in den meisten Fällen:) )



Das Du Dir ein Datenobjekt erstellst, wo die Daten drin stehen und dass an deine ganzen JFrames übergibst, ist architektonisch nicht besonders modern, aber akzeptierbar(für den Anfang). Das nennt man beinahe das MVC Designmuster(Pattern) und bedeutet, dass Du Deine grafischen Geschichten(nämlich das JFrame) von den Daten löst. Sonst müsstest Du ja in Deinem frame Variablen anlegen, die die daten halten. Das ist nicht schön! Dann kannst Du dein Frame nur noch für das eine Programm verwenden, weil Daten und View eng miteinader verbunden sind.

Wie gesagt, für den Anfang kannst Du es so machen, aber ich denke Du wirst dahinter kommen, dass das auch nicht das gelbe vom Ei ist, weil es eben immer noch zu stark verkoppelt ist.

greetz
SLi
 
G

Guest

Gast
Erstmal Danke für eure Hilfe.

Wie es scheint bin ich nicht ganz auf dem falschen Dampfer, wie ich zuerst dachte aber ich habe doch festgestellt, dass mir sehr viel fehlt.
Aber ich habe das Gefühl, dass ich hier gut aufgehoben bin.

Nur manchmal, wenn ich mir hier einige Beiträge anschaue und "Anfänger" schreiben "ich habe gerade mit Java angefangen...oder bin erst vor kurzem eingestiegen...." und dann die Codes sehe, mit "Try... und verschachtelten Methoden, die ich jetzt erst langsam anfange zu verstehen, dann denke ich, eh wie geht denn sowas.

Ich wollte gerne von euch wissen ob ihr in der Richtung auf beruflich tätig seit. Würde mich interessieren.

Aber nochmals Danke,

monet
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben