Question

J'ai lu sur State Motif et je cherche maintenant à poursuivre mes connaissances en explorant une application Swing (EXPLE: Calculatrice) qui l'applique.

Où puis-je trouver un tel tutoriel?

Il doit présenter une application vraiment simple qui utilise Swing.Je suis confus sur la manière dont le modèle d'état pourrait être utilisé dans un projet SWING?

Était-ce utile?

La solution

Je ne pense vraiment pas qu'une application de calculatrice est une bonne correspondance pour le modèle d'état.Une simple calculatrice n'a pas trop d'états, peut-être sur / off, mais c'est trop trivial.Un outil de dessin est une meilleure correspondance.

Si vous voulez vraiment développer une calculatrice basée sur le modèle d'état, vous devez vraiment être assez créatif.Mais pourquoi pas?Vous pouvez inventer / mettre en place une calculatrice dans laquelle les opérations de base (addition, substraction, multiplication, division) sont des modes (états):

public enum Modes {ADDITION, SUBTRACTION, MULITPLICATION, DIVISION}

public interface Mode {
  double calculate(double a, double b);
}

public class AdditionMode implements Mode {
  public double calculate(double a, double b) {
    return (a+b);
  }
}
// similiar classes for other math operation modes

public class Calculator {
  private Mode mode;
  public setMode(Modes mode) {
    switch (mode) {
      case ADDITION: this.mode = new AdditionMode();
      // ...
    }
  }
  public double calculate(double a, double b) {
    return mode.calculate(a, b);
  }
}

Ceci est un brouillon très simple et basique et, bien sûr, ne couvre pas la partie de vue (boîte de dialogue balançoire ou autre).Sur la boîte de dialogue, vous pouvez utiliser quatre boutons radio pour définir les modes, un champ de texte pour capturer l'entrée et un champ de texte ou une étiquette pour imprimer le résultat réel.

Autres conseils

Un exemple vous trouvez ici

J'ai utilisé ce modèle dans une application Swing pour représenter un outil de dessin sélectionné (ligne, polygone, etc.).

Une application complète qui utilise le modèle d'état de cette manière est JHOTDRAW

Edit: Pour une calculatrice, il peut être utilisé pour cartographier les touches de frappe (chiffres entrées et les opérateurs) en mode de calcul (== State) et en mode dessin graphique (2e état) pour le zoom et le déplacement du graphique affiché.

Pour représenter un mode comme DEG, RAD et GRA (degrés, radians) Vous ne devriez pas utiliser le modèle d'état.Cela serait terminé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top