Was zur Hölle ist Objektorientierte Programmierung und Wofür Brauche ich das?

Video

Mit dem Laden des Videos akzeptierst du die Datenschutzerklärung von YouTube. Wenn du die Menge an Daten reduzieren möchtest, die YouTube von dir sammelt, solltest du dich vorher aus deinem YouTube-Account ausloggen, das Speichern von Cookies für das Google-Ads-Programm deaktivieren und/oder Cookies im Browser blockieren.

YouTube immer automatisch laden
Inhaltsverzeichnis
Als Text lesen

Kommen wir zum großen Thema: Objektorientierte Programmierung.

Java ist eine (sehr) objektorientierte Sprache. Wie du bereits gesehen hast, ist es nicht einmal möglich, ein einfaches Programm zu schreiben, ohne das Keyword class zu verwenden. Um zu verstehen, was Klassen und Objekte sind, möchte ich dir zuerst zeigen, was passieren kann, wenn du nicht objektorientiert programmierst. Im Gegensatz zu anderen Tutorials werde ich dir jetzt aber nicht realitätsferne Beispiele mit Autos, oder lustigen Tieren nennen, sondern eines mit wirklicher Anwendung.

Stelle dir vor, du möchtest ein Programm schreiben, in dem du Rechtecke benötigst. Diese könnten zum Beispiel Position und Größe von Figuren in einem Spiel darstellen. Wenn du also die Eigenschaften (Attribute) eines solchen Rechtecks speichern möchtest, könntest du folgendermaßen Variablen dafür erstellen:

// Rechteck
double posX = 5.0; // Die x-Position des Rechtecks
double posY = 2.0; // Die y-Position des Rechtecks
double width = 4.0; // Die Breite des Rechtecks
double height = 3.0; // Die Höhe des Rechtecks
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Je nachdem, was dein Programm machen soll, könntest du diese Werte dann verwenden um z.B. den Flächeninhalt zu berechnen:

double area = width * height; // 12.0
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Was aber, wenn du gerne mehrere solcher Rechtecke speichern würdest, sagen wir drei Stück?

// Erstes Rechteck
double firstRectanglePosX = 5.0;
double firstRectanglePosY = 2.0;
double firstRectangleWidth = 4.0;
double firstRectangleHeight = 3.0;
// Zweites Rechteck
double secondRectanglePosX = 1.0;
double secondRectanglePosY = 0.5;
double secondRectangleWidth = 2.0;
double secondRectangleHeight = 3.5;
// Drittes Rechteck
double thirdRectanglePosX = -4.0;
double thirdRectanglePosY = 0.0;
double thirdRectangleWidth = 8.0;
double thirdRectangleHeight = 1.0;
// Berechnungen
double areaFirstRectangle = firstRectangleWidth * firstRectangleHeight;
double areaSecondRectangle = secondRectangleWidth * secondRectangleHeight;
double areaThirdRectangle = thirdRectangleWidth * thirdRectangleHeight;
...
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Du siehst, dass das ganze sehr schnell sehr unübersichtlich wird. Und das sind lediglich drei Rechteck Objekte, die wir speichern wollen. Was wenn es mehrere tausend sind? Oder beliebig viele, also z.B. abhängig von einer Variable int numberOfRectangles;?

Wir könnten jetzt anfangen, die Attribute der einzelnen Rechtecke in Arrays zusammen zu fassen. Es gibt aber eine viel bessere Variante, einzelne Basistypen zu bündeln: Klassen

Eine Klasse ist nichts anderes als eine Vorlage, wie mehrere Variablen (und Methoden*) zu einem einzelnen Objekt zusammengefasst werden können.

Eine Klasse wird nur ein einziges mal geschrieben, egal wie viele Objekte dieser Klasse man dann tatsächlich erstellen möchte. Die Erstellung eines tatsächlichen Objekts nennt man auch Instanziierung.

In unserem Beispiel ist also Rechteck bzw. Rectangle die Klasse, firstRectangle und secondRectangle könnten dann zwei Objekte (Instanzen) der Klasse Rectangle sein, und die vier Eigenschaften posX, posY, width und height die Attribute der Klasse Rectangle

Du kennst bereits eine Klasse, die in Java standardmäßig immer dabei ist: String. Im Gegensatz dazu sind int, boolean und double keine Klassen, sondern primitive Datentypen (Basistypen). Basistypen sind deutlich simpler, können nicht vom Programmierer neu erfunden werden, und unterscheiden sich in der Art und Weise wie sie im Arbeitsspeicher abgelegt werden.

Übrigens: Arrays sind auch Objekte. Allerdings nehmen diese in Java ebenfalls eine Sonderrolle ein, beispielsweise in der Art und Weise wie diese instanziiert werden.

Und so schaut dann eine Klasse im Code aus:

class Rectangle {
double posX;
double posY;
double width;
double height;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Die Struktur einer Klasse lässt sich in einem UML Klassendiagramm darstellen:

java_rectangle_uml_class_diagram.svg

Um ein Objekt dieser Klasse zu erstellen, verwendet man das new-Keyword, gefolgt von dem Klassennamen und runden Klammern:

// Referenzvariable für ein Rechteck deklarieren
Rectangle firstRectangle;
// Neues Rechteck instanziieren und der Variable zuweisen
firstRectangle = new Rectangle();
// Oder kurz:
Rectangle secondRectangle = new Rectangle();
Rectangle thirdRectangle = new Rectangle();
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Standardmäßig sind jedoch alle Attribute dieser drei Rechtecke 0.0. Um auf diese zuzugreifen kann man folgende Punkt-Schreibweise verwenden:

firstRectangle.width = 4.0;
firstRectangle.height = 3.0;
System.out.println(firstRectangle.width); // 4.0
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Die main-Methode, die du bereits in jedem Beispiel verwendet hast, muss in nur einer Klasse vorkommen. Wir können beispielsweise ein Programm folgendermaßen zusammensetzen:

public class Rectangle {
double posX;
double posY;
double width;
double height;
public static void main(String[] args) {
Rectangle rect = new Rectangle();
rect.posX = 1.0;
rect.posY = -1.0;
rect.width = 2.0;
rect.height = 3.0;
double area = rect.width * rect.height;
System.out.println("Das Rechteck befindet sich an der Koordinate (" + rect.posX + " | " + rect.posY + ")");
System.out.println("Der Flächeninhalt des Rechtecks ist " + area);
}
}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Hierbei ist das public-Keyword ein sogenannter Access Modifier und bedeutet, dass die Klasse auch von anderen Java-Dateien aus erreicht werden kann. Wenn man public weglässt, kann der Compiler die main-Methode nicht finden. Mehr zu Access Modifiers später.

Regeln für guten Code Style (Clean Code):

  • Klassennamen immer groß
    class rectangle { ... } class Rectangle { ... }
  • Variablennamen immer klein
    int Number; int number;
  • Generell (fast) alle Benennungen immer in CamelCase
    class RECTANGLE { ... } class Rectangle { ... }
    class Superfancyrectangle { ... } class SuperFancyRectangle { ... }
    Rectangle myrectangle; Rectangle myRectangle;
  • Unterstriche sind für C-Nerds
    String first_name; String firstName;

Wozu brauche ich das jetzt also?

Objektorientierte Programmierung ist kein Muss! Beispielsweise die Sprache C kommt (mehr oder weniger) ohne Klassen und Objekte aus. Theoretisch lässt sich jedes Programm auch direkt in Maschinencode schreiben. Allerdings ist es für uns Menschen viel einfacher, Dinge zu abstrahieren. Unter einem einzelnen Rechteck-Objekt verstehen wir mehr, als unter vier Fließkommazahlen, aus denen sich dieses zusammen baut. Objektorientierte Programmierung ist also für uns Programmierer eine Hilfe, damit wir komplexe Zusammenhänge auf möglichst einfache Weise darstellen und verstehen können.

(*Zu Methoden kommen wir gleich noch)

In einem (hypothetischen) sozialen Netzwerk werden Accounts von Menschen als Objekte im System gespeichert. Jedes dieser Objekte stellt genau einen Account (und damit einen Menschen) dar.

Erstelle eine Klasse User, die die folgenden Attribute enthält:

java_user_uml_class_diagram.svg
  • id (Ein int, das irgendeine Art von Identifikationsnummer repräsentiert)
  • firstName (Ein String, der einen Vornamen darstellt)
  • lastName (Ein String, der einen Nachnamen darstellt)

Erstelle anschließend in der main-Methode die folgenden drei User-Objekte:

  • Parry Lage: Hat die id 14_159_265
  • Leon Tusk: Hat die id 69_420
  • Beff Jezos: Hat die id 2

Du kannst das Programm ausführen um zu sehen ob ein Syntax- bzw. Compilerfehler vorliegt, es wird aber keine Programmausgabe geben.

Online Editor

Mit dem Laden des Online Editors akzeptierst du die Datenschutzerklärung von JDoodle, einem Produkt der Nutpan pty Ltd (Australien). JDoodle verwendet die Tools reCAPTCHA und Google Analytics, wodurch Daten an Google übertragen werden können. Ich habe leider keinen Einfluss auf diesen Prozess. Du kannst Google Analytics über ein Browserplugin deaktivieren.

Online Editor immer automatisch laden

Da jeder Nutzer mit anderen Nutzern befreundet sein kann, werden zusätzlich alle Freunde eines Nutzers als Array in jedem User-Objekt gespeichert.

Ergänze die Klasse User also nun mit einem weiteren Attribut User[] friends und setze die folgenden Verbindungen zwischen den Objekten:

  • Parry Lage ist mit Leon Tusk befreundet
  • Leon Tusk ist mit Parry Lage befreundet
  • Beff Jezos ist mit keinem der beiden befreundet
java_user_uml_class_diagram_2.svg

(Der Pfeil im Diagramm bedeutet, dass jeder User ein zusätzliches Attribut friends hat, das selbst 0 bis beliebig viele User Objekte enthält.)

Füge anschließend eine Programm-Logik hinzu, die auf der Konsole ausgibt, ob Leon Tusk ein Freund von Beff Jezos ist. Verwende hierbei nicht dein eigenes Wissen, sondern hole die Informationen ausschließlich aus den User-Objekten.

Häufige Fehlerquellen
  • No "public class" found: Du hast das public vor class vergessen, oder gar keine Klasse implementiert
  • cannot find symbol: Hast du den korrekten Typ User bei jeder Variablen-Deklaration stehen? Hast du alle Strings in Gänsefüßchen?
  • error: reached end of file: Geschweifte Klammer am Ende vergessen
  • java.lang.NullPointerException: Hast du alle Arrays zuerst über new User[...] erstellt, bevor du darauf zugreifst?
Lösungsvorschlag Teilaufgabe a)
public class User {
int id;
String firstName;
String lastName;
public static void main(String[] args) {
// User "Parry Lage" erstellen
User parryLage = new User();
parryLage.id = 14_159_265;
parryLage.firstName = "Parry";
parryLage.lastName = "Lage";
// User "Leon Tusk" erstellen
User leonTusk = new User();
leonTusk.id = 69_420;
leonTusk.firstName = "Leon";
leonTusk.lastName = "Tusk";
// User "Beff Jezos" erstellen
User beffJezos = new User();
beffJezos.id = 2;
beffJezos.firstName = "Beff";
beffJezos.lastName = "Jezos";
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lösungsvorschlag Teilaufgabe b)
public class User {
int id;
String firstName;
String lastName;
User[] friends; // Alle User, mit denen dieser User befreundet ist
public static void main(String[] args) {
// User "Parry Lage" erstellen
User parryLage = new User();
parryLage.id = 14_159_265;
parryLage.firstName = "Parry";
parryLage.lastName = "Lage";
parryLage.friends = new User[1]; /* Leeres User Array mit Platz
für einen User erstellen */
// User "Leon Tusk" erstellen
User leonTusk = new User();
leonTusk.id = 69_420;
leonTusk.firstName = "Leon";
leonTusk.lastName = "Tusk";
leonTusk.friends = new User[1]; /* Leeres User Array mit Platz
für einen User erstellen */
leonTusk.friends[0] = parryLage; /* Der erste (und einzige) Freund
von Leon Tusk ist Parry Lage */
// Nachträglich Leon Tusk als Freund von Parry Lage setzen
parryLage.friends[0] = leonTusk;
// User "Beff Jezos" erstellen
User beffJezos = new User();
beffJezos.id = 2;
beffJezos.firstName = "Beff";
beffJezos.lastName = "Jezos";
beffJezos.friends = new User[0];
// Überprüfen, ob Leon Tusk in der Freundesliste von Parry Lage ist
boolean leonIsFriendOfParry = false;
for (int i = 0; i < parryLage.friends.length; i++) {
if (parryLage.friends[i] == leonTusk) {
// Leon ist in der Freundesliste von Parry
leonIsFriendOfParry = true;
break; // Wir können aufhören zu suchen
}
}
if (leonIsFriendOfParry) {
System.out.println("Leon ist ein Freund von Parry");
} else {
System.out.println("Leon ist kein Freund von Parry");
}
}
}
 
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Dir gefällt meine Arbeit?

Unterstütze Mich
AllgemeinSocialRechtliches
HomeInstagramDatenschutz
ÜberYouTubeImpressum
TikTok
Ko-fi

Made with love by a former noob.

© 2022-2024 Timo Friedl