Schwierigkeiten bei GUI Programmierung und Zuständigkeiten

Algorithmen, Sprachunabhängige Diskussionen zu Konzepten, Programmiersprachen-Design
Antworten
marioschluse
Beiträge: 2
Registriert: Do Jun 23, 2016 10:14 pm

Schwierigkeiten bei GUI Programmierung und Zuständigkeiten

Beitrag von marioschluse » Do Jun 23, 2016 10:44 pm

Hallo,
bei der GUI-Programmierung habe ich öfters ein Problem mit den Zuständigkeiten.
Es ist schwer das Problem in Worte zu fassen, vielleicht ist es auch trivial, aber ich versuche es Anhand eines vereinfachten Beispiels zu erklären.

Beim Drücken auf einem Button A soll eine Reihe von Dingen passieren.
- ein Button B deaktiviert werden
- die Zeit angehalten werden
- ein Text ausgegeben werden.
- ein Bild bewegen
- etc.
[...]

Wo soll die Logik dazu implementiert werden?
Sollen die Funktionen von Button A möglichst einzeln aufgerufen werden,
oder sollte man die Funktionen auch auf Button B verteilen und kombienieren(dabei fällt es mir schwer zu entscheiden, welcher Button für was genau Zuständig sein soll...).

Ich kann die Vor- und Nachteile nicht abwägen...
Ich hoffe meine Problematik ist klar geworden.

Ich hoffe die "Problematik" ist verständlich.

Vielen Dank

nouseforname
Beiträge: 236
Registriert: Do Feb 10, 2011 6:31 pm

Re: Schwierigkeiten bei GUI Programmierung und Zuständigkeit

Beitrag von nouseforname » Fr Jun 24, 2016 5:06 am

Hallo und Willkommen im Forum,

ich denke es gibt keinen pauschalen Weg etwas "richtig" zu Programmieren. Manches ergibt sich mit der Zeit erst, und manchmal baut man vielleicht auch etwas um. Auch kommt es auf die Grösse des Projektes an wie sehr man eine Aufteilung in Klassen und Methoden oder Funktionen vornimmt.

Dein Button-Klick ruft ja eine Methode auf. je nach Aufwand der durchzuführenden "Arbeit", würde ich es aufsplitten oder eben nicht.

Grundsätzlich handhabe ich es so:
- alles was nur dort und/oder einmalig durchgeführt wird, kann auch dort bleiben
- alles was eventuell mehrmals benötigt wird, wandert in eine eigene Methode damit diese immer wieder aufgerufen werden kann


Dein Minimalbeispiel lässt sich wahrscheinlich jeweils mit dem Aufruf "interner" Methoden durchführen:

Code: Alles auswählen

buttonA_onClick()
{
  buttonB.enabled = false;
  timer.stop;
  label.setText("TEXT");
  image.setPos(123, 456);
}
Hier würde es keinen Sinn machen es mit eigenen Mehtodenaufrufen zu versehen. Sind deine Vorgänge aber komplexer, kann es alleine aufgrund der Übersichtlichkeit sinnvoll sein. Grundsätzlich kann man sagen, teile jedes Problem in so kleine "Brocken" wie möglich. Wenn ein Projekt Grösser wird steigert das die Übersichtlichkeit, Erweiterbarkeit und die Möglichkeiten bestimmte Codeteile wieder und wieder zu verwenden.

marioschluse
Beiträge: 2
Registriert: Do Jun 23, 2016 10:14 pm

Re: Schwierigkeiten bei GUI Programmierung und Zuständigkeit

Beitrag von marioschluse » Fr Jun 24, 2016 8:12 am

Danke für deinen Ratschlag, das hat mir weitergeholfen.
Wahrscheinlich kommt das einfach mit der Erfahrung.

Eine Frage noch: Wie sieht es eigentlich mit Überprüfungen aus?

Code: Alles auswählen

buttonA_onClick()
{
  if(....){
  moveImage(123, 456);
  }
}
oder

Code: Alles auswählen

buttonA_onClick()
{
  moveImage(123, 456);
}

moveImage (x,y)
{
  if(...){
      image.x = x;
      image.y = y;
   }
}
Die erste Methode könnte für andere einfacher sein,
weil man direkt in der "oberen" Schicht sehen kann, welche Bedingugnen erfüllt werden müssen,
ohne in die "untere" Schicht schauen zu müssen... oder?

nouseforname
Beiträge: 236
Registriert: Do Feb 10, 2011 6:31 pm

Re: Schwierigkeiten bei GUI Programmierung und Zuständigkeit

Beitrag von nouseforname » Fr Jun 24, 2016 8:38 am

Ich denke das kommt auf die Art der Überprüfung an, und ergibt sich auch aus dem Kontext.

Zum Beispiel:
- Eine Überprüfung ob das Image überhaupt exitiert, gehört meiner Meinung nach in "moveImage",
- Eine Überprüfung ob das Image versetzt werden muss/kann, gehört vor den Aufruf von "moveImage"

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Schwierigkeiten bei GUI Programmierung und Zuständigkeit

Beitrag von Xin » Fr Jun 24, 2016 1:32 pm

marioschluse hat geschrieben:Beim Drücken auf einem Button A soll eine Reihe von Dingen passieren.
- ein Button B deaktiviert werden
- die Zeit angehalten werden
- ein Text ausgegeben werden.
- ein Bild bewegen
- etc.
[...]

Wo soll die Logik dazu implementiert werden?
In einer Logikeinheit, die das repräsentiert. Eine Klasse "MyWindow", was die beiden Knöpfe kontrolliert und die dazugehörigen Handlungen, wenn "A" gedrückt wird.
marioschluse hat geschrieben:Sollen die Funktionen von Button A möglichst einzeln aufgerufen werden,
oder sollte man die Funktionen auch auf Button B verteilen und kombienieren(dabei fällt es mir schwer zu entscheiden, welcher Button für was genau Zuständig sein soll...).
Ich weiß auch nicht wofür A und B zuständig sein sollen... ^^

Wenn ich mir Deine Erklärung aber so anhöre, stellst Du Dir die Frage, wie man die GUI programmiert, dass sie das Problem löst. Die Perspektive sollte aber in meinen Augen anders sein: Welche GUI brauche ich eigentlich, um das Problem zu lösen?
Welche Knöpfe es gibt, entscheidet sich am Problem. Vielleicht beschreibst Du Dir erstmal selbst, wie man Dein Problem lösen muss und welche Knöpfe dafür notwendig sind und welche man zu welchem Zeitpunkt drücken oder eben nicht drücken darf.

Jedes Programm wechselt Zustände: Beim Start läuft die Zeit, man kann zwei von drei Knöpfen drücken, drückt man Knopf 1 wechselt der Zustand des Programms, die Zeit hält an, man kann jetzt auch Knopf 3 drücken, aber dafür ist Knopf 2 deaktiviert... Was tut Dein Programm, welche unterschiedlichen Zustände braucht es?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten