OOP, wie gehts richtig? (Beispiel von meinem Prof)

h4nk

Mitglied
Hallo Leute, ich versuche gerade die Gedanken meines Profs für Programmierung nachzuvollziehen.

Es geht konkret darum, einen Rechner zu implementieren, der in der Lage ist, Brüche zu addieren, multiplizieren, dividieren und subtrahieren. Das ganze schön objektorientiert.

Mein Ansatz war folgender Klassenaufbau:

1. Bruch:
- Zähler und Nenner als Variablen mit Getter
- Konstruktor, in dem direkt mithilfe des Größten gemeinsamen Teilers gekürzt wird

2. Rechner:
- Methoden zum Berechnen, alle kriegen als Argument zwei Brüche übergeben und geben einen "Ergebnisbruch" zurück

3. Starter:
- main-Methode, in der Rechner-, Eingabe- und Ausgabeobjekte instanziiert werden und die Methoden zum Einlesen, Rechnen und Ausgeben aufgerufen werden

4. Eingabe/Ausgabe:

- Methode zum Einlesen von Brüchen, zum einlesen der Operation und eine weitere zum Ausgeben. Letztere bekommt den Ergebnisbruch übergeben.


Mein Prof hat allerdings einen anderen Ansatz:

1. Input/Output:
- Eine Methode zur Eingabe eines Bruchs, eine zweite für die Operation
2. Bruchautomat:
- main-Methode, User wird aufgefordert,
3. Bruch:
- Hier ist das, was mich verwirrt: Die Klasse Bruch besitzt alle Methoden zum Berechnen selbst. Jede Methode wird also von einem Bruchobjekt aufgerufen und ihr wird ein zweiter übergeben. Die Methode addiert dann zum Beispiel den übergebenen Bruch zum Bruchobjekt, von dem die Methode aufgerufen wird.
- Zähler- und Nennervariable und getter+setter

Wie sieht denn jetzt eine Musterlösung aus, ich dachte es ist nicht OOP, wenn die Datenklasse solche Methoden hat? Ich kann morgen auch gerne Codebeispiele posten.

Vielen Dank :)
 

Kababär

Top Contributor
ich würde sagen, dass Bruch hier kein reines Datenobjekt ist, sondern eben ein Objekt mit implementierter Logik. Woanders hätte ich die Logik jetzt auch nicht hingepackt, denn man addiert zwei Brüche ja anders als zwei ganze Zahlen und da gehört die Logik eben zu der Klasse Bruch dazu.
 

InfectedBytes

Top Contributor
ich würde sagen, dass Bruch hier kein reines Datenobjekt ist, sondern eben ein Objekt mit implementierter Logik. Woanders hätte ich die Logik jetzt auch nicht hingepackt, denn man addiert zwei Brüche ja anders als zwei ganze Zahlen und da gehört die Logik eben zu der Klasse Bruch dazu.
Sehe ich eigentlich auch so, denn dann könnte man die Brüche z.B. so verwenden:
Java:
Bruch a = ...;
Bruch b = ...;
Bruch c = a.add(b);

Ansonsten wäre es hilfreich die exakte Aufgabenstellung zu kennen.
 

h4nk

Mitglied
Danke euch, anscheinend macht es tatsächlich mehr Sinn, wie mein Prof es gemacht hat. Woran erkenne ich, wann die Logik mit zu einer Klasse gehört und wann sie ausgelagert werden sollte?

... man addiert zwei Brüche ja anders als zwei ganze Zahlen und da gehört die Logik eben zu der Klasse Bruch dazu.

Wo genau liegt hier der Unterschied zu ganzen Zahlen, schließlich sind die Operationen doch im Endeffekt das Gleiche, das bei Brüchen halt noch ein paar Sachen mehr beachtet werden müssen.
 

h4nk

Mitglied
Finde ich immer noch nicht ganz klar :D Denn so könnte man ja sagen, dass bei allen Sachen, bei denen es über simple Operationen ganzer Zahlen hinausgeht, die Rechnungen in der Klasse gemacht werden. Soll heißen: dann müsste es ja auch bei Vektoren, Matrizen usw das gleiche sein, oder?

Einen Satz darüber welche Kriterien erfüllt sein müssen, oder ein Link zu einem Artikel den ich mir durchlesen kann, wäre klasse, denn so glaube ich nicht, dass ich es in Zukunft reproduzieren kann (außer bei den hier genannten Sachen).
 

Kababär

Top Contributor
So ist es ja auch. Kommt natürllch auch auf die Anwendung an.
In der Schule/Uni muss das allerdings nicht so sein, da geht meist um das "Wie wird das implementiert" und vernachlässigt dann auch mal gutes Design. Da geht's dann rein um die Funktion.

Prinzipiell musst du dich nur Fragen, was dein Objekt alles können muss und das schöne daran ist, dass sich diese Frage sehr realitätsnah beantworten lässt.
Eine Formel dazu gibt es nicht ..
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T JLabel richtig anordnen? wie gehts? Java Basics - Anfänger-Themen 9
C Quellcode richtig bisher? wie gehts weiter? Java Basics - Anfänger-Themen 13
T Input/Output HTTP 403 aber im Browser gehts Java Basics - Anfänger-Themen 2
T Collections Werte aus einer HashMap auslesen, oder gehts auch einfacher ? Java Basics - Anfänger-Themen 6
T Datentypen byte -Division..mal gehts mit cast mal ohne Java Basics - Anfänger-Themen 5
J Bald erstes Java Buch durchgearbeitet - Wie gehts nun weiter? Java Basics - Anfänger-Themen 6
Screen Gehts ohne SecurityManager ? Java Basics - Anfänger-Themen 6
T manchmal gehts, manchmal nicht???? Java Basics - Anfänger-Themen 25
Y BufferdImage schreiben, unter Vista gehts, unter Ubuntu nicht... Java Basics - Anfänger-Themen 9
H2SO3- dreieck, bild --> maus klick event. Wie gehts? Java Basics - Anfänger-Themen 10
D Runtime Prozeß hängt sich auf. in der Kommandozeile gehts Java Basics - Anfänger-Themen 5
M unauffindbarer Fehler Console, aber unter Eclipse gehts. =( Java Basics - Anfänger-Themen 6
C Wie gehts weiter? Java Basics - Anfänger-Themen 6
J neues gui hinzugefügt .... jetzt gehts nicht mehr Java Basics - Anfänger-Themen 10
D Regex greift nicht richtig Java Basics - Anfänger-Themen 4
C Darstellung von Datum - Codes richtig? Java Basics - Anfänger-Themen 2
C Rechnen mit Brüchen, ist meine Lösung soweit richtig? Java Basics - Anfänger-Themen 4
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
K Hab ich dass so richtig erklärt (Objekte und Referenzen)? Java Basics - Anfänger-Themen 5
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
B Hashmap richtig bauen, die Tripel auf Zahl abbildet? Java Basics - Anfänger-Themen 10
K Warum läuft das Programm nicht(bzw. nicht richtig) Java Basics - Anfänger-Themen 4
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
B Semaphoren in Abhängigkeit an Bedingungen richtig setzen Java Basics - Anfänger-Themen 3
berserkerdq2 Habe ich die Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 3
R CSV Reader läuft nicht richtig an Java Basics - Anfänger-Themen 8
E Umlaute und Sonderzeichen werden nach der Build Project nicht richtig angezeigt Java Basics - Anfänger-Themen 2
G jButton führt Main Methode nicht richtig aus Java Basics - Anfänger-Themen 3
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
JensXF Methode überschreiben, so richtig? Java Basics - Anfänger-Themen 4
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
C Sind die while-Schleifen richtig in for-Schleifen ersetzt worden? Java Basics - Anfänger-Themen 8
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
L Ist der Code richtig Java Basics - Anfänger-Themen 3
J Wie bestehenden Quellcode in IDE richtig übernehmen Java Basics - Anfänger-Themen 27
F Methoden Methode richtig aufrufen Java Basics - Anfänger-Themen 3
D Klassen Klassendiagramm richtig erstellen Java Basics - Anfänger-Themen 20
J Module richtig einbinden Java Basics - Anfänger-Themen 2
B Sind meine If-Statements richtig angesetzt ? Java Basics - Anfänger-Themen 27
V Boolean Wert nicht richtig erkannt Java Basics - Anfänger-Themen 4
X Wie Generics richtig benutzen ? Java Basics - Anfänger-Themen 5
P Stringbuilder richtig einsetzen Java Basics - Anfänger-Themen 1
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
A Array richtig füllen Java Basics - Anfänger-Themen 2
S String richtig formatieren Java Basics - Anfänger-Themen 2
P Methoden richtig anwenden Java Basics - Anfänger-Themen 3
O Popoup Menü im JTable richtig anzeigen Java Basics - Anfänger-Themen 6
D Richtig für Programmieren an der UNI lernen Java Basics - Anfänger-Themen 8
X Best Practice Ein int Array richtig mischen Java Basics - Anfänger-Themen 20
D Richtig Vorbereiten auf eine Programmier Klausur Studium. Java Basics - Anfänger-Themen 7
M ObservableList wird nicht richtig geleert Java Basics - Anfänger-Themen 0
T Sortieralgorithmen richtig? Java Basics - Anfänger-Themen 1
X Objekte einer ArrayList richtig ausgeben? Java Basics - Anfänger-Themen 8
S Wie implementiere ich MouseDragged richtig Java Basics - Anfänger-Themen 7
F Konstruktor richtig implementiert? Frage zu Benutzereingaben... Java Basics - Anfänger-Themen 9
I OOP Objektnamen über die Konsole richtig einlesen Java Basics - Anfänger-Themen 9
P Input/Output PQ-Formel wird nicht richtig berechnet Java Basics - Anfänger-Themen 6
P Zeichenkette Zeichen ausschlißen funktioniert nicht richtig Java Basics - Anfänger-Themen 9
H Wie lerne ich Java richtig? Java Basics - Anfänger-Themen 2
N Ich weiß nicht, wie ich meinen Code richtig designen soll und komme nicht weiter Java Basics - Anfänger-Themen 4
B Wie instanzisiert man einen Cursor richtig? Java Basics - Anfänger-Themen 3
J Polymorphie und Dynamisches Binden richtig nutzen Java Basics - Anfänger-Themen 11
N Best Practice Ist die Sortierung richtig? Java Basics - Anfänger-Themen 3
J Erste Schritte Lottozahlen richtig generieren. Java Basics - Anfänger-Themen 12
J Behauptung so richtig? Java Basics - Anfänger-Themen 10
R Listen richtig implementieren Java Basics - Anfänger-Themen 3
B OOP Objekt in IF erzeugen - funktioniert nicht so richtig Java Basics - Anfänger-Themen 11
A Methode richtig überladen Java Basics - Anfänger-Themen 6
H Aufgabe so richtig gelöst? Java Basics - Anfänger-Themen 14
S Code richtig / besser machbar? (Nicht sicher, ob Code selbst falsch ist) Java Basics - Anfänger-Themen 4
W Ist mein Struktogram richtig erstellt worden? Java Basics - Anfänger-Themen 4
L Taschenrechner mit switch und while funktioniert noch nicht richtig Java Basics - Anfänger-Themen 22
U Mehrfach verwendete Sub-Klassen richtig einbinden Java Basics - Anfänger-Themen 4
L Schleife funktioniert nicht richtig Java Basics - Anfänger-Themen 12
Meeresgott OOP Richtig mit java.util.Property umgehen Java Basics - Anfänger-Themen 22
Y Erste Schritte Ich verstehe this. nicht so richtig Java Basics - Anfänger-Themen 5
I Programm von mir - keine Ahnung mehr ob richtig falsch:-( Java Basics - Anfänger-Themen 6
M Abstände richtig wiedergeben Java Basics - Anfänger-Themen 2
S nio move() funktioniert nicht richtig Java Basics - Anfänger-Themen 2
J Timer richtig pausieren Java Basics - Anfänger-Themen 2
B Ist meine Klasse richtig kommentiert? Java Basics - Anfänger-Themen 2
kilopack15 Ist diese setter-Methode richtig? Java Basics - Anfänger-Themen 2
S Primzahlen berechnen funktioniert nicht richtig Java Basics - Anfänger-Themen 1
kilopack15 Lösungsansatz richtig? Java Basics - Anfänger-Themen 23
Meeresgott OOP Socket Verbindung richtig Kapseln Java Basics - Anfänger-Themen 0
Meeresgott OOP Gui, Logik und Datenbank richtig aufbauen Java Basics - Anfänger-Themen 43
T Datum wird auf der Konsole richtig ausgegeben, aber im Textarea kommt ERROR Java Basics - Anfänger-Themen 8
C Warum funktioniert mein If Statement nicht richtig? Java Basics - Anfänger-Themen 18
J Aufgabe(Threads) richtig verstanden/implementiert Java Basics - Anfänger-Themen 27
K Erste Schritte Wie lerne ich Java richtig? Java Basics - Anfänger-Themen 22
U Richtig *.properties speichern Java Basics - Anfänger-Themen 0
N Lambda Ausdrücke richtig schreiben Java Basics - Anfänger-Themen 4
B OOP Wie benutze ich die Main Funktion richtig? Java Basics - Anfänger-Themen 10
3 Gitternetz richtig darstellen Java Basics - Anfänger-Themen 3
B Exception richtig einbinden Java Basics - Anfänger-Themen 1
D CSV Files richtig zusammenführen Java Basics - Anfänger-Themen 3
D Array richtig ausgeben Java Basics - Anfänger-Themen 6
Z HashMap richtig benutzen Java Basics - Anfänger-Themen 2
S Variable (int) erhöht sich nicht richtig Java Basics - Anfänger-Themen 18

Ähnliche Java Themen

Neue Themen


Oben