Programmieren leicht gemacht - adäquate Modelle für den Einsatz im Unterricht/ Objektorientierte Programmierung/ Komplexe Aufgaben

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Erzeugen von eigenen Klassen[Bearbeiten]

Gemäß des Konzepts der Objektorientierten Programmierung soll hier nun kurz erläutert werden, wie eigene Unterklassen der Hamster-Klasse erzeugt werden können. Wichtig dabei ist vor allem, dass beim Öffnen einer neuen Datei der Eintrag "Klasse" aus dem sich öffnenden Menü ausgewählt wird:

ProgrLeiGem OOP Klasse.png

Das Gerüst für die neu zu erstellende Klasse, die von der Klasse "Hamster" abgeleitet wird, ist bereits vorgegeben:

ProgrLeiGem OOP KlasseGeruest.png

Wir wollen nun eine Klasse "LaufHamster" implementieren, die über folgende Methoden verfügen soll: Zuerst schreiben wir eine Methode drehDich(int drehungen), die es ermöglichen soll, den Hamster eine gewisse Anzahl im Kreis zu drehen:

class LaufHamster extends Hamster 
{
  void drehDich(int drehungen) 
  {
   while (drehungen > 0) 
   {
     this.linksUm();
     drehungen--;
   }
  } 
}

Weiters soll sich der Hamster nach rechts drehen können und überprüfen können, ob das Feld rechts von ihm frei ist:

void rechtsUm() 
{
 this.drehDich(3);
}
boolean rechtsFrei() 
{
 this.rechtsUm();
 boolean ergebnis = this.vornFrei();
 this.linksUm();
 return ergebnis;
}


Abschließend soll die Klasse gemäß ihrer Namensgebung auch über eine Methode verfügen, die es dem Hamster ermöglichen soll, bis zum nächsten Hindernis vorwärts zu laufen:

void laufe() 
{
 while (this.vornFrei()) 
 {
  this.vor();
 }
}

Den zugehörigen ASCII-Text der LaufHamster-Klasse finden Sie hier.

Zusätzliche Aufgabe[Bearbeiten]

Schreiben Sie nun eine eigene Klasse "SammelHamster", welche über die Methoden void sammle() und int getGesammelteKoerner() verfügen soll.

Schreiben Sie nun ein Programm, in welchem unter Verwendung der beiden Klassen "SammelHamster" und "LaufHamster" drei Hamster erzeugt werden sollen, die folgende Anweisungen ausführen sollen: Der normale Hamster soll so lange vorwärts laufen, bis er auf eine Mauer stößt. Der Hamster vom Typ "LaufHamster" soll sich so oft drehen, wie der Benutzer dies durch seine Eingabe wünscht und dann bis zum nächsten Hindernis entlang laufen. Der Hamster vom Typ "SammelHamster" soll so viele Körner aufsammeln, wie der Benutzer dies durch seine Eingabe wünscht und dann bis zum nächsten Hindernis vorwärts laufen.


Detaillierte Informationen zur Dekodierung des angeführten ASCII-Textes finden Sie unter Wichtige Information zum Herunterladen der Beispielsdateien.

Den zugehörigen ASCII-Text der SammelHamster-Klasse finden Sie hier.

Den zugehörigen ASCII-Text der Aufgabe finden Sie hier.

Aufgabe 4[Bearbeiten]

Auf dem Territorium soll sich nur ein Standardhamster, eine beliebige Anzahl von Körnern, jedoch keine Mauern befinden. Schreibe ein Programm, welches den Hamster reihenweise alle Körner auffressen lässt.


Detaillierte Informationen zur Dekodierung des angeführten ASCII-Textes finden Sie unter Wichtige Information zum Herunterladen der Beispielsdateien.

Den zugehörigen ASCII-Text finden Sie hier.

Aufgabe 5[Bearbeiten]

Im Territorium soll sich zu Beginn nur ein Standardhamster und eine beliebige Anzahl von Mauern befinden. Schreibe nun ein Programm, welches des Standardhamster bis zur nächsten Mauer vorwärts laufen lässt und dort stehen lässt. Auf diesem Feld soll nun ein neuer Hamster erzeugt werden, welcher in die entgegengesetzte Richtung bis zur nächsten Mauer laufen soll.


Detaillierte Informationen zur Dekodierung des angeführten ASCII-Textes finden Sie unter Wichtige Information zum Herunterladen der Beispielsdateien.

Den zugehörigen ASCII-Text finden Sie hier.

Aufgabe 6[Bearbeiten]

In diesem Beispiel sollen Sie zwei Klassen schreiben: die Klasse „NachrichtenHamster“ und die Klasse „KoenigsHamster“ Die genauen Unterschiede bzw. zu implementierenden Methoden sollen Sie sich anhand des nachfolgenden Szenarios selbst überlegen:

In jeder Ecke des Territorium soll jeweils ein Königshamster mit Blickrichtung zueinander platziert werden, wobei nur der Königshamster, der auf dem Feld (0,0) platziert ist, anfangs ein Korn im Maul tragen soll. Dieses Korn soll eine zu übermittelnde Nachricht darstellen, d.h. der jeweilige Königshamster, der gerade an der Reihe ist, soll das Nachrichtskorn ablegen und der Nachrichtenhamster soll dieses aufnehmen und zum nächsten König laufen. Dieser Königshamster soll ihm das Nachrichtenkorn abnehmen, selbst eines hinlegen, welches der Nachrichtenhamster wiederum entgegen nimmt, um es an den nächsten König weiterzuleiten. Der Nachrichtenhamster startet folglich mit dem Übermitteln von Nachrichten beim König im Feld (0,0), unabhängig wo der Nachrichtenhamster eingangs platziert wurde, und bewegt sich entlang des Territoriumrandes zu den übrigen drei Königen. Dies wird so lange wiederholt, bis eine geeignete Anzahl an Nachrichten erfolgreich übermittelt wurde. Die genaue Anzahl von übermittelten Nachrichten soll dabei auf geeignete Weise beschränkt werden!

ProgrLeiGem OOP Aufgabe6.png


Detaillierte Informationen zur Dekodierung des angeführten ASCII-Textes finden Sie unter Wichtige Information zum Herunterladen der Beispielsdateien.

Den zugehörigen ASCII-Text der NachrichtenHamster-Klasse finden Sie hier.

Den zugehörigen ASCII-Text der KoenigsHamster-Klasse finden Sie hier.

Den zugehörigen ASCII-Text der Aufgabe finden Sie hier.

Aufgabe 7[Bearbeiten]

Schreiben Sie eine Klasse „ZufallsHamster“: Ein Zufallshamster soll anfangs auf einem beliebigen Feld des Territoriums platziert werden und in eine zufällige Richtung laufen. Befindet sich auf einem Feld, welches der Hamster passiert, bereits andere Hamster und besitzt dieser Hamster noch keinen Nachwuchs, so „paart“ er sich und erzeugt Nachwuchs – ebenfalls wieder Zufallshamster. Verfasse nun ein Programm, welches so lange Zufallshamster nach obigem Schema erzeugt, bis es eine bestimmte vom Benutzer eingegebene Anzahl an Hamstern (inklusive des Standardhamsters) erreicht ist!

Die Methode random() der Klasse Math liefert als Ergebnis eine Zahl zwischen 0 (einschließlich) und 1 (ausschließlich). Tipp: Verwenden Sie die Methode random(), führen Sie eine Multiplikation mit einem geeigneten Faktor durch und wandlen Sie das Ergebnis in eine ganze Zahl um!

Detaillierte Informationen zur Dekodierung des angeführten ASCII-Textes finden Sie unter Wichtige Information zum Herunterladen der Beispielsdateien.


Den zugehörigen ASCII-Text der ZufallsHamster-Klasse finden Sie hier.

Den zugehörigen ASCII-Text der Aufgabe finden Sie hier.