Guter Stil der Java-Programmierung

Status
Nicht offen für weitere Antworten.
J

javaKid

Gast
Hallo alle zusammen,

ich bin gerade dabei, mit Java laufen zu lernen :)

Nun habe ich folgenden Java-Pseudo-Code:


Code:
class XXX{    
    int[] array;
    
    XXX(int[] array){
        this.array=array
        }
    function(){
        //Tutirgendwas mit dem Attribut
    }

    psvm(...){
        float[] a = new float[5];
        XXX bla = new FloatArray(a);
        int count = 1;
        for (int i=0; i< a.length;i++){
            a[i]=count++;
        }  
        bla.function();
        for (int i=0; i< a.length;i++){
            a[i]=count--;
        }  
        bla.function();
        for (int i=0; i< a.length;i++){
            a[i]=1;
        }  
        bla.function();


        //oder wäre folgenes besser?
        XXX bla = new FloatArray(new float[5]);
        int count = 1;
        for (int i=0; i< bla.array.length;i++){
            bla.array[i]=count++;
        }  
        bla.function();
        for (int i=0; i< bla.array.length;i++){
            bla.array[i]=10;
        }  
        bla.function();
        for (int i=0; i< bla.array.length;i++){
            bla.array[i]=count--;
        }  
        bla.function();

    }
}

Welche der beiden Möglichkeiten in der Main-Methode haltet Ihr für die Sauberere oder habt Ihr sogar einen vil besseren Vorschlag?

Herzlichen Dank Euch allen!!!
 
G

Guest

Gast
P.S. Oder sollte ich für jeden der drei "Versuche" ein eigenes XXX Objekt erzeugen...?
 

madboy

Top Contributor
Ist vielleicht ne doofe Antwort: aber es kommt drauf an, was du tun willst. Ich sehe irgendwie aus deinem Pseudocode nicht, was du vor hast.

Welche der beiden Möglichkeiten in der Main-Methode...
Welche "Main-Methode"?

Außerdem wird das mit
Code:
XXX bla = new FloatArray(a);
nix. "XXX" ist ja kein "FloatArray", daher kannst du das nicht so zuweisen.
 
J

javaKid

Gast
Sorry, die Zeile sollte folgende sein:

XXX bla = new XXX(a);

Im Prinzip handelt es sich um eine Klasse die diverse Funktionen auf das Attributarray ausführt, wie Durschnitt berechnen usw.
Da ich mehrere verschiedenen Fälle implementieren möchte, muss ich die Zahlen im Array mehrmals ändern.
 

Marco13

Top Contributor
@madboy: "psvm" = "public static void main" :wink:

Schwierig, so eine Designentscheidung zu treffen, wenn man nicht weiß, worauf das rauslaufen soll. Auf Basis dessen, was du geschrieben hast, könnte "funktion" statisch sein und immer den Array übergeben bekommen
Code:
class XXX
{  
    main()
    {
        int array[] = new int[3];

        XXX.funktion(array);

        array[1] = 123; // verändere den Array

        XXX.funktion(array);

    }

    public static void funktion(int array[])
    {
         // mach was mit dem übergebenen array
    }
}
allerdings kann es gut sein, dass das NICHT das ist, was du willst.

Vermutlich (Kristallkugel-Antwort) wäre die zweite Lösung besser: Das array liegt NUR im XXX-Objekt, und wird auch NUR dort verändert. Allerdings sollte es dan unbedingt private sein, und eine Methode zum verändern des Array-Inhaltes angeboten werden. Und vermutlich sollte der Array dann nichtmal im Konstruktor übergeben werden, damit niemand auf dumme Gedanken kommt (d.h. damit sich niemand eine Referenz behält, wie in deinem ersten Ansatz).

Wie wär's z.B. mit sowas:
Code:
class XXX
{
    private int array[];

    public XXX(int size)
    {
        array = new int[size];
    }

    public int getSize()
    {
        return array.length;
    }

    public void setValue(int index, int value)
    {
        array[index] = value;
    }

    // EDIT: Das fehlte noch:
    public void funktion()
    {
        // mach was mit dem array
    }

}
und in der "psvm" würdest du dann sowas machen wie
Code:
psvm(...){

        XXX bla = new XXX(5);
        int count = 1;
        for (int i=0; i< bla.getSize();i++){
            bla.setValue(i, count++);
        } 
        bla.function();
...

Arrays sind ziemlich "low-level", und man sollte sich genau überlegen, wo man einen Array nach außen "preisgibt". In bezug auf die Information, die man in einer Klasse preisgibt (mit "public") gibt es eine Regel:
So wenig wie möglich, und so viel, wie nötig.
Das nennt man machmal "Geheimnisprinzip" (auf Englisch glaubich "Information hiding") (Das gilt aber bei ALLEN objektorientierten Sprachen, nicht nur bei Java)

In der obigen Klasse ist dieses Prinzip erfüllt: Man könnte den Array einfach ersetzen, z.B. durch eine ArrayList oder LinkedList (wenn's denn sein müßte - das ist vielleicht kein optimales Beispiel, um das zu verdeutlichen). Trozdem kann man alle nötigen Aktionen durchführen.

EDIT: "funktion" in XXX eingefügt!
EDIT2: Hach, heut hab ich's aber :( letzter code-Block noch geändert
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Getter und Setter auch intern benutzen - guter Stil? Java Basics - Anfänger-Themen 31
U Vernünftige Strukturierung, Guter Stil,. Java Basics - Anfänger-Themen 12
K BufferedReader im Konstruktor // guter Stil ? Java Basics - Anfänger-Themen 2
G Array mit Schleife durchlaufen - guter Stil? Java Basics - Anfänger-Themen 20
frau-u guter Stil - wie macht mans am Besten? Java Basics - Anfänger-Themen 8
S Zugriff auf protected Fields = guter Programmierstil? Java Basics - Anfänger-Themen 11
KopaCoda Getter mehrfach aufrufen -> ist das guter code? Java Basics - Anfänger-Themen 3
MiMa Guter Programmierstiel für Methoden, OOP verstoß? Java Basics - Anfänger-Themen 25
S Methoden Effiziente Permutation? Guter Permutationsalgorithmus? Java Basics - Anfänger-Themen 1
B guter Jar-Wrapper Java Basics - Anfänger-Themen 13
G Guter Programmierstil? Java Basics - Anfänger-Themen 8
N Guter Zufallsgenerator für Java Java Basics - Anfänger-Themen 9
Silas89 Java in exe Compilieren (Guter Grund!) Java Basics - Anfänger-Themen 10
G Guter Programmierstil? Java Basics - Anfänger-Themen 4
G guter Parser Java Basics - Anfänger-Themen 4
G Guter Rat ist teuer Java Basics - Anfänger-Themen 6
K guter Programmierstil Java Basics - Anfänger-Themen 3
J focusListener ...guter Code... Java Basics - Anfänger-Themen 2
U Methoden Code Quality und Stil Java Basics - Anfänger-Themen 5
kaoZ Stil ? - ....Nein nicht das Ende des Besens ^^ Java Basics - Anfänger-Themen 11
M Vererbung Schlechter Stil? Java Basics - Anfänger-Themen 10
B Grundsätzliche Klassen-Struktur/Stil Java Basics - Anfänger-Themen 12
S Mein Code is unübersichtlich - besseren Stil Java Basics - Anfänger-Themen 6
S Unbeschaeftigten Thread in einer Schleife schlafen legen? Schlechter Stil? Java Basics - Anfänger-Themen 7
S Schlechter Stil beim Exception Handling Java Basics - Anfänger-Themen 6
nabla Code Stil -- Eclipse Warnings Java Basics - Anfänger-Themen 9
H [Stil] Exceptions in der Klasse behandeln oder throwen? Java Basics - Anfänger-Themen 62
P DotComVersenken -Spiel im Schiffeversenken-Stil - erstellen- Komm jetzt nicht weiter. Java Basics - Anfänger-Themen 11
P Spiel im Schiffe-Versenken Stil, Problem mit Erstellung des zweidimensionalen ARRAYs Java Basics - Anfänger-Themen 7
S sauberer Stil von return Wert (try, catch, finally) Java Basics - Anfänger-Themen 9
hdi Programmier-Stil : Speicher vs. Quellcode Java Basics - Anfänger-Themen 67
F Zugriff auf Instanzvariablen, Frage zum guten Stil Java Basics - Anfänger-Themen 2
H schlechter objektorientierter stil Java Basics - Anfänger-Themen 6
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben