Krautkanal.com

Veröffentlicht am 2015-04-02 15:14:41 in /prog/

/prog/ 6898: Hallo Bernd, ich überlege, an der Uni ein Modul &...

scottgallant Avatar
scottgallant:#6898

Hallo Bernd,
ich überlege, an der Uni ein Modul über die Entwicklung grafischer Oberflächen in Java zu belegen. Dort sind als Voraussetzung nun "Grundkenntnisse in Java" angegeben. Was genau sollte man beherrschen, um sagen zu können, dass man über Java-Grundkenntnisse verfügt?

Chakintosh Avatar
Chakintosh:#6899

Keine Ahnung?
Vermutlich reicht es, wenn du Fizzbuzz schreiben kannst und grob weißt, was OOP ist.

commoncentssss Avatar
commoncentssss:#6901

Das wird auch den Umgang mit Eclipse (oder vergleichbarem) einschließen.

dwardt Avatar
dwardt:#6902

Ich habe die Frage auch dem zuständigen Dozenten gestellt und nun eine Antwort erhalten:

>Als Grundvorraussetzung genügen Grundkenntnisse der OO (Vererbung, Kapsellung und Polymorphie) und der Java Programmiersprache.
Soweit für Bernd kein Problem.

>Dazu gehört zunächst die Syntax aber auch die Konzepte der Sprache. Java bietet neben dem Typ Klasse auch den Typ Interface an. Interfaces bieten einen eleganten Weg für Polymorphie in APIs, da so von der konkreten Implementierung einer Funktion in einer Klasse abstrahiert wird. Im Rahmen von Eclipse RCP und OSGi stellen Interfaces ein wichtiges Konzept dar und werden dementsprechend ausgiebig verwendet.
Mit Syntax ist Bernd auch oke, aber was genau ist mit "Konzepte der Sprache" gemeint? Den ganzen Rest verstehe ich nicht, auch wenn ich weiß, was ein Interface, was Polymorphie und was APIs sind.

_vojto Avatar
_vojto:#6904

>>6902

>aber was genau ist mit "Konzepte der Sprache" gemeint?

Höchstwahrscheinlich einfach nur die "Eigenheiten" von Java, also was Java von anderen OO-Sprachen unterscheidet (z. B. dass es nicht kompiliert wird und wie die Speicherverwaltung funktioniert).

Mit

>Interfaces bieten einen eleganten Weg für Polymorphie in APIs, da so von der konkreten Implementierung einer Funktion in einer Klasse abstrahiert wird.

ist gemeint, dass du einem Entwickler durch das Bereitstellen von Interfaces (=Schnittstellen) anstelle von Klassen mehr Freiraum bei der Interaktion mit deiner Software (diese Interaktion wird grob durch den Begriff "API" beschrieben) gibst.

Beispiel:

Eine API erwartet eine Klasse X für eine Methode. Für mich wäre es aber schöner, statt dieser Klasse X eine Klasse Y zu übergeben. Nun könnte ich Y von X erben lassen, müsste hier aber ggf. viel umschreiben.
Wäre die API nun so geschrieben worden, dass sie eine beliebige Klasse erwartet, die nur ein Interface Z implementieren muss, hätte ich meine Klasse Y einfach Z implementieren lassen können und hätte mir Aufwand/schlechteren Code erspart. Das ganze nennt man auch decoupling, also Entkoppeln, weil die Abhängigkeit (im Beispiel von Klasse X) "gelockert" wird, indem einfach alles akzeptiert wird, das eine bestimmte Schnittstelle implementiert.

Wenn du dich mehr dafür interessierst, empfehle ich dir das Buch "Clean Code" oder die gleichnamigen Videotutorials.

joshjoshmatson Avatar
joshjoshmatson:#6905

>>6902

>aber was genau ist mit "Konzepte der Sprache" gemeint?

Höchstwahrscheinlich einfach nur die "Eigenheiten" von Java, also was Java von anderen OO-Sprachen unterscheidet (z. B. dass es nicht kompiliert wird und wie die Speicherverwaltung funktioniert).

Mit

>Interfaces bieten einen eleganten Weg für Polymorphie in APIs, da so von der konkreten Implementierung einer Funktion in einer Klasse abstrahiert wird.

ist gemeint, dass du einem Entwickler durch das Bereitstellen von Interfaces (=Schnittstellen) anstelle von Klassen mehr Freiraum bei der Interaktion mit deiner Software (diese Interaktion wird grob durch den Begriff "API" beschrieben) gibst.

Beispiel:

Eine API erwartet eine Klasse X für eine Methode. Für mich wäre es aber schöner, statt dieser Klasse X eine Klasse Y zu übergeben. Nun könnte ich Y von X erben lassen, müsste hier aber ggf. viel umschreiben.
Wäre die API nun so geschrieben worden, dass sie eine beliebige Klasse erwartet, die nur ein Interface Z implementieren muss, hätte ich meine Klasse Y einfach Z implementieren lassen können und hätte mir Aufwand/schlechteren Code erspart. Das ganze nennt man auch decoupling, also Entkoppeln, weil die Abhängigkeit (im Beispiel von Klasse X) "gelockert" wird, indem einfach alles akzeptiert wird, das eine bestimmte Schnittstelle implementiert.

Wenn du dich mehr dafür interessierst, empfehle ich dir das Buch "Clean Code" oder die gleichnamigen Videotutorials.

Bernd Avatar
Bernd:#6906

>>6904
Danke Bernd! :3

atariboy Avatar
atariboy:#6908

>>6906

Kein Problem. Entschuldige bitte die Doppelpfostierung, es gab zu dem Zeitpunkt Serverschwierigkeiten.

Neuste Fäden in diesem Brett: