Java ist eine objektorientierte Programmiersprache. Objekte haben Eigenschaften (engl. states) und Fähigkeiten (engl. behaviors). Eine Klasse beschreibt, welche Eigenschaften und Fähigkeiten ein Objekt haben darf und stellt somit den Bauplan für jedes Objekt.
In diesem Artikel lernst Du den Aufbau von Objekten und Klassen und deren Anwendung kennen.
Stellen wir uns eine Herde vor, die aus vielen Schafen besteht. Dabei unterscheidet sich jedes Schaf in seinen Eigenschaften wie Name, Alter und Gewicht. Diese Eigenschaften werden auch als Attribute bezeichnet.
Jedes dieser Tiere gehört nun zur Gruppe der Schafe: Wir sprechen von der Klasse Schaf
. Ein Schaf mit dem Namen Berta, 2 Jahre und 30 kg ist ein Objekt der Klasse Schaf
. Somit stellt eine Klasse einen Bauplan für die Objekte bereit.
Schaf
Wir definieren nun die Klasse Schaf. Jede Klasse beginnt mit einem Modifier (hier public
), dann dem Schlüsselwort class
und dem Klassennamen (hier Schaf
). Dabei ist darauf zu achten, dass der Klassenname mit einem Großbuchstaben beginnt.
Auch die Attribute werden im Vergleich zu lokalen Variablen mit einem Modifier versehen. Darüber hinaus muss jedes Attribut mit einem Datentyp versehen werden.
public class Schaf{ public String name; public int alter; public double gewicht; }
Wir definieren nun die Klasse Schafherde. In dieser werden nun einzelne Schafe als Objekte erzeugt, Attribute zugewiesen und die Werte ausgegeben.
public class Schafherde { public static void main(String[] args) { Schaf s1; //Variable s1 vom Typ Schaf s1 = new Schaf(); //Objekterzeugung mit Schlüsselwort new s1.name = "Emma"; //Zugriff Eigenschaften mit Punktoperator s1.alter = 20; Schaf s2 = new Schaf(); //neues Objekt erzeugen s2.gewicht = 50; // Ausgabe der Eigenschaftswerte der beiden Objekte System.out.println("Name: " + s1.name + " Alter: " + s1.alter); System.out.println("Gewicht: " + s2.gewicht ); } }
Objekte sind Variablen und müssen definiert werden. Dies wird typischerweise in 2 Schritten gemacht:
Schaf s1;
s1 = new Schaf();
Man kann es aber auch zu einem Schritt zusammenfassen: Schaf s1 = new Schaf();
Der Zugriff auf die Eigenschaften eines Objekts erfolgt mit dem Punktoperator.
Zuweisung: s1.name = "Emma"
Zugriff: String ausgabe = s1.name;
Erstelle die Klasse Schaf und Schafherde.
10-Objektorientierung
an.Schaf
und deklariere vier Attribute (Eigenschaften). Achte darauf, dass du drei verschiedene Datentypen verwendest: String
, int
, double
.Schafherde
. Erzeuge drei Schafe als Objekte und weiße jedem Schaf jeden Attributwert zu. Gib eine Liste der Werte für jedes Schaf aus.boolean geschlecht
hinzu. Lass den Benutzer wählen, ob er die Mutterschafe oder Schafböcke gelistet haben möchte.
Wähle weiblich für true
und männlich für false
.
Die Ausgabe sollte wie folgt aussehen:
Folgende Mutterschafe sind in der Herde:
Emma ist 20 Jahre alt, weiß und wiegt 50.0 kg.
Berta ist 8 Jahre alt, braun und wiegt 30.0 kg.
Folgende Schafböcke sind in der Herde:
Günter ist 12 Jahre alt, gefleckt und wiegt 62.0 kg.
Erstelle die Klasse Auto und Fuhrpark.
Auto
und deklariere folgende Attribute (Eigenschaften):public String marke
,public String modell
,public String farbe
,public int leistung
,public double LiterPro100km
,public double tankstand
,public boolean tankwarnung
.Fuhrpark
. Erzeuge zwei Autos als Objekte und weise jedem Auto jeden Attributwert zu. Gib eine Liste der Werte für jedes Auto aus.tankwarnung = true
, empfehle das Tanken und gib in Abhängigkeit des Spritverbrauchs die Reichweite aus.Die Ausgabe sollte wie folgt aussehen:
Marke: VW
Typ: Polo
Verbrauch: 4.7 l/100 km
Tankstand: 3.2 l
Sie sollten tanken. Ihre Reichweite beträgt noch 68 km.
Objekte haben auch Fähigkeiten, welche in der Klasse als Methoden definiert werden.
Damit ein Schaf einen Laut geben kann definieren wir folgende Methode in der Klasse Schaf
:
public void gebenLaut (){ System.out.println("Mäh!"); }
Der Methodenaufruf in der Klasse Schafherde
ist objektgebunden und erfolgt mit dem Punktoperator.
s1.gebenLaut();
public void fressenGras(int menge) { this.gewicht = this.gewicht + menge*0.5; System.out.println("Yummy!"); }
public double erhalteGewicht() { System.out.println("Ich gebe was zurück."); return this.gewicht; }
Möchte man ein Schaf Gras fressen lassen, ist es sinnvoll die Menge als Parameter zu übergeben. In der Methode kann man dann beispielsweise eine Gewichtszunahme in Abhängigkeit von der Grasmenge berechnen.
this
. Mit dem Punktoperator kann man so auf alle Attribute und sogar Methoden einer Klasse zugreifen.
Innerhalb einer Klasse kann es mehrere Methoden einer Klasse geben. Anhand der Anzahl der Parameter oder der Datentypen der Parameter ordnet die Kasse dann automatisch die richtige Methode zu. So muss der Methodenname und die Parameter (auch Signatur) eindeutig sein.
public void fressen(int menge) { this.gewicht =
this.gewicht +
menge*0.5; System.out.println("Yummy!"); }
public void fressen(int mengeBrokoli, int mengeKarotten) { this.gewicht =
this.gewicht +
mengeBrokoli*0.7 +
mengeKarotten*0.3; System.out.println("Yummy!"); }
Autoren: Klasse EFS320
Ordne die korrekte Antwort zu.
Erzeuge ein neues Objekt.
Wähle eine Antwort.
Auto1 = Auto();
Auto a1 = new Auto();
a2 = new Auto;
Auto2 a = new Auto();
Erkläre den Begriff "Attribut".
Wähle eine Antwort.
Finde die Anzahl der Fehler im folgenden Quelltext.
private double gewicht; private String name; public int fressenHeu(int menge){ this.gewicht = gewicht + menge*0,86; return this.name; }
Finde die Anzahl der Fehler im folgenden Quelltext.
public class Schaf { public string name; public double gewicht; public double wert; public int alter; public boolean geschlecht; }
Bestimme die zugehörige Methode, zum Methodenaufruf s1.fressenGras(4);
. Wähle eine Antwort.
private void fressenGras(int menge){...}
public void gebenLaut(){....}
public void fressenGras(int menge){...}
protected void fressenGras(int menge){...};
Bestimme den Zweck des Schlüsselworts void
in Methoden.
Wähle eine Antwort.
private
Worum handelt es sich bei überladenen Methoden?
Wähle eine Antwort.
Bestimme den Zweck der Referenzvariable
this
in Java.
Wähle eine Antwort.
Die Schafe sollen mit Fähigkeiten ausgestattet werden.
Schaf
mit den vier folgenden Methoden:public void gebenLaut () {..}
,public void fressen(int menge) {..}
,public double erhalteGewicht() {..}
,public void fressen(int mengeGras, int mengeKohl ) {..}
Schafherde
die neuen Funktionen ausführlich. Lass alle Änderungen der Attribute jeweils anzeigen.Schaf
eine weitere Funktionalität, welche das Niveau Deiner Objekte verbessert.Die Lösung sollte bspw. folgendermaßen aussehen:
Das weiße Schaf Emma sagt: Mäh!Die PKW's sollen mit Fähigkeiten ausgestattet werden.
Auto
mit den folgenden Methoden:public void fahrenStrecke (int km) {..}
,public double tanken() {..}
,public double tanken(int menge) {..}
,public double erhalteReichweite () {..}
Fuhrpark
die neuen Funktionen ausführlich. Lass alle Änderungen der Attribute jeweils anzeigen.0
eingibt. Bei einem Tankstand von weniger als 10 l wird eine Tankwarnung angezeigt und die Möglichkeit zum Tanken gegeben.Die Lösung sollte bspw. folgendermaßen aussehen:
Ihnen steht folgendes Autos zur Verfügung:100
j
das Objekt, -e | Objekte haben Eigenschaften (engl. states) und Fähigkeiten (engl. behaviors). Diese werden in einer zugehörigen Klasse festgelegt. |
die Klasse, -n | Eine Klasse beschreibt, welche Eigenschaften und Fähigkeiten ein Objekt haben darf und stellt somit den Bauplan von Objekten bereit. |
die Fähigkeit, -en | Fähigkeiten von Objekten werden in Methoden beschrieben. |
die Eigenschaft, -en | Eigenschaften von Objekten werden in Attributen/Variablen festgelegt. |
der Modifier, ~ | legt fest ob Eigenschaften und Fähigkeiten privat oder öffentlich zugänglich sind |
das Überladen einer Methode | Existieren mehrere Methoden gleichen Namens spricht man vom Überladen. Dabei muss die Signatur eindeutig sein. |
die Signatur, -en | Methodenname und Parameter einer Methode. |
die Parameterliste, -n | eine Liste von Datentypen mit Variablennamen, welche beim Methodenaufruf übergeben werden |