was alles ins Userinterface?

Status
Nicht offen für weitere Antworten.

virtualAudio

Aktives Mitglied
Hi Leute,

für die Uni hab ich gerade ein kleines Buchhaltungsprogi zu schreiben. Das ganze war kein Problem und läuft tadellos.
Nur der Tutor will eine andere Ui als ich sie habe...ich wollte die Meinung von anderen auch dazu hören.

Ich hab 4Klassen:
EinAus.java mit der main()
Konto.java mit ner Methode addBuchung() und so variablen wie kontostand, anzahlBuchungen, waehrung, etc.
Buchung.java mit betrag, name, datum, info...

und Ui.java: Darin stehen eigentlich alle Ausgaben am Bildschirm und darin werden auch die Benutzereingaben entgegengenommen. ist es üblich in der Ui.java auch gleich die Eingaben des Users auf Ihre "Tauglichkeit" zu überprüfen, oder sollte hier wirklich nicht mehr als die pure Ausgabe von text stehen. Oder vielleicht diese pure Ausgabe und von der Eingabe nur das (zB) readline(), aber ohne Überprüfung(abgesehen von Exceptions) ob die Daten verwertbar sind?!

Bis jetzt hab ich in der Ui Methoden die die schon überprüfte Benutzereingabe so übergeben, dass sie gleich verwendbar ist...also hab ich zB eine
public int menu() im Objekt Ui die mir die eingabe des Users...welchen Menüpunkt er ausführen will (als int) übergibt. Sie überprüft zuvor ob es ein Wert ist der auch einem menüpunkt zugeordnet ist. Dann hab ich zB eine ...
(in Pseudocode...)
Code:
public Buchung eingabeBuchung(Konto k){
    ...
    Buchung b = new Buchung(); 
    ...
    System.out.println("Betrag in " + k.waehrung() + " eingeben: "); 
    b.setBetrag(...
    if(b führt zu einem Problem mit k.kontostand(){abbruch der Einbuchung}
    ...
    b.setDatum(...
    ... etc
   
   return Buchung;
}

Der tutor meint das wäre zuviel fürs Ui...was haltet ihr davon?
Ich persönlich meine, dass diese Überprüfung hier am handlichsten und überschaubarsten ist.

Ich hoffe auf Eure Stellungnamen! :)

beste Grüße
Andi
 
A

Anmeldeboykottierer

Gast
HI,
ich würde mal sagen es gibt 2 Punkte die du beachten solltest:
1) Dein Tutor gibt dir die Punkte, im Zweifel hat er erstmal recht
2) Was man allgemein erreichen möchte.

Deine Frage bezieht sich natürlich mehr auf 2), aber auch hier gibt es keine Vorschriften. MVC ist nur eine Möglichkeit. Mehrschichtsysteme an sich können verwendet werden, es wird dich aber nie einer dazu zwingen.

Etwas unabhängiger von MVC oder anderen Modellen, gilt immer, dass man eine möglichst lose Bindung haben möchte. Eine solche ist immer dann erreicht, wenn jede Klasse von möglichst wenigen anderen Klassen direkt abhängt. Insbesondere lässt sich dies über Interfaces oder abstrakte Klassen realisieren. Hier kannst du zwar Abhängigkeiten zu einer Implementierung haben, diese muss dir aber nicht bekannt sein (du kennst nur die Schnittstelle).
Der klare Vorteil in so einer losen Bindung liegt dann darin, dass du alles sehr leicht austauschen kannst, da es keine (sehr wenige) direkten Abhängigkeiten gibt. Dies gilt in beiden Richtungen, du kannst einerseits die Implementierung eines Interface austauschen, andererseits aber auch die ganze Umgebung in der diese Implementierung zum Einsatz kommt (man würde es wohl eher Wiederverwenden nennen!).

Um es mal einfach zu sagen, bei dir würdest du (freiwillig) auf diese Möglichkeiten verzichten. Ein UI hat keine anderen Aufgaben, als eine Schnittstelle zum Benutzer zu sein. Mehr sollte keiner erwarten, also ist die Überprüfung schon nicht mehr übersichtlich. Wenn du UI liest (ist der Name schon schlecht gewählt), dann gehst du nur von einem UserInterface aus, da steckt nicht im Namen drin, dass irgendwas geprüft wird.
Die Frage die du dir nur stellen solltest ist, muss die UI wirklich wissen, was mit den Daten passiert? Was ist wenn du dich irgendwann entschließt eine GUI zu implementieren? Hier musst du dann die Überprüfung der Werte mit in die Logik der GUI aufnehmen, soweit so gut.
Hast du mehr als eine GUI (z.B. weil unterschiedliche Kunden unterschiedliche GUIs wünschen), dann müsstest du bei jeder Änderung der Überprüfung immer in jeder GUI (oder auch jeder anderen UI) nach der Stelle suchen, wo die Überprüfung stattfindet und sie hier ändern. Das ist extrem Fehleranfällig! Du kannst leicht in einer Datei etwas falsch korrigieren, du kannst eine GUI vergessen usw.
Hast du hier nur eine Klasse, die sich halt nur um die Überprüfung kümmert, dann musst du nur diese abändern. Das ist dann doch deutlich weniger mit Problemen verbunden, tauchen welche auf, so weißt du schon wo du suchen kannst.

Für ein so kleines Projekt mag das ganze noch nicht so richtig wichtig klingen, aber hier kann ich nur sagen, dass sich der Mensch eine Arbeitsweise angewöhnt und nicht je nach Projekt hin und her wechseln kann. Vorallem aber fangen viele Projekte extrem klein an und enden dann doch in einer immensen Komplexität! Hier haben bestimmt einige schon mal die Erfahrung gemacht, was da dann den Unterschied zwischen einer sauberen Modellierung (und konsequent loser Bindung) und ebend Fehlen von Selbigem ausmacht. Ich kann nur sagen, dass ich als Student dann auch am Anfang noch so gearbeitet hatte. Als da dann aber erste Anschlussaufträge reinkamen, bei denen man einen großen Teil hätte leicht wieder verwenden können, wäre nicht ich für das SW-Design verantwortlich gewesen... War etwas mehr Arbeit, hat aber eine andere Herangehensweise bei mir motiviert! Heute sieht das (nach eigenem Empfinden) dann doch deutlich besser aus!

Gruß Der Anmeldeboykottierer
 

virtualAudio

Aktives Mitglied
Suuper Antworten, danke!!!

Ich bin motiviert das in meine zukünftige Herangehensweise zu implementieren :), ich hab ja noch genug chancen...war ja erst das erste Beispiel...die LV heißt übrigens "Objektorientiertes Programmieren" :)

danke und gruuuhs
Andi
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
LFB In einer For-Schleife alles in einer Zeile ausgeben Java Basics - Anfänger-Themen 14
KyZarr Was brauche ich alles? Java Basics - Anfänger-Themen 2
M Get Methode alles einzeln? Java Basics - Anfänger-Themen 6
P Alles eine Typfrage Java Basics - Anfänger-Themen 7
B Doppelt Verkettete Liste - Ist alles gut so? Java Basics - Anfänger-Themen 3
I Erste Schritte Resource Bundle - Alles in einem File oder mehrere? => Faktor Performance Java Basics - Anfänger-Themen 2
B Schulprojekt mit Java, was kann man alles programmieren? Java Basics - Anfänger-Themen 5
V Was soll alles in den Konstruktor? Java Basics - Anfänger-Themen 3
K JButton alles zurücksetzen Java Basics - Anfänger-Themen 1
E ExecutorService warten bis alles fertig? Java Basics - Anfänger-Themen 5
J Frage zum Thema ... alles mögliche! Java Basics - Anfänger-Themen 6
Anfänger2011 Wie bricht man alles ab wenn eine Bedingung nicht erfüllt ist? Java Basics - Anfänger-Themen 21
J Kann man auch alles in einer Klasse schreiben? Java Basics - Anfänger-Themen 2
D setAlwaysOnTop(true); toFront(); - bringt alles nichts Java Basics - Anfänger-Themen 5
I Was gehört alles in eine Softwaredokumentation? Java Basics - Anfänger-Themen 4
M MergeSort - Threads in Anwendung bremsen alles! Java Basics - Anfänger-Themen 4
M nach dem Minimieren is alles wech.... Java Basics - Anfänger-Themen 7
-horn- Wann wird alles NaN erzeugt? Java Basics - Anfänger-Themen 22
S Regulärer Ausdruck - alles was keine Zahl ist entfernen Java Basics - Anfänger-Themen 2
G Zufallszahlen die alles einmal vorkommen Java Basics - Anfänger-Themen 15
D Es wird nicht alles angezeigt Java Basics - Anfänger-Themen 4
M Was brauch ich alles für Java Programmieren Java Basics - Anfänger-Themen 14
G Einfügen aus Zwischenablage - alles doppelt? Java Basics - Anfänger-Themen 2
G kann man alles mögliche in Obect kapseln? Java Basics - Anfänger-Themen 2
K Programm tut nicht alles, was es soll Java Basics - Anfänger-Themen 3
P Was brauche ich alles um mit Java loszulegen Java Basics - Anfänger-Themen 24
2 Alles Selektieren in JEditorPane Java Basics - Anfänger-Themen 5
G regulärer Ausdruck alles was zwischen ' ' steht Java Basics - Anfänger-Themen 4
G textfield überdeckt alles Java Basics - Anfänger-Themen 3
I Drucker fragen, ob alles in ordnung Java Basics - Anfänger-Themen 3
D Einmal Runden ohne alles Java Basics - Anfänger-Themen 7
C GregorianCalendar glaubt mir alles wieso! Java Basics - Anfänger-Themen 12
I ImageIO.write(bild, "was gibts da alles", pfad); Java Basics - Anfänger-Themen 6
G Paint Methode löscht alles Java Basics - Anfänger-Themen 4
G Was brauch ich alles Java Basics - Anfänger-Themen 7
M JTextField auf anklickern alles wech? Java Basics - Anfänger-Themen 12
M j2ee: was braucht es alles dazu? Java Basics - Anfänger-Themen 3
R Alles ignorieren ausser Zahlen Java Basics - Anfänger-Themen 21
A Was kann Java alles? Java Basics - Anfänger-Themen 22
P Mediacenter Userinterface auf langsamem Rechner Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben