# OOP Beispielprogramm



## Dave (15. Jan 2010)

Morgen,

also da ich mittlerweile mit JAVA GUI-Programme mit Datebank anbindung schreiben kann würde ich gerne einen Schritt weitergehen, also OOP.

ich habe mir viele Onlinebücher zu dem Thema durchgelesen und weiß was der Sinn von OOP ist als das theoretisch weiss ich.
Wo ich mich jedoch schwer tuhe ist die Umsetztung, also wie man sich das Programm als ein Obejkt vorstellt und dann die richtige Klassen aufteilung macht etc.

Meine frage ist ob jemand hier vllt ein ganz kleines Programm in OOP hat welches er mir geben könnte damit ich mir den Quellcode angucke, ich kann da am besten aus solchen Beispielen lernen am besten wäre es natürlich wenn es noch eine Datenbankanbindung hätte.


Ich bedanke mich schon mal in vorraus.


----------



## Firestorm87 (15. Jan 2010)

Hier ein kleines Beispiel direkt von der Sun-Homepage...

AddressBook.zip

Es ist ein sehr kleines hübsches Adressbuch mit einer JavaDB...

Hoffe es hilft dir weiter....


----------



## MQue (15. Jan 2010)

Schau dir lieber UML- Klassendiagramme an

Klassendiagramm ? Wikipedia
http://blog.nothing.ch/wp-content/uploads/2007/07/uml.gif

usw.

, da lernst du am besten, wie andere ein Programm aufgeteilt haben. Grundsätzlich ist zu sagen, dass es 4 Grundsätze gibt:

1. SRP (Single Responsible Prinzip)
2. LKP (Liskovsches Prinzip)
3. OCP (Open Close Prinzip)
4. DRY (Don't Repeat yourself)

Wenn du eine Klasse schreibst bzw. dir eine überlegst, dann beachtest du immer die 4 oben genannten  Prinzipien, 
zu 1: einen Klasse soll nur eine Sache können (also keine Monsterklassen schreiben wo alle anderen Klassen eine Referenz drauf haben) -> Frag dich einfach bei jeder Klasse: Die Klasse ... macht ... selber.

zu 2: pass bei der Vererbung auf, eine Subklasse muss eine Basisklasse zu 100% repräsentieren können

zu 3: Klassen sollen erweiterbar aber nicht mehr änderbar sein -> verwende so oft wie möglich private

zu 4: keine Code doppelt, wenn Code doppelt in Klasse A und Klasse B -> Code rausziehen und eine eigene Klasse machen.


----------



## ARadauer (15. Jan 2010)

Firestorm87 hat gesagt.:


> Hier ein kleines Beispiel direkt von der Sun-Homepage...
> 
> AddressBook.zip
> 
> ...



Ich versteh Sun nicht, klar will man sich aufs wesentliche konzentrieren, aber warum müssen alle Demos die mit Swing gemacht sind, scheiße aussehen?


----------



## Landei (15. Jan 2010)

SRP könnte man als Spezialfall von Separation of Concerns auffassen, einem der nützlichsten Grundsätze überhaupt. Jeder Bestandteil eines Programms sollte genau eine Aufgabe erfüllen, die aber richtig. Selbst eine harmlose Methode wie 

```
public void printElements(List<String> list) { for(String s: list) { System.out.print(s + ", "); }}
```
 mischt zwei verschiedene Dinge (nämlich Daten auslesen und ausgeben) zusammen. Aber das gleiche Prinzip gilt auch auf "höheren" Ebenen: für Objekte oder sogar Packages (z.B. sollte ein Krimskrams-Package wie java.util aufgeteilt werden)


----------



## MQue (15. Jan 2010)

Landei hat gesagt.:


> SRP könnte man als Spezialfall von Separation of Concerns auffassen,



Ich wollts jetzt nur mal auf Klassenebene beschreiben, dass es auch auf Applikationsebene gilt und nur ein bisschen anders heißt, dürfte eh klar sein:

auf Appliktionsebene heißt es für mich:
1. Separation of Concerns
2. Comprehension
3. Korrektheit und Vollständigkeit
4. Ersetzbarkeit


----------



## Firestorm87 (15. Jan 2010)

ARadauer hat gesagt.:


> Ich versteh Sun nicht, klar will man sich aufs wesentliche konzentrieren, aber warum müssen alle Demos die mit Swing gemacht sind, scheiße aussehen?



Gute Frage nächste Frage 
Man weiß es nicht so genau....



Landei hat gesagt.:


> SRP könnte man als Spezialfall von Separation of Concerns auffassen, einem der nützlichsten Grundsätze überhaupt. Jeder Bestandteil eines Programms sollte genau eine Aufgabe erfüllen, die aber richtig. Selbst eine harmlose Methode wie
> 
> ```
> public void printElements(List<String> list) { for(String s: list) { System.out.print(s + ", "); }}
> ...



In dem Beispiel würde man dir wahrscheinlich sogar verzeihen, dass du keine methode private void textausgabe(String text) ... geschrieben hast... aber Ich denke es wird schon klar, was du uns mitteilen möchtest 

meistens fallen einem solche dinge aber auch erst richtig ins auf, wenn man den selben Abschnitt noch einmal irgendwo benötigt...

(z.B. mehrfachverwendung eines Parsers o.ä.... so lange man ihn nur einmal benötigt neigt man dazu ihn direkt mit einzubauen.... bei der 2ten nutzung ist ein Auslagern (normalerweise) zwingend erforderlich)


----------



## Dave (15. Jan 2010)

MQue hat gesagt.:


> Schau dir lieber UML- Klassendiagramme an
> 
> Klassendiagramm ? Wikipedia
> http://blog.nothing.ch/wp-content/uploads/2007/07/uml.gif
> ...



huu cool und kanpp beschrieben, erinnert mich bisle an die Normalformen bei DB´s 

ok, ich schreibe bald (diese WE wohlmöglich) neues tool fürn BG poste den Quellcode dann hier, hoffe es wird wenigstens ein bisle nach OOP aussehen.

danke an euch alle


----------



## Dave (20. Jan 2010)

Ahja habe erst jetzt mit dem programm angefangen, aber mal ne Frage zwischen durch, die GUi von dem Fenster(kleines Prog) kann ich doch in eine Klasse schreiben oder?


----------



## Firestorm87 (20. Jan 2010)

Kannst du und solltest du sogar...

Je mehr die dein Programm trennst, desto leichter ist es später die Übersicht zu behalten.
Es ist also sehr sauber, wenn man für jede Aufgabe eine eigene Klasse schreibt...


----------

