OO, Konstruktor, abstrakte Methoden

Status
Nicht offen für weitere Antworten.

Torsten77D

Mitglied
Hallo, ich habe bisher nur geringeb Java-Kenntnisse, obwohl ich schon ein Semester Informatik hinter mir habe. Bis jetzt ist mir z.B. die Sache mit dem Konstruktor ein Rätsel. Ebenso Interface und abstrakte Methoden. Die Übungen in der Uni habe mich absolut nicht weitergebracht. Wie soll man eine Übung lösen, wenn man nichts versteht, da beißt sich die Katze in den Schwanz. Die Erklärungen in diversen Büchern sind ebenfalls unzureichend. Das Problem ist, das die Erklärungen nur Leute verstehen, die eigentlich keine mehr brauchen, unerfahrene bleiben auf der Strecke. Kennt vielleicht jemand entsprechende Seiten im Netz, die das ganze Schritt für Schritt auch wirklich erklären, nicht nur umreißen, so dass man das Ganze auch wirklich nachvollziehen kann ?

Danke im Voraus,
Torsten
 

Noctarius

Top Contributor
Zu allen 3 Themengebieten sollte dir die Suchfunktion ausgiebige Erklärungen und Diskussionen hervor bringen :)
 

Torsten77D

Mitglied
Wie ich festgestellt habe, bin ich nicht alleine. Es traut sich nur nie einer, was zu sagen. Wenn einer in der Übung sagt, das er nichts verteht, folgen urplötzlich 3-4 andere. Gibt es keine Möglichkeit, irgendwo an detaillierte Erklärungen zu kommen ?
 

Illuvatar

Top Contributor
Die Javainsel soll unverständlich sein? Sorry aber das kann ich jetzt so doch nicht stehen lassen. Soweit ich weiß gibts eine Menge Leute hier, die Java anhand von dem Buch autodidaktisch gelernt haben. (Bei mir war es www.javabuch.de - Das Handbuch der Java-Programmierung)

Ich vermute eher, du hast dich irgendwo verrannt / einen Knoten im Kopf - was ja nicht schlimm ist. Wenn du uns sagst, wo du in der Insel (bzw. einem anderen Buch) mit dem Verständnis nicht weiterkommst, kannst du das ja auch schreiben - dann können wir versuchen den Teil nochmal zu erklären. In der Insel dürften Kapitel 3 und 6 bis 7 oder evtl. bis 9 die interessanten für dich sein. Es wird aber kaum jemand hier versuchen, nochmal alles zu erklären - zumal das vermutlich keiner besser als in den etablierten Büchern schaffen wird.
 

DarXun

Aktives Mitglied
Wir haben in der Schule "Java lernen mit BlueJ" benutzt.
Einige werden davon wohlmöglich nicht allzuviel halten, aber für Anfänger der OOP ist es wirklich gut, wie ich finde.

Dort ist wirklich alles nötige anfängergerecht erklärt.
Auch fortgeschrittene Themen finden sich teilweise wieder.

Sachen von denen ich vorher noch nie gehört hab, wie z.B. "Kopplung", "Kohäsion" usw.
Naja okay... vorher hab ich auch noch nie objektorientiert progammiert.


MfG,

DarXun
 

Torsten77D

Mitglied
Ich erwarte ja nicht, das ich hier jetzt alles nochmal erklärt bekomme. Ich wollte ja nur wissen, ob mir jemand eine weitere Quelle nennen kann, die besser erklärt, was passiert und wozu. Die etablierten Bücher :rtfm: versuchen chinesisch auf chinesisch zu erklären. Als völlig Unerfahrener findet man da keinen Einstieg, wie gesagt, ich bin nicht der einzige.
Aber was solls, ich packe die Klausur sowieso nicht, also kann ich das ganze nochmal in Ruhe wiederholen.

Danke
 

Landei

Top Contributor
Mal eine kurze Einführung

Was eine Klasse ist, sollte ungefähr klar sein, man könnte sie als einen "Bauplan" für eine bestimmte Art von Objekten ansehen. Objekte sind sinnvolle Einheiten von Daten (andere Objekte und - in Sprachen wie C++ und Java - primitive Typen) und Verhalten (Methoden).

Konstruktor: Konstruktoren sind eine besondere Art von "Methoden" zur Erzeugung von Objekten. Man kann sie nicht an einem Objekt aufrufen, denn man hat ja noch keins, sondern will erst eins erzeugen. Außerdem muss ja erst einmal Speicher für das Objekt reserviert werden. In "altmodischen" Sprachen musste man das selber tun (etwa mit der Funktion malloc() in C). Moderne Sprachen "wissen" anhand der Klassendefinition, welcher Speicher benörigt wird und reservieren ihn automatisch. Damit ist das neue Objekt aber noch nicht "fertig", es müssen erst einmal sinnvolle Werte gesetzt werden, und das macht man im Konstruktor. Danach wird das Objekt "betriebsbereit" zurückgegeben. Für Konstruktoren gelten im Gegensatz zu den Methoden einige Sonderregeln, z.B. dass sie nicht vererbt werden.

Interface: Sprachen wie C++ haben mit Mehrfachvererbung herumexperimentiert, ein Amphibienfahrzeug konnte also die Eigenschaften von Schiff und Auto erben. Hört sich gut an, führte aber in der Praxis zu Problemen. Java hat deshalb Einfachvererbung (nur eine Elternklasse). Diese Vererbunghierarchie ist aber wiederum zu starr: Oft wünschte man sich sagen zu können: Die Klasse erbt von dieser Klasse und kann aber auch das und das. Diese "Befähigungsnachweise" oder auch "Garantien" nennt man Interfaces. Wenn eine Klasse ein Interface "implementiert" heißt das, dass die Objekte der Klasse die im Interface angegeben Methoden besitzen. Beispiel Comparable: Egal, in welcher Vererbungshierarchie man gerade ist, wenn eine Klasse sagt, dass sie Comparable implementiert, sichert sie zu, dass ihre Objekte eine compareTo-Methode besitzen (so, wie im Interface Comparable spezifiziert), mit der sie untereinander verglichen werden können. Jetzt kann man z.B. eine Methode zum Sortieren von Listen schreiben, der völlig egal ist, welche Klasse die Listenelemente haben: Elefanten, komplexe Zahlen, chemische Elemente... solange diese Klassen nur das Interface Comparable implementieren, und demnach eine compareTo Methode besitzen, denn das ist alles, was zum Sortieren nötig ist. Wie diese compareTo-Methode definiert ist, ist Sache der Klassen (Elefanten vergleicht man sicher anders als komplexe Zahlen), aber für das funktionieren der Sortierung ist das irrelevant.

Abstrakte Methoden: Wenn man Fälle hat, wo man weiß, dass es bestimmte Methoden "gibt" und was sie "bedeuten", aber man noch keine konkrete Implementierung bereitstellen kann. Etwa in der Mathematik, wo es abstrakte Gebilde wie Gruppen, Ringe und Körper gibt. Ein Ring ist z.B. eine Struktur, auf der zwei Operationen "Addition" und "Multiplikation" definiert sind. Wie die Operationen aussehen, weiß ich nicht, ich kann aber trotzdem eine Klasse Ring mit den abstrakten Methoden "plus" und "mal" schreiben und basierend auf diesen "noch nicht definierten" Methoden bereits andere Funktionalität bereitstellen z.B. könnte ich bereits Potenzieren auf Basis wiederholter Multiplikation definieren. Wenn ich nun konkrete Unterklassen von "Ring" bilde, etwa natürliche Zahlen, komplexe Zahlen, quadratische Matrizen oder Polynome, kann ich dort jeweils die Definitionen für plus und mal "nachliefern". Das in "Ring" bereits definierte Potenzieren usw. stände dann sofort zur Verfügung (es muss also nicht in jeder Klasse einzeln programmiert werden). Abstrakte Methoden ähneln ein wenig Interfaces, auch sie geben eine "Garantie": "Ich habe zwar noch keine konkrete Definition, aber so wird die Methode später mal heißen, die und die Argumente besitzen und das und das zurückliefern".
 

0x7F800000

Top Contributor
Die Javainsel soll unverständlich sein? Sorry aber das kann ich jetzt so doch nicht stehen lassen. Soweit ich weiß gibts eine Menge Leute hier, die Java anhand von dem Buch autodidaktisch gelernt haben
fullack. Das Buch setzt keinerlei Vorkenntnisse voraus, wie auch immer geartete "Allgemeinbildung" nützt da einem auch nichts, auf andere Literatur wird dort nirgends verwiesen. Alles wird komplett "from scratch" erklärt. Wie man neulich auf manch so einem Nachrichtensender gesehen hat, kommen damit auch elfjährige Autodidakten klar (ich meine den kleinen Typie, der irgendwelchen GPS-Kram für sein handy in Java gebastelt hat... :eek:).

Wenn man also an der Uni ist, und damit nicht klarkommt, dann kann es entweder daran liegen, dass man aus irgendwelchen motivationstechnischen Gründen während des Semesters paar tausend Zeilen Code zu wenig geschrieben hat, oder es liegt daran, dass man zu dem Teil der Bevölkerung gehört, die trotz der ganzen Mühe kein Gefühl für Programme entwickeln können, weil das Gehirn irgendwie prinzipiell anders funktioniert, als es in der Informatik benötigt wird. Leute sind halt verschieden, manchen liegt's mehr, manchen weniger...

Aber sowas zu sagen:
ist echt nicht in Ordnung. Okay, das Büchlein ist vom Format her halt ziemlich groß, aber es wurde ja schon gesagt, dass man das Intro überspringen kann, und dann nur ~400 Seiten über die grundlegendsten Sachen durchblättern muss. Die anderen 1000 Seiten sind zu speziellen Themen, die werden erst dann aufgeschlagen, wenn sie wirklich in einer konkreten Anwendung benötigt werden.
Das ist schließlich Uni. Da gibt's keine Lehrbücher im Comicheft-Format mehr. Und Insel ist noch mit Abstand das Harmloseste, was man während eines Studiums zur Gesicht bekommt, da muss man halt einfach durch...
 

Noctarius

Top Contributor
Ansonsten kann ich wie immer nur auf Java von Kopf bis Fuß verweisen, wer da noch sagt "die Erlärungen sind unverständlich" dem kann vermutlich wirklich nicht mehr geholfen werden und ich würde 0x7F800000 zustimmen, dann ist Informatik vermutlich das falsche Themengebiet für dich und du solltest vielleicht den Studiengang wechseln bevor du noch viel viel Zeit "verplemmperst".
Das ist nicht böse gemeint, aber genau so wie man nicht allen Menschen malen oder zeichnen beibringen kann ist nicht jeder Mensch für Programmieren geeignet.
 

icarus2

Top Contributor
Ich schliesse mich Noctarius an mit dem Buch "Java von Kopf bis Fuss". Alles wird mit sehr vielen Beispielen erklärt und obwohl ich schon die meiste Theorie von dem Buch kannte hatte ich doch ständig einen "aha-Effekt".

Und ansonsten: Solche Konzepte versteht man nicht manchmal nicht von heute auf morgen. Ich hatte oftmals wenn ich etwas fremden Code angesehen habe plötzlich eine neue Möglichkeit entdeckt wie man etwas verwenden kann. Zu Beginn waren mir z.B. Interfaces auch ein Rätsel... oder abstrakte Methoden ergaben für mich überhaupt keinen Sinn. Doch mit der Zeit kommt das dann schon ;-)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Abstrakte Klasse: Konstruktor vs init() Java Basics - Anfänger-Themen 13
W Null-Pointer trotz Konstruktor? Java Basics - Anfänger-Themen 9
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
T Schlüsselworte Schlüsselwort this im Konstruktor Java Basics - Anfänger-Themen 3
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
J Konstruktor Java Basics - Anfänger-Themen 18
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
G Welche Attribute kommen in den Konstruktor? Java Basics - Anfänger-Themen 5
M wird der Konstruktor nicht als 1. ausgeführt? Java Basics - Anfänger-Themen 13
G Konstruktor und update Java Basics - Anfänger-Themen 4
K Kopier-Konstruktor Java Basics - Anfänger-Themen 6
S Default Konstruktor Java Basics - Anfänger-Themen 7
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
J Vier gewinnt in Java,Spieler Konstruktor Java Basics - Anfänger-Themen 8
kxrdelis Konstruktor für ein Rechtwinkliges Dreieck Java Basics - Anfänger-Themen 10
Zeppi OOP Bruch kürzen im Konstruktor Java Basics - Anfänger-Themen 2
HorstSchröder Konstruktor mit Initialwert Java Basics - Anfänger-Themen 1
C Konstruktor ab serialisiertem Objekt Java Basics - Anfänger-Themen 4
J Input/Output Konstruktor ergänzen, der zur Datei mit einem Objekt passt Java Basics - Anfänger-Themen 0
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
B Konstruktor mit Array als Parameter Java Basics - Anfänger-Themen 3
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
C Interface und Konstruktor Java Basics - Anfänger-Themen 1
H Generische Konstruktor Java Basics - Anfänger-Themen 12
MiMa Seltsames Verhalten im Konstruktor Java Basics - Anfänger-Themen 6
S Konstruktor passt nicht zum Rest Java Basics - Anfänger-Themen 11
C Unbekannter "Konstruktor"?? Java Basics - Anfänger-Themen 10
W OOP Warenlager mit Array(Konstruktor, Methoden) Java Basics - Anfänger-Themen 39
R Objekt in Konstruktor ist nicht zulässig Java Basics - Anfänger-Themen 5
A Mit einer Methode den Konstruktor aufrufen? Java Basics - Anfänger-Themen 2
B Warum können super() und this() nicht gemeinsam in einem Konstruktor verwendet werden? Java Basics - Anfänger-Themen 7
K Konstruktor für ein Objekt mit Zugriffsmethoden Java Basics - Anfänger-Themen 7
H Unterschied Konstruktor und Klassenname x = new Klassenname; Java Basics - Anfänger-Themen 3
B Klassen Array Parameter im Konstruktor? Java Basics - Anfänger-Themen 4
E Konstruktor mit Methode Java Basics - Anfänger-Themen 7
E ArithmeticException im Konstruktor Java Basics - Anfänger-Themen 4
S Konstruktor, Objekte Java Basics - Anfänger-Themen 4
F Konstruktor richtig implementiert? Frage zu Benutzereingaben... Java Basics - Anfänger-Themen 9
W Typecastin im Konstruktor? Java Basics - Anfänger-Themen 2
A Variablen Variablenwert über Konstruktor ändern Java Basics - Anfänger-Themen 3
F Arrays im Konstruktor Java Basics - Anfänger-Themen 5
C Konstruktor mit und ohne Parameterliste Java Basics - Anfänger-Themen 13
L Instanzvariablen, Veerbung, Konstruktor Java Basics - Anfänger-Themen 32
E Best Practice Konstruktor mit bestehender Intanz der gleichen Klasse aufrufen Java Basics - Anfänger-Themen 4
E Plausibilitätsprüfung in dem Konstruktor mit Ausnahmebehandlung Java Basics - Anfänger-Themen 8
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 7
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 0
D Compiler-Fehler Konstruktor von Superklasse übernehmen Java Basics - Anfänger-Themen 1
P Counter im Konstruktor Java Basics - Anfänger-Themen 11
J toString-Methode in Verbindung mit varArgs-Konstruktor Java Basics - Anfänger-Themen 18
I Einträge in den Konstruktor Java Basics - Anfänger-Themen 3
Aprendiendo [JAVA-Syntax] (int... variable) bei einem Konstruktor Java Basics - Anfänger-Themen 8
J Superklassen Konstruktor Verständnisfrage Java Basics - Anfänger-Themen 1
G Int-Array im Konstruktor Parameter Java Basics - Anfänger-Themen 37
T Datentypen Warum mit Konstruktor Objektvariablen initalisieren? Java Basics - Anfänger-Themen 19
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
P Konstruktor. Java Basics - Anfänger-Themen 4
D Best Practice Objekt automatisch im Konstruktor füllen? Java Basics - Anfänger-Themen 9
D Objekt oder Konstruktor Java Basics - Anfänger-Themen 2
F Java default Konstruktor Java Basics - Anfänger-Themen 1
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
T Konstruktor mit Referenzdatentypen Java Basics - Anfänger-Themen 5
H Klassen Konstruktor Parameter als Instanzvariablen zwischen speichern... Java Basics - Anfänger-Themen 11
T setter im Konstruktor einbauen? Java Basics - Anfänger-Themen 8
R ArrayList im Konstruktor. Java Basics - Anfänger-Themen 4
T Konstruktor Probleme Java Basics - Anfänger-Themen 3
J Wie lässt sich der Konstruktor einer Klasse einer Funktion einer Klasse nutzen. Java Basics - Anfänger-Themen 4
S Variable, die im Konstruktor gesetzt wird, wird nicht gefunden vom Compiler. Java Basics - Anfänger-Themen 4
C Generic im Konstruktor Java Basics - Anfänger-Themen 1
F Privater Konstruktor und statische Methoden Java Basics - Anfänger-Themen 4
W Konstruktor von FileInputStream nicht gefunden Java Basics - Anfänger-Themen 18
B Methoden Konstruktor im Konstruktor aufrufen Java Basics - Anfänger-Themen 2
N Aufgabe: Pizza Konstruktor mit mehreren beliebigen Durchmesser/Preiskombinationen Java Basics - Anfänger-Themen 8
K arraygröße durch variablen Konstruktor? Java Basics - Anfänger-Themen 7
K ArrayList in Konstruktor - wie späterer Zugriff Java Basics - Anfänger-Themen 2
G Verwendung von Konstruktor Java Basics - Anfänger-Themen 8
X Übergabeparameter Konstruktor (File) Java Basics - Anfänger-Themen 13
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
C Konstruktor in Abstrakten Klassen Java Basics - Anfänger-Themen 4
B Konstruktor Problem Java Basics - Anfänger-Themen 8
Joew0815 konstruktor und damit erstellte objekte Java Basics - Anfänger-Themen 1
K Hashtable mit eigenen Konstruktor Java Basics - Anfänger-Themen 2
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
H Fehler im Konstruktor abfangen Java Basics - Anfänger-Themen 10
J Konstruktor Problem bei Vererbung Java Basics - Anfänger-Themen 1
I Java Eingabe aus einer anderen Klasse in eine andere an Konstruktor übergeben Java Basics - Anfänger-Themen 4
O Konstruktor und Default Konstruktor Java Basics - Anfänger-Themen 7
S Kapselung Objekt bei Übergabe an Konstruktor nicht initalisiert Java Basics - Anfänger-Themen 3
I Vererbung Frage zum Konstruktor Java Basics - Anfänger-Themen 5
Y Konstruktor - Setter/Getter Java Basics - Anfänger-Themen 3
P Konstruktor Java Basics - Anfänger-Themen 4
E Initialisierung von Attributen und Konstruktor Java Basics - Anfänger-Themen 0
H Compiler-Fehler NullPointerException bei .length, Konstruktor fehlerhaft? Java Basics - Anfänger-Themen 3
M Objekt Array an konstruktor übergeben und Initialisieren Java Basics - Anfänger-Themen 1
llabusch Vererbung Super Konstruktor Java Basics - Anfänger-Themen 5
P Erste Schritte WindowBuilder erstellt Konstruktor wie zugreifen Java Basics - Anfänger-Themen 5
M Parameter von Konstruktor, der Superklassen-Konstruktor aufruft Java Basics - Anfänger-Themen 2
V Was soll alles in den Konstruktor? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben