Was würdet ihr besser/anders machen?

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi,
ich bin gerade an der Programmierung eines Taschenrechners beschäftigt. Nun jetzt mal meine Frage, was würdet ihr hier anders machen und warum?
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Taschenrechner extends JFrame
{
    private String anzeige = "0.0";
    
    String[] number = { "7", "8", "9", "4", "5", "6", "1", "2", "3", ".", "0", "+/-" };
    String[] operator = { "=", "CE", "C", "+", "*", "x^x", "-", "/", "sqrt", "%", "Pi", "1/x" };
    
    JTextPane display = new JTextPane();
    
    JPanel panels = new JPanel(new GridLayout(1, 2, 3, 2));
    
    JPanel numberPanel = new JPanel(new GridLayout(4, 3, 1, 1));
    JPanel operatorPanel = new JPanel(new GridLayout(4, 3, 1, 1));
    
    JButton numberButtons[] = new JButton[number.length];
    JButton operatorButtons[] = new JButton[operator.length];
    
    public Taschenrechner()
    {
        setTitle("Taschenrechner");
        setSize(265, 300);
        setResizable(false);
        createGuiAndShow();  
        
        add(display, BorderLayout.NORTH);
        panels.add(numberPanel);
        panels.add(operatorPanel);
        add(panels, BorderLayout.CENTER);
        
        pack();
        display.setEditable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
    
    public static void main(String[] Args)
    {
        new Taschenrechner();
    }

    private void createGuiAndShow()
    {
        for(int i = 0; i < operator.length; i++)
        {
            operatorButtons[i] = new JButton(operator[i]);
            operatorButtons[i].setMargin(new Insets(5, 5, 5, 5));
        }
        for(int i = 0; i < operator.length; i++)
            operatorPanel.add(operatorButtons[i]);
        for(int i = 0; i < number.length; i++)
        {
            numberButtons[i] = new JButton(number[i]);
            numberButtons[i].setMargin(new Insets(5, 5, 5, 5));
        }
        for(int i = 0; i < number.length; i++)
            numberPanel.add(numberButtons[i]);
    }
}
 

Marco13

Top Contributor
Ich würde dafür sorgen, dass was passiert, wenn man die Buttons klickt :bae:
Na, bisher gibt's da nicht so viel dran zu bemängeln. Die Panels bräuchten vermutlich keine Instanzvariablen zu sein. Aber sonst...
 
G

Guest

Gast
Marco13 hat gesagt.:
Ich würde dafür sorgen, dass was passiert, wenn man die Buttons klickt :bae:

:lol: werd ich mir merken ;-) xD


Ok, danke, warum sollte man sie denn nicht als Instanzvariablen nutzen? Wäre doch für eventuelle spätere Methodenzugriffe nützlich oder?

MfG
Danke schonmal
Der Gast ;-)
 

Marco13

Top Contributor
Ich weiß nicht, was du mit "Methodenzugriffe" meinst. Aber diese Klasse stellt (bisher) ja nur die Bedien-Einheit eines Taschenrechners dar. Ich wüßte nicht, WER da WO drauf zugreifen sollte - insbesondere auf die Panels, wo die Buttons drinliegen. Man sollte (IMHO) davon ausgehen können, dass man nicht auf diese Panels zugreifen muss. Und wenn man das nicht tun muss, sind die Panels ja keine "Eigenschaft" der Bedien-Einheit, die von außen ausgelesen (und schon garnicht geändert) werden können sollte, sondern nur ein "Stilmittel", um das gewünschte Layout hinzukriegen. Du würdest ja z.B. auch nicht die Insets
operatorButtons.setMargin(new Insets(5, 5, 5, 5));
als Instanzvariablen speichern: Sie interessieren einfach niemanden.
 
G

Gelöschtes Mitglied 5909

Gast
- klassenvariablen mit modifier versehen (es sei denn du hast einen guten grund package protection zu nehmen)
- viel zu viel im konstruktor
 
G

Guest

Gast
Danke für die Antworten doch was ist schlimm daran wenn vielzuviel im Konstruktor steht? - Wenn ich statt es in den Konstruktor in 'createGuiAndShow()' schreibe wird diese ja auch vom Konstruktor aufgerufen
Oder gibt es da etwas was ich nicht weiß?

Danke[/code]
 

Marco13

Top Contributor
Naja, man könnte z.B. den Block
add(display, BorderLayout.NORTH);
panels.add(numberPanel);
panels.add(operatorPanel);
add(panels, BorderLayout.CENTER);
noch in die createAndShowGUI mit reinnehmen.

Ach und noch was: Statt
Code:
        for(int i = 0; i < operator.length; i++)
        {
            operatorButtons[i] = new JButton(operator[i]);
            operatorButtons[i].setMargin(new Insets(5, 5, 5, 5));
        }
        for(int i = 0; i < operator.length; i++)
            operatorPanel.add(operatorButtons[i]);
wäre
Code:
        for(int i = 0; i < operator.length; i++)
        {
            operatorButtons[i] = new JButton(operator[i]);
            operatorButtons[i].setMargin(new Insets(5, 5, 5, 5));
            operatorPanel.add(operatorButtons[i]); 
        }
besser (weniger code, übersichtlicher....)
 

happy_robot

Bekanntes Mitglied
Anonymous hat gesagt.:
Danke für die Antworten doch was ist schlimm daran wenn vielzuviel im Konstruktor steht? - Wenn ich statt es in den Konstruktor in 'createGuiAndShow()' schreibe wird diese ja auch vom Konstruktor aufgerufen
Oder gibt es da etwas was ich nicht weiß?

Danke[/code]
was machst du wenn du evtl noch einen weiteren konstruktur benötigst (z.b. einen mit einbem anderen parentfenster und anderen titel)?

kopierst du dann den konstruktor?

packe "in sich SINNVOLL geschlossene funktionalitäten" besser in gut-"benannte" methoden.



Code:
createGuiAndShow

sollte man z.b. in zwei methoden aufsplitten.

Code:
createGUI

und

Code:
showGUI

und im Konstruktor hat deren Aufruf nix verloren.

Ein Konstruktor sollte NUR und AUSSCHLIESSLICH das Objekt selber erzeugen!
 

Marco13

Top Contributor
Naja, createAndShowGUI stammt aus den ganzen Beispielen von sun :wink: ... das "show" besteht ja nur aus einem ...setVisible(true), ... hm :?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Alen123 Wie würdet ihr diese Aufgabenstellung lösen? Java Basics - Anfänger-Themen 18
B Wie würdet ihr diese Methode erklären? Java Basics - Anfänger-Themen 2
-horn- "Berechnung vorwärts, Optimierung rückwärts?" - Wie würdet ihr das machen? Java Basics - Anfänger-Themen 8
G Hilfe, wie würdet ihr das machen? Java Basics - Anfänger-Themen 5
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
S Was ist "besser"? Java Basics - Anfänger-Themen 5
R Uebersichtlicher bzw. besser Programmieren Java Basics - Anfänger-Themen 13
Shizmo Methoden Formel besser implementieren Java Basics - Anfänger-Themen 8
J Texte für Java Programmierung besser verstehen? Java Basics - Anfänger-Themen 2
S Code richtig / besser machbar? (Nicht sicher, ob Code selbst falsch ist) Java Basics - Anfänger-Themen 4
B Ist MyFrame oder JFrame besser? Java Basics - Anfänger-Themen 3
O Java und JSF besser verstehen Java Basics - Anfänger-Themen 1
M Komplexe Datenauswertungen in Java oder besser auf Datenbankseite ausführen? Java Basics - Anfänger-Themen 4
I Wie diesen Code besser schreiben? (Zeitformate) Java Basics - Anfänger-Themen 2
0 OOP Attributwerte besser im Konstruktor oder vorher zuweisen? Java Basics - Anfänger-Themen 6
A Besser Programmieren Java Basics - Anfänger-Themen 15
L Wo anfangen um besser zu werden Java Basics - Anfänger-Themen 13
L Erste Schritte Sollte ich hier lieber Cases verwenden oder wäre eine If-Bedingung besser? Java Basics - Anfänger-Themen 6
A HashSet (oder besser geignetes) Java Basics - Anfänger-Themen 14
O String-Prüfung: Was ist besser/schneller? Java Basics - Anfänger-Themen 15
O Grundsätzliches: Besser extend oder instanziieren? Java Basics - Anfänger-Themen 4
S OOP Java Kommentare, Programm besser verstehen Java Basics - Anfänger-Themen 6
C Soundwiedergabe in einem Thread - Speicher besser bereinigen Java Basics - Anfänger-Themen 3
A Besser als instanceof Java Basics - Anfänger-Themen 6
H Serialization: Was ist besser(schneller) Binary <-> XM Java Basics - Anfänger-Themen 2
X besser als System.arraycopy(.) Java Basics - Anfänger-Themen 5
M Welche Schleife ist besser? Java Basics - Anfänger-Themen 6
H ActionListener - was ist besser. Java Basics - Anfänger-Themen 7
M wie kann man diese Funktion besser machen ? Java Basics - Anfänger-Themen 3
G konkretes beispiel: interface hier besser als abstrakte kl. Java Basics - Anfänger-Themen 4
G String-Vergleich: Was ist besser "equals()" oder & Java Basics - Anfänger-Themen 4
megachucky Was kann ich besser / sinnvoller machen bei meinem code Java Basics - Anfänger-Themen 7
L Mergesort (aber anders) Java Basics - Anfänger-Themen 2
HelpInneed Baum ausgeben (aber mal anders) Java Basics - Anfänger-Themen 3
L Warum ist die Ausgabe anders als das was im Bezeichner steht? Java Basics - Anfänger-Themen 4
S CSV Datei auslesen und anders darstellen Java Basics - Anfänger-Themen 2
J Umwandlung String zu ASCII-Wert und anders Java Basics - Anfänger-Themen 17
C Scannermethode mal anders?! Java Basics - Anfänger-Themen 5
E Input/Output Switch ausgabe anpassen bzw. anders darstellen Java Basics - Anfänger-Themen 13
C Implizite Typumwandlung nach Java 8 anders? Java Basics - Anfänger-Themen 7
U Interface Schriftfarbe von Benutzer anders als vun Computer/Code Java Basics - Anfänger-Themen 6
S Programm verhält sich in Eclipse anders, als ein eigenständiges Programm Java Basics - Anfänger-Themen 5
I Ausgabe in verschiedenen Entwicklungsumgebungen anders Java Basics - Anfänger-Themen 6
R Methoden Main-Methode verhält sich in .jar anders als in Eclipse Java Basics - Anfänger-Themen 2
K wie Datum in JTable anders anzeigen lassen Java Basics - Anfänger-Themen 2
G JTextArea: nur bestimmte Zeilen anders formatieren Java Basics - Anfänger-Themen 7
P Variablen Guthaben anders definieren Java Basics - Anfänger-Themen 7
C ASCII CODES in Linux anders als auf Windows? Java Basics - Anfänger-Themen 4
B Rechnung per Hand anders als von Java Java Basics - Anfänger-Themen 6
-horn- Zeilenweises Speichern bei Win und Linux anders? Wie bitwises Angleichen? Java Basics - Anfänger-Themen 3
M .jar file verhält sich anders... Java Basics - Anfänger-Themen 28
N Applet verhält sich anders Java Basics - Anfänger-Themen 6
A Ausgabe immer anders, synchronisation? Java Basics - Anfänger-Themen 2
M Producer / Consumer mal anders. Java Basics - Anfänger-Themen 7
L Code verhält sich in JUnit anders als in normaler Klasse Java Basics - Anfänger-Themen 2
L Datei kopieren in anders verzeichnis geht nicht Java Basics - Anfänger-Themen 17
G Version von Anwendung mit Eclipse oder anders festlegen Java Basics - Anfänger-Themen 8
M Array anders sortieren, aber die Reihenfolge beibehalten Java Basics - Anfänger-Themen 4
F TXT Dateien mal anders lesen Java Basics - Anfänger-Themen 11
M Programmverhalten in IDE anders als bei externen Programmen Java Basics - Anfänger-Themen 3
P Suchen-Ersetzen mal anders(?) Java Basics - Anfänger-Themen 16

Ähnliche Java Themen

Neue Themen


Oben