Abhängigkeitsgraph verstehen?

TomatenBrot447

Mitglied
Hallo ,

ich habe hier folgende Aufgabe aus einem Buch, leider ist dazu keine Lösung angegeben. (siehe angehängtes Bild!)
Wie würde man solch eine Aufgabe lösen, ich habe echt keinen blassen schimmer.

Würde mich freuen, wenn mir jemand erklärt wie man solche aufgaben rangeht, bzw. wo im Netz ich etwas darüber finde ( ich konnte leider nichts gescheites finden im Internet).
Anlage : Bild
Mfg
 

Anhänge

  • Abhängigkeitsgraph.png
    Abhängigkeitsgraph.png
    23,6 KB · Aufrufe: 68

dayaftereh

Top Contributor
Ich würde es als Art UML Diagramm bezeichnen. So wie ich die Aufgabe verstehe, gib es hierfür mehrere Lösungen.

Du sollst bei der Aufgabe Klassen und Interface ohne Attribute nutzen. Dabei sollen die Klassen von einander Erben oder Interface implementiern.

Gib Bescheid wenn du meine Lösung willst....
 

TomatenBrot447

Mitglied
Und warum gerade so und nicht anders?
Eine kleine Erklärung dazu wäre noch sehr hilfreich.
Und kannst du mir auch erklären warum gilt : "public class A implements B" und nicht umgekehrt? Hat das was mit der pfeilspitze zu tun? Wie liest man sowas denn nun?
 

dayaftereh

Top Contributor
Hey, also ich würde B als Interface(Schnittstelle) definieren. Da Ich mir einfach als Abhängigkeit im Interface ne Methode vorstellen kann. Das Interface bzw die Methode vom Interface wird als erstes in der Klasse A Implementiert. Da aber noch eine andere Implementierung geben soll, erbt die Klasse C von A und überschreibt nochmals die Methode. Vobei in dieser Implementierung auch A genutzt wird.
Schau hier :
Java:
public interface B {
  int foo();
}
public class A implements B {
   @Override
   int foo(){
      return 1;
   }
}
public class C extends A {
   @Override
   int foo(){
      return super.foo() + 1;
   }
}
 

AndiE

Top Contributor
Was ist das für ein Buch, wo du die Aufgabe her hast? Momentan würde ich das so lesen, dass B von A abhängig ist und C von A und B. Entlang der Pfeilrichtung wirkt A auf B, also ist B von A abhängig. Ein Beispiel wäre eine Lohnverwaltung. Es gibt ein Interface "EmployerInterface", das eine Methode "getMoney()" enthält. Das wäre A. Die Klasse Employer enthält nun die Methoden zur Verwaltung der persönlichen Daten und auch die Methode "getMoney()". Das wäre B. Von der Klasse "Employer" wird nun die Klasse "Worker" abgeleitet, da diese anders bezahlt werden. Offensichtlich ist "Worker" doch von "Employer" und "EmployerInterface" abhängig. Das wäre C.
 

iBrain

Mitglied
@Override ist eine Annotation die markiert das du eine Methode aus einer Oberklasse von der die deklarierende klasse erbt oder aus einem implementierten Interface (was hauptsächlich über abstrakte methoden verfügt die überschrieben werden müssen ) überschreibst .In dem beispiel von dayaftereh implementiert Klasse A das interface B
public class A implements B
und schreibt somit Klasse A vor dass es die methode foo() vom Interface B implementieren muss (foo hat im übrigen keine besondere bedeutung und wird des öfteren auch in der java API als Beispiel-methoden-name benutzt , es könnte dort auch spongebob() anstatt foo() stehen und dann müssten alle klassen die B implementieren eine methode spongebob() anbieten).Das selbe gilt für die Klasse C die die Klasse A erweitert mit dem kleinen unterschied das die Klasse C nicht gezwungen ist die Methode zu implementieren da die Methode innerhalb der Klasse A nicht abstrakt ist.Würde C die Methode nicht überschreiben(Also class C extends A aber ohne eigene methode foo() in der Klasse C ) würde ein aufruf der Methode foo() der Klasse C dir die 1 zurückgeben weil es die Methode direkt von der Klasse A erben würde inklusive der implementierung.Aber da die Methode der Klasse C die implementierung der Klasse A überschreibt gibt ein aufruf die 2 zurück denn durch super.foo() wird die methode foo() der Klasse A aufgerufen also eine 1 eingefügt(foo() aus A hat ja return 1; da stehen) und 1 wird hinzugezählt.
return super.foo() + 1;
Annotationen beeinflussen nicht im wesentlichen den programmcode sondern stellen
metadaten zur verfügung.Man muss zB @Override nicht nutzen sprich man könnte es weglassen , allerdings hat es den vorteil das der Compiler für uns dann überprüft ob wir wirklich eine methode der Oberklasse überschrieben haben.
Ich hoffe das hilft :)
 
Zuletzt bearbeitet:

TomatenBrot447

Mitglied
vielen dank für eure ausführlichen antworten.
Aber ehrlich gesagt verwirren mich eure antworten extrem , sry .

ok, fangen wir wieder von neu an.
Erklärt mir doch bitte wie ich solche diagramme lese. Was hat das mit den Pfeilrichtungen auf sich, wer erbt hier von wem?? Allgemein.
 

iBrain

Mitglied
Vielleicht solltest du dir erstmal ein Buch raussuchen was dir das prinzip der vererbung in Java ausführlicher erklärt .
Aber ich werds mal versuchen bezogen auf dein beispiel.
Der Pfeil zeigt auf die Klasse die erben soll ,ausgehend von der klasse die Vererben soll.Das bedeutet in deinem diagramm sollen A und C von B erben weil 2 Pfeile von B ausgehend auf A und auf C zeigen.Ausserdem soll C von A erben weil ja auch 1 pfeil von A aus auf C zeigt. Heisst B vererbt 2 mal und A soll einmal vererben.

Hierdurch wird bestimmt das A von B erbt durch das schlüsselwort implements.
(implements wird benutzt um ein interface und dessen methoden zu implementieren)
public class A implements B

Und hierdurch
public class C extends A
wird bestimmt das C von A erbt durch das schlüsselwort extends.
(extends wird benutzt um eine Unterklasse zu bilden)
Da A von B bereits geerbt hat und C von A erbt hast du dadurch erreicht das C auch von B erbt weil A vererbt die Methode die A von B geerbt hat auch an C .

Ich hätte auch eine frage ,weisst du denn was ein interface bzw eine Oberklasse/Unterklasse ist ?
 
Zuletzt bearbeitet:

TomatenBrot447

Mitglied
Vielen Vielen Dank, jetzt bin ich schon einen schritt weiter.
Ja ich weiß was Superklasse(alias Oberklasse) und Subklasse(alias Unterklasse) bedeutet.
Auch weiß ich was ein Interface ist.
Das Prinzip der Vererbung habe ich eigentlich soweit verstanden ( ist garnicht so schwer finde ich), nur diese ganzen Diagramme mit den Pfeilen machen mir manchmal zu schaffen.
 

AndiE

Top Contributor
Was ist das für ein Buch, wo du die Aufgabe her hast? Momentan würde ich das so lesen, dass B von A abhängig ist und C von A und B. Entlang der Pfeilrichtung wirkt A auf B, also ist B von A abhängig. Ein Beispiel wäre eine Lohnverwaltung. Es gibt ein Interface "EmployerInterface", das eine Methode "getMoney()" enthält. Das wäre A. Die Klasse Employer enthält nun die Methoden zur Verwaltung der persönlichen Daten und auch die Methode "getMoney()". Das wäre B. Von der Klasse "Employer" wird nun die Klasse "Worker" abgeleitet, da diese anders bezahlt werden. Offensichtlich ist "Worker" doch von "Employer" und "EmployerInterface" abhängig. Das wäre C.

Ich hatte A und B verwechselt- mein Fehler
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
B Deadlock verstehen der Ausgabe! Java Basics - Anfänger-Themen 12
jamboy7 Java-API kennenlernen, verstehen und nutzen lernen Java Basics - Anfänger-Themen 4
B Methodendeklaration verstehen Java Basics - Anfänger-Themen 2
J Methode verstehen Java Basics - Anfänger-Themen 3
S Allgemeine Java Codes lesen und verstehen Java Basics - Anfänger-Themen 7
3 OOP erste Versuche, OOP zu verstehen. Probleme mit gettern und settern Java Basics - Anfänger-Themen 4
J Hilfe beim verstehen Java Basics - Anfänger-Themen 3
S Anweisungen verstehen System.out.print/println Java Basics - Anfänger-Themen 2
B Webhooks verstehen - Beispiel? Java Basics - Anfänger-Themen 25
H Variable.methode aufstellen, verstehen Java Basics - Anfänger-Themen 2
B Interpreter-Fehler Code verstehen und Compilerfehler Java Basics - Anfänger-Themen 2
O Programm verstehen :D Java Basics - Anfänger-Themen 4
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
B Rekursion verstehen Java Basics - Anfänger-Themen 4
D Erste Schritte Code verstehen - HashSet Java Basics - Anfänger-Themen 8
E Rekursion verstehen. Java Basics - Anfänger-Themen 4
E Rekursion verstehen Java Basics - Anfänger-Themen 2
L Quicksort verstehen Java Basics - Anfänger-Themen 3
J Texte für Java Programmierung besser verstehen? Java Basics - Anfänger-Themen 2
S Programmcode verstehen Java Basics - Anfänger-Themen 4
M Lambda - Ausdrücke verstehen Java Basics - Anfänger-Themen 2
J-Gallus Keylistener verstehen Java Basics - Anfänger-Themen 17
O Java und JSF besser verstehen Java Basics - Anfänger-Themen 1
E Erste Schritte brauche hilfe zum verstehen einer Klasse(Tiefensuche) Java Basics - Anfänger-Themen 17
L Polymorphie Polymorphie verstehen? Java Basics - Anfänger-Themen 2
U Code anderer Programmierern verstehen Java Basics - Anfänger-Themen 2
G Quellcode verstehen Java Basics - Anfänger-Themen 9
V Parameter in synchronized-Blöcken verstehen Java Basics - Anfänger-Themen 2
N Initialisierer / statischer Initialisierer verstehen Java Basics - Anfänger-Themen 6
S Wie ist folgender Kommentar in meinem Ant file zu verstehen..? Java Basics - Anfänger-Themen 0
D Quellcode verstehen Java Basics - Anfänger-Themen 4
V Parameterübergabe von Methoden verstehen Java Basics - Anfänger-Themen 13
C Schleifen verstehen Java Basics - Anfänger-Themen 5
G Hausaufgabe mit LinkedList und LinkedListStack verstehen Java Basics - Anfänger-Themen 6
R Programm verstehen, Funktion Java Basics - Anfänger-Themen 4
C Erste Schritte Konstruktoren verstehen Java Basics - Anfänger-Themen 7
T For schleife verstehen Java Basics - Anfänger-Themen 26
W InertionSort verstehen Java Basics - Anfänger-Themen 4
K Passage im Quelltext verstehen Java Basics - Anfänger-Themen 2
S Programmfragmente verstehen? Java Basics - Anfänger-Themen 4
S OOP Java Kommentare, Programm besser verstehen Java Basics - Anfänger-Themen 6
F Typenumwandlung byte <=> int verstehen Java Basics - Anfänger-Themen 3
P hilfe...nix verstehen....... Java Basics - Anfänger-Themen 2
K OPP am besten verstehen !!! Java Basics - Anfänger-Themen 7
M Brauche Hilfe beim Verstehen vom Quellcode Java Basics - Anfänger-Themen 4
M Was kann man unter implementieren so verstehen? Java Basics - Anfänger-Themen 11
S Problem beim Verstehen des Quellcodes Java Basics - Anfänger-Themen 7
B Kann Quellcode von "Hanoi" nicht verstehen. Bitte Java Basics - Anfänger-Themen 4
Z Problem Fehlermeldung zu verstehen Java Basics - Anfänger-Themen 7
A wie lernt man am besten den code zu verstehen? Java Basics - Anfänger-Themen 7
G Möchte Java verstehen Java Basics - Anfänger-Themen 11
K Verzeichniss Struktur verstehen Java Basics - Anfänger-Themen 3
M Java verstehen ! Java Basics - Anfänger-Themen 5
K generics richtig verstehen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben