Objektorientierteres Progeammieren: Aufgaben?

FrazeColder

Lt. Commander
Registriert
Okt. 2013
Beiträge
1.721
Hey Community,

Mir fallen außer dem Typischen Konto Beispiel, leider keine Übungsaufgaben mehr ein ...
Evtl kennt hier jemand eine Seite, mit Aufgaben, oder hat gerade Langeweile, und möchte mir eine stellen :D

Diese Aufgabe, (können) auch das Thema Vererbung beinhalten.

MfG und Danke :)
 
Welche Sprache? In C# könnte man den Windows Taschenrechner nachbauen. (Geht in anderen Sprachen auch)
 
Wäre mal gut zu wissen auf welchen Niveau die Aufgaben sein sollten :)

Sonst kann ich dir ein Nonogramm vorschlagen, oder ein Tic-Tac-Toe samt KI, macht beides Spass.
Da spielt die Sprache eig kaum eine Rolle.
 
Space Invaders mit speziellen Gegnern die verschiedene Attacks drauf haben
Da kannst du schön Vererbung für Gegner und auch Schüsse nutzen

Hat mir jedenfalls früher Spaß gemacht sowas in der Art.
 
codingame.com
Direkt Objektorientiert ist da jetzt wenig, aber man kann alles Objektorientiert machen ;)
 
FrazeColder schrieb:
Mir fallen außer dem Typischen Konto Beispiel, leider keine Übungsaufgaben mehr ein ...
Evtl kennt hier jemand eine Seite, mit Aufgaben, oder hat gerade Langeweile, und möchte mir eine stellen :D

Diese Aufgabe, (können) auch das Thema Vererbung beinhalten.

Das ist Java, richtig?

Das typische Auto-Beispiel mit Mehrfachvererbung:

Auto -> (PKW -- LKW) -> (Normalauto, Kombi, Rennauto) -- (Laster, Feuerwehrauto)

Und dann die Methode "Hupen" aufrufen. Muß beim Feuerwehrauto "Tatütataa" machen ;)
 
Ja, ist Java.

Das Niveau ist im Moment, z.B eine Geschenkeliste oder ein 3-Stelliges Schloss simulieren
 
Verusch doch mal ein simples Breakout Spiel zu programmieren.
JFrames etc. bringen dir gut das OO in Java bei. Guck dir die Anleitung mal an und versuch das dann auf andere Spiele zu übertragen.
 
Der Klassiker: Ein CMS mit verschiedenen Arten von Seiten (z.B. reguläre Seite, 404, 503) oder Inhaltselementen (Text, Bild, Video,...).
Da biste ein paar Jahre beschäftigt.
 
Einen Simulation eines konfigurierbaren Autos (unterschiedliche Motoren, Getriebe, Bremsen, Reifen, Fahrer, Gewicht).
Das Auto soll beschleunigen und bremsen können und je nach dem, wie die Komponenten zusammenspielen geht das dann unterschiedlich schnell oder langsam.
So ein Simulator lässt sich beliebig simpel oder Kompliziert machen - je nach dem, wieviel Arbeit du reinstecken willst. Dann kannst du auch noch eine Factory (oder auch ein komplexeres Entwurfsmuster) dazu schreiben, dann einen Konfigurator mit Preisrechner ...
 
Zuletzt bearbeitet:
FrazeColder schrieb:
Ja, ist Java.

Das Niveau ist im Moment, z.B eine Geschenkeliste oder ein 3-Stelliges Schloss simulieren

Wir mussten eine Mitarbeiterverwaltung programmieren, die per SQL an eine Datenbank angeschlossen war.

Dort konnte man Mitarbeiter anlegen, löschen und bearbeiten und diese wurden in einem Fenster mit einer JTable ausgegeben. Alles soll natürlich auch per ActionListener geöffnet werden können und somit der Mitarbeiter im Detail angezeigt und bei Klick auf bearbeiten geändert werden.

USW USW.

Das kann man weiter spinnen bis in die Unendlichkeit.

Oder ein kleines Warenwirtschaftssystem?

Gibt so vieles ^^

Grüße Sven
 
Mach lieber den Kram von projecteuler.net

Kannst du auch objektorientiert lösen. Wird häufig bei Einstellungsgesprächen hergenommen.
 
Korrigier mich, wenn ich falsch liege, aber bei den PEufgaben gehts doch fast nur um Algorithmen, Effizienz und Evtl. noch den Umgang mit großen zahlen. Alles wichtige Dinge, die man drauf haben sollte, aber was OOP angeht lernt man da relativ wenig (kann mich z.B. nicht erinnern da jemals sowas wie ne Basisklasse gebraucht zu haben).
 
Was will man bei OOP lernen ? Das ist nur eine Design Struktur, mehr nicht.
Klasse -> new -> Objekt der Klasse ?

Am ehesten lernt man den Aufbau einer Sprache in dem man die API studiert, vor allem die zu Java ist top.
Einfach lesen und schauen was es gibt, wie was vererbt wird usw.

Wenn man dann etwas braucht weiß man "ah da war doch was..." und schaut genauer nach.
 
Zuletzt bearbeitet von einem Moderator:
Was will man bei OOP lernen?
Wie man die vorhandenen Mittel wie eben Vererbung oder virtuelle Methoden sinnvoll einsetzt, zum Beispiel. Damit später nicht solche Dinge hier entstehen, die vorne und hinten keinen Sinn ergeben:

Code:
class Fahrzeug {
  [...]
private:
  int _raeder;
};

class PKW : public Fahrzeug {
  [...]
private:
  int _sitze;
  int _tueren;
};

class LKW : public PKW {  // !?
  [...]
private:
  int _laderaum;
};

Und da ist es auch nicht damit getan, sich die teilweise nicht einmal typensicheren Schnittstellen von und für Java anzuschauen, das muss man selbst machen, um ein Gefühl dafür zu entwickeln.
 
Ich kenne mich mit Java nicht im Detail aus, aber bis man in C++ die ganze Syntax und Semantik wirklich drauf hat dauert das schon ne Weile und bis man weiß, was man wie SINVOLL einsetzt vergehen locker Wochen bis Monate. Dazu kommt dann noch Verständnis und Anwendung von allen möglichen Design Patterns (über deren Sinn und Unsinn sich vortrefflich streiten lässt)
 
Eine gute Übung um Objekte, Vererbung und auch gleich schon ein Entwurfsmuster zu vermitteln ist ein einfacher Dateibrowser zur Darstellung der Verzeichnis- und Dateistruktur auf der Festplatte, basierend auf dem Kompositum (Composite Pattern).
 
Ein simples Spiel mit einfachen zugrunde liegenden Algorithmen würde sich da anbieten.

Dame oder Mahjong.

Dame ließe sich zur Not sogar auf der Console zeichnen. Für Mahjong bräuchtest du dann schon was graphisch aufwändigeres.
 
Ein simples Spiel
"simpel" :freak: :freak: :freak:

Zur Darstellung sollte eine einfache GUI-Bibliothek ausreichen (da gibts afaik in der Java-Welt inzwischen auch was besseres als AWK/Swing, habe aber den Namen vergessen), aber generell eine gute Idee, weil man da auch gut die Trennung von Programmlogik und Darstellung trennen kann. Muss ja nicht gleich strenges MVC sein (über dessen Sinn und Unsinn man sich ebenfalls je nach Anwendungsgebiet streiten kann), aber Hauptsache, man wirft nicht Dinge zusammen, die nicht zusammen gehören.


Andere Sache, die mir noch gerade einfällt: Einen Taschenrechner bauen, der einen als Text eingegebenen Term in eine Art Syntaxbaum zerlegt und dann ausrechnet. Läuft dann auch auf das von helloworld schon angesprochene Kompositum hinaus, bei dem die inneren Knoten dann eben die Operationen (+, -, *, /, ggf. mehr) und die Blätter einfache Zahlenwerte enthalten würden:
Code:
3-5*(8+7)=-72

  -
 / \
3   *
   / \
  5   +
     / \
    8   7
Vielleicht sieht man auch ohne viele Theorie-Vorkenntnisse, wie man sowas auswertet ;)
 
Zurück
Oben