PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm-Design-Fragen.



Lin728
03-09-2003, 09:17
Grüssi!

Habe wieder mal ein paar Fragen zu Java, nun, leider lassen sich diese nirgends so richtig zuordnen.
Mal sehen:

1.) Was sind Patterns?
So wie ich das verstanden habe, sind das kleine HowTos wie man am besten Code sauber schreibt mir kleinen Bespielen etc.
Kennt wer gute design-pattern für Java im Netz, fals ich den Begriff richtig verstanden habe?

2.) Saubere Trennung von Gui- und Anwendungscode:
Ich habe damit immer wieder ein Problem. Am Anfang ist alles fein, und irgendwann bestaht mein Code eigentlich nur mehr aus Referenzen-übergeben.
Kennt vieleicht wer gute Tutorials für Fortgeschrittene, die beschreiben, wie man ab besten vorgeht?

3.) Was sind Schichten-Anwendungen?
Ich habe schon öfters von Tier-Modellen gehört (2,3), wie funktioniert das denn wirklich? Kennt wer eine gute Seite?

4.) Ich muss gerade ein Programm schreiben, dass enorm viel auf Client/Server abwickelt.
Kennt vieleicht wer ein gutes Tutorial, dass sich mit Client/Server Kommunkation auseinandersetzt? Egal welche Sprache.

lg

wraith
03-09-2003, 09:25
Original geschrieben von ceisserer
1.) Was sind Patterns?
So wie ich das verstanden habe, sind das kleine HowTos wie man am besten Code sauber schreibt mir kleinen Bespielen etc.
Kennt wer gute design-pattern für Java im Netz, fals ich den Begriff richtig verstanden habe?

Patterns,DesignPatterns,Muster die ein in der Anwendungsentwicklung immer wiederkehrendes Problem beschreiben und den Kern der Lösung des Problems erläutern.
Paradebeispiel ist immer:
Von einer Klasse darf es nur eine Instanz geben mit einem zentralen Zugriffspunkt -> Singleton-Pattern.

Von Bruce Eckel gibt es ein E-Book,das DesignPatterns am Bsp von Java erläutert (Titel iirc 'Thinking in Patterns').

Deine zweite Frage ist auch eines der Probleme,die durch DesignPattern versucht werden in den Griff zu bekommen.

kehj
03-09-2003, 11:44
zu 2: Klassischer Kandiat: Das MVC-Muster.

Es trennt ein (graphisches) Programm in die Teile

M (Modell): alles, was Berechnungen macht.
V (View): die Ausgabe
C (Controller): die Eingabe

Beispiel ein Programm, das Sortieralgorithmen visualisiert (hab ich mal geschrieben)

M: im wesentlichen der Sortieralgorithmus, die Datenerzeugung (erzeugen von Zufallsdaten, sortierten Daten, invers sortierten Daten, ...) und ein bißchen Kleinkram

V: die Ausgabe, liest die (teil-) sortierten Daten vom Modell und bereitet sie graphisch auf.

C: alle Knöpfe, mit denen du irgendwelche Einstellungen machen kannst (wieviele Daten sollen sortiert werden, was für Daten sollen sortiert werden -> zufällig, sortiert, invers sortiert, ...)

Die Kommunikation findet über Ereignisse statt. Beispiel: Modell meldet, daß ein Sortierschritt abgeschlossen ist. Daraufhin liest View die Daten vom Modell und macht was damit. Wichtiges Design-Pattern ist das Befehl-/ Beobachter- Muster.

zu 1: Pattern (Muster) kannst du einfach mit Strickmustern vergleichen. Ein Architekturvorschlag, der für bestimmte Situationen sinnvoll ist.
Simples Beispiel, das du kennst: Iteratoren unter Java. Du kannst über alle Elemente beispielsweise einer Liste laufen, ohne zu wissen, wie diese Liste implementiert ist (Array, verkettete Liste, wilde Methoden).
Einfach im Netz suchen, da gibt es tonnenweise Doku. Garantiert, hab ich vor 'nem Monat auch machen müssen (stand 'ne Klausur an)

f0rtex
03-09-2003, 17:45
Hier noch ein Link mit ein paar Patterns
http://home.earthlink.net/~huston2/dp/patterns.html

code-Beispiele in Java und C++ sind auch vorhanden.

greets
f0rtex

Lin728
05-09-2003, 10:20
Hi Leutz!

Danke erstmal für die vielen Anregungen. Ich habe mir erstmal "Thinking in Patterns 0.9" reuntergeladen, da mir auch Bruce Eckelts Buch "Thinking in Java2" sehr geholfen hat, OOP zu verstehen (ist schon ne weile her...).

Danke für alles

kehj
05-09-2003, 13:17
Moin,

du willst ein Entwurfsmuster für Client/Server Kommunikation?
Nimm einen Proxy.
Simples Prinzip: Du hast lokal ein Stellvertreterobjekt mit einer festen Schnittstelle. Diese gibt dir alle Funktionen, die der Server dir bietet.
Das Objekt nimmt die Anfragen entgegen und schickt sie auf's Netz, liest die Antworten und erzeugt die Rückgabewerte.

Das ist das Pattern. Was du brauchst, ist eine Anleitung, wie man die Implementation macht.
Entwurfsmuster sagen IMHO nichts, falsch wenig, über die tatsächliche Implementation aus. Sie bieten (auf technischer Ebene) Design-Konzepte...

Soll kein Angriff sein, ich wollte nur den Begriff klarstellen ;)

Lin728
05-09-2003, 15:09
Was ich brauche ist ein Tutorial wie man performante Client-Server kommunikation schreibt.....

Mfg

anda_skoa
05-09-2003, 16:25
Wenn du Methodenaufrufe übertragen willst, bietet sich da bei Java RMI an (Remote Method Invocation)

Wenn es simpler geht, kann man mit ObjectStreams in Java eigentlich auch komplexere Protokolle relativ einfach implementieren.

Ciao,
_

Lin728
05-09-2003, 20:24
Danke für die Tips!

Nein, was ich suche sind eher Sprachen/Platform-neutrale techniken. Es sollte z.B. ohne weiters möglich sein einen MFC Client dazuzuprogrammieren.
Also ein Asci-basierendes protokoll, bei dem eigentlich nur sehr viele Daten übertragen werden müssen.

Da hab ich mir halt gedacht, vieelicht gibt es schon Bibliotheken, die für solche Aufgaben geschrieben wurden, oder Howtos wie man sowas schnell und recourcensparend auslegen kann....

Mfg