Programmierstil - Bei Vererbung welchen Typ benutzen?

Status
Nicht offen für weitere Antworten.

dwn8

Mitglied
Hallo,

meine Frage ist: Welchen Typ verwendet man normalerweise, wenn man Objekte von Unterklassen zuweist?
Z.B. erzeuge ich ein eigenes JFrame (MyJFrame) oder ein eigenes TreeModel (MyTreeModel).
Welchem Typ weist man diese Objekte zu, JFrame oder MyJFrame; oder bei dem zweiten Beispiel: TreeModel oder
MyTreeModel.

Ich würde jeweils den "größeren" Typ nehmen, da man dann einfach auch andere Unterklassen dieses Typs benutzen kann.

Gruß
dwn8
 

The_S

Top Contributor
Versteh ich nicht. Wenn du ein MyJFrame benötigst, dann machst du

Code:
MyJFrame frame = new MyJFrame();

wenn du aber ein JFrame benötigst, dann machst du

Code:
JFrame frame = new JFrame();

selbes gilt natürlich auch für dein TreeModel ???:L
 

tfa

Top Contributor
Ich glaube er meint sowas:
Code:
JFrame meinFrame = new MyFrame();
TreeModel meinModel = new MyTreeModel();
Ich würde in der veröffentlichen Schnittstelle (also public oder protected Member) immer den
allgemeinen Typ angeben. In privaten Methoden oder lokalen Variablen ist der Subtyp auch ok.
 

matches

Mitglied
Wenn du es so machst, wie tfa es beschrieben hat, hast du aber folgendes Problem.

Implementierst du in deiner eigenen Klasse MyFrame zusätzliche Methoden, musst du beim Zugriff auf diese immer zuerst einen Cast machen.
 

HLX

Top Contributor
Wenn du es so machst, wie tfa es beschrieben hat, kannst du in der öffentlichen Schnittstellen mehrere Subtypen des allgemeinen Typs verarbeiten. Außerdem kannst den Subtyp durch einen beliebigen anderen Subtyp austauschen ohne die Schnittstelle ändern zu müssen.
 
G

Guest

Gast
HLX hat gesagt.:
Wenn du es so machst, wie tfa es beschrieben hat, kannst du in der öffentlichen Schnittstellen mehrere Subtypen des allgemeinen Typs verarbeiten. Außerdem kannst den Subtyp durch einen beliebigen anderen Subtyp austauschen ohne die Schnittstelle ändern zu müssen.

Ja man könnte dann über die Schnittstellen mehrere Typen verarbeiten, aber solang mehrere Typen nicht vorliegen lohnt es sich nicht. Außerdem sollte die Initialisierung bei diesem vorgehen dann nicht in dieser Klasse erfolgen. Dafür müsste dann ein Builder oder eine Factory verwendet werden. Mehr dynamik bring einem auch nur etwas wenn man sie benutzt, ansonsten ist es besser dem KISS Prinzip zu folgen.
 
G

Gast

Gast
Ich schließe mich TFA an und verdeutliche seine Aussage nochmal:

bei public/protected methoden, sowie bei interfaces die Parameter
-> so allgemein wie möglich, so genau wie nötig.

damit erhöhst du die wahrscheinlichkeit der wiederverwendung!

in private methoden trifft dies nur bedingt zu, denn diese können weder vererbt noch von außerhalb aufgerufen werden, also habe ich hier keinen vorteil eine möglichst allgemeine funktion zu schreiben.. im gegenteil: private methoden sind sehr konkret
 

Marco13

Top Contributor
Ich würde in der veröffentlichen Schnittstelle (also public oder protected Member) immer den allgemeinen Typ angeben.
Im Prinzip stimme ich da zu, aber ... "den allgemeinen" Typ gibt es eben nicht, bzw. "der allgemein(st)e" Typ ist immer ....
Object someMagicObject = new MeinTableModel(); :wink:

Als Faustregel würde ich vielleicht sowas sagen wie "So allgemein wie möglich, aber so konkret wie unbedingt nötig" (oder so :? )

Das "unbedingt" ist dabei ziemlich wichtig - in gewisser Hinsicht besteht ein kleiner Teil der Kunst der Programmierung IMHO darin, diese Bedingungen möglichst "schwach" zu halten. Im Idealfall sollte z.B. das TableModel IMMER NUR als TableModel verwendet werden, und NIE als MeinTableModel. Praktisch sollten die Stellen, an denen wirklich MeinTableModel benötigt wird, damit minimal gehalten werden (oder versteckt, mit der schon angesprochenen Factoy).
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Avalon Programmierstil beim Mocken Java Basics - Anfänger-Themen 45
S Zugriff auf protected Fields = guter Programmierstil? Java Basics - Anfänger-Themen 11
K Sauberer Programmierstil? Java Basics - Anfänger-Themen 3
M Best Practice Programmierstil Graphen-A*-Suche Java Basics - Anfänger-Themen 5
F Erste Schritte Frage zum Programmierstil Java Basics - Anfänger-Themen 11
A OOP Fragen zu Programmierstil Java Basics - Anfänger-Themen 18
I Programmierstil Java Basics - Anfänger-Themen 64
E Richtiger Programmierstil ? Java Basics - Anfänger-Themen 51
M Sind ternäre Operatoren für einen guten Programmierstil wichtig ? Java Basics - Anfänger-Themen 10
M Programmierstil Java Basics - Anfänger-Themen 14
B Frage zu Programmierstil: sollte Hauptklasse nur main enthalten? Java Basics - Anfänger-Themen 6
G Guter Programmierstil? Java Basics - Anfänger-Themen 8
G Guter Programmierstil? Java Basics - Anfänger-Themen 4
Bernasconi Programmierstil / Wann eine neue Datei? Java Basics - Anfänger-Themen 5
K guter Programmierstil Java Basics - Anfänger-Themen 3
C Programmierstil und OOP Java Basics - Anfänger-Themen 7
M Programmierstil Java Basics - Anfänger-Themen 17
D Programmierstil Java Basics - Anfänger-Themen 6
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
1 Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben