Veränderbare Werte zusammenfassen

Letavino

Aktives Mitglied
Hallo,
ich habe ein kleines Spiel für ein Schulprojekt geschrieben.
Nun würde ich gerne zur leichten Anpassung von Werten einige Werte zusammenfassend irgendwo übersichtlich definieren, damit alle Werte auf einen Blick erfasst werden können.

Also zum Beispiel:
Java:
//Auto 1
int geschwindigkeit = 120;
int laenge = 2;

//Auto 2
int geschwindigkeit = 150;
int laenge = 2;

// Wartezeit in Sekunden
int timeToWait = 3;

Es soll nur den Programmierern dienen, nicht den Benutzern.
Wie mache ich so etwas richtig?
Sollte ich eine Ini Datei erstellen, oder würde man eine neue Klasse dafür benutzen?
Oder vielleicht eine csv-Datei?

Es geht mir nicht nur darum, was möglich ist, sondern eher, wie man so etwas korrekt löst.

Gruß, Florian
 
S

SlaterB

Gast
zusammengehörige Daten in eine Klasse Auto, aber unbedingt,
das ist die wichtigste Erkenntnis in der Objektorientierung!, in Java

ob du dann alles besser siehst als in einer einfachen Zahlenreihe bzw. paar Zeilen untereinander, ist nicht gesagt,
kannst es aber gewiss besser verarbeiten
 

Letavino

Aktives Mitglied
zusammengehörige Daten in eine Klasse Auto, aber unbedingt,
das ist die wichtigste Erkenntnis in der Objektorientierung!, in Java

ob du dann alles besser siehst als in einer einfachen Zahlenreihe bzw. paar Zeilen untereinander, ist nicht gesagt,
kannst es aber gewiss besser verarbeiten

Im Moment habe ich die Werte der Klassen in diesen stehen, also zb.

Java:
int geschwindigkeit = 0;
int laenge = 0;

if(auto == 1)
{
geschwindigkeit = 120;
laenge = 2;
}
else if(auto == 2) 
{
geschwindigkeit = 150;
laenge = 2;
}

Auf die Idee, das ganze anders zu strukturieren bin ich gekommen, als ich mir die Werte von Auto 1 anzeigen lassen wollte, ohne, dass ein Objekt erzeugt wurde, auf das ich zugreifen könnte.
Oder wie würde man so etwas am besten machen?

Gruß
 

ARadauer

Top Contributor
Oder wie würde man so etwas am besten machen?
Was? Wie man eine klasse macht?

Java:
import java.util.ArrayList;
import java.util.List;


public class Auto {
    
    private int id;
    private int geschwindigkeit;
    private int laenge;
    
    
    public Auto(int id, int geschwindigkeit, int laenge) {
        super();
        this.id = id;
        this.geschwindigkeit = geschwindigkeit;
        this.laenge = laenge;
    }
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getGeschwindigkeit() {
        return geschwindigkeit;
    }
    public void setGeschwindigkeit(int geschwindigkeit) {
        this.geschwindigkeit = geschwindigkeit;
    }
    public int getLaenge() {
        return laenge;
    }
    public void setLaenge(int laenge) {
        this.laenge = laenge;
    }

    @Override
    public String toString() {
        return "Auto [id=" + id + ", geschwindigkeit=" + geschwindigkeit + ", laenge=" + laenge + "]";
    }
        
    //hier nur zum testen...
    public static void main(String[] args) {
        List<Auto> autos = new ArrayList<Auto>();
        autos.add(new Auto(1, 200, 185));
        autos.add(new Auto(2, 180, 175));
        autos.add(new Auto(3, 190, 165));
        
        Auto auto = autos.get(1);
        System.out.println("Auto "+auto.getId()+" "+auto.getGeschwindigkeit()+" kmh schnell...");
    }
}
 

Letavino

Aktives Mitglied
Der oben gepostete Code ist aus der Klasse Auto.

Erzeugt wird ein Auto Objekt so:
Java:
Auto a = new Auto(x,y,typ);

Über den Typ definiert sich in der Klasse Auto die Geschwindigkeit und die Länge (als Beispiel).

Oder sollte es so aussehen:

Java:
//Klasse main
int geschwindigkeit1 = 120;
int laenge1 = 2;

Auto a = new Auto(x, y, geschwindigkeit1, laenge1);

Ich hoffe, ich "rede" gerade nicht an dir vorbei.


€dit:
@ARadauer:
Nein, wie man prinzipiell eine Klasse schreibt ist mir schon klar.
Es geht mir um die Werte einer Klasse, die einem bestimmten Typ immer gleich sind.

Sollten diese Werte in der Klasse definiert werden, wie bei meinem oberen Beispiel, oder besser in der "main" und bei der Konstruktion übergeben werden (jetziges Beispiel)?
 
Zuletzt bearbeitet:
S

SlaterB

Gast
> Ich hoffe, ich "rede" gerade nicht an dir vorbei.

du stellst zumindest gerade keine Frage,
und der Stil 'sollte es so aussehen?' 'im Moment habe ich diesen Code' ist auch ein unbequemer

was ist deine Frage?
Variablen werden deklariert, Objekte erzeugt, Parameter mit Werten aufgerufen, all das kommt in der Welt vor, ja

wenn gerade die Auto-Klase für geschwindigkeit + laenge zuständig ist, dann halte ich es für falsch,
irgendwo anders, etwa in der main nochmal
Java:
//Klasse main
int geschwindigkeit1 = 120;
int laenge1 = 2;
zu deklarieren, um direkt zu antworten,
das ist doch ziemlich offensichtlich, was soll das dort? könnte man direkt im Konstruktor schreiben

wer 5 Nägel in die Wände haut, macht das nacheinander,
aber legt sich nicht erst in entsprechenden Abstand 5 Nägel + 5 Hammer auf dem Boden
 

Letavino

Aktives Mitglied
OK, ich entschuldige mich, falls ich mich zu kompliziert / nicht präzise genug geäußert habe.

Ich fange nochmal von vorne an.

Beispiel:
Ich habe eine Klasse Auto mit den Attributen Typ, Geschwindigkeit und Länge.
Geschwindigkeit und Länge sind direkt vom Typ abhängig.
Wird also ein Auto vom Typ 1 erzeugt, so resultiert daraus eine bestimmte Länge und eine bestimmte Geschwindigkeit.

Ich habe es nun so gelöst, dass ich ein Objekt der Klasse Auto nur mit dem Typ als Parameter erzeuge.
Über "if else" werden die restlichen Werte gesetzt.

Frage 1:
Ist diese Herangehensweise korrekt?

Mein eigentliches Problem:
Es soll nun abgefragt werden, welche Geschwindigkeit und welche Länge ein Objekt der Klasse Auto mit dem Typ 1 hätte.
Da ich kein Objekt erzeugt habe, kann ich auch nicht auf ein solchen per "get" zugreifen.
Also dachte ich, die Definition der Werte auszulagern.

Frage 2:
Wie kann ich die Werte eines Typ 1 Autos auslesen, ohne ein Objekt zu erzeugen oder alle Variablen an anderer Stelle erneut definieren zu müssen?

Gruß
 

ARadauer

Top Contributor
Sollten diese Werte in der Klasse definiert werden, wie bei meinem oberen Beispiel, oder besser in der "main" und bei der Konstruktion übergeben werden (jetziges Beispiel)?
Ich beschäftige mich hauptberuflich mit Software für Autos.
Zwei Dinge kann ich dir sicher sagen:
- Wenn ein Auto eine zb Max Geschwindigkeit von 120 hat. Steht das bei uns sicher nicht in der Klasse die für das Auto zuständig ist.
- Und auch ganz sicher nicht in der main ;-)

Sie sollten da stehen wo die Autos erzeugt werden, in einer Datenbank oder eventuell werden sie sogar vom Benutzer eingegeben... das kann man so pauschal nicht sagen ;-)
 
S

SlaterB

Gast
das mit den Typen ist bisschen was anderes als ich bisher verstanden/ besprochen hatte,
da gibt es wirklich ne Menge Richtungen, die man bedenken könnte, siehe ARadauers Post,
und das mit den Variablen außerhalb der Klasse sehe ich jetzt nicht mehr ganz so gravierend an,

ein Vorschlag dazu: du könntest irgendwo eine Liste von Referenz-Autos ablegen,
feste Auto-Objekte, die nicht wie andere genutzt werden,
sondern nur die Platzhalter für geschwindigkeit + laenge bestimmter Kategorien sind,

aber man soll es auch nicht zu kompliziert machen, ein if/else ist für den Anfang schon ok,
relativ egal wo, im Konstruktor von Auto würde das auch viel an Variablen sparen gegenüber der main
 

Letavino

Aktives Mitglied
Ich beschäftige mich hauptberuflich mit Software für Autos.
Zwei Dinge kann ich dir sicher sagen:
- Wenn ein Auto eine zb Max Geschwindigkeit von 120 hat. Steht das bei uns sicher nicht in der Klasse die für das Auto zuständig ist.
- Und auch ganz sicher nicht in der main ;-)

Sie sollten da stehen wo die Autos erzeugt werden, in einer Datenbank oder eventuell werden sie sogar vom Benutzer eingegeben... das kann man so pauschal nicht sagen ;-)

Das war ja mein eigentliches Anliegen, auch wenn ich es vermutlich nicht gut ausgedrückt habe.
Ich wollte die Werte ja "auslagern", war mir nur nicht sicher, in welcher Form man dies am besten machen würde.

Datenbank wäre ein Beispiel dafür.
Es soll aber nicht so viele verschiedene Typen geben, dafür aber einige Klassen, die ähnlich aufgebaut sind.
Beispiel:
10 verschiedene Autotypen
5 verschiedene Straßentypen
2 verschiedene Reifentypen

Alle haben feste, typabhängige Werte.
Eine Datenbank wäre da natürlich möglich, aber vielleicht nicht optimal; zumindest nicht so optimal wie bei euch, da ihr bestimmt ein "paar" mehr Autotypen verwaltet. ;)
 

Letavino

Aktives Mitglied
ein Vorschlag dazu: du könntest irgendwo eine Liste von Referenz-Autos ablegen,
feste Auto-Objekte, die nicht wie andere genutzt werden,
sondern nur die Platzhalter für geschwindigkeit + laenge bestimmter Kategorien sind,

aber man soll es auch nicht zu kompliziert machen, ein if/else ist für den Anfang schon ok,
relativ egal wo, im Konstruktor von Auto würde das auch viel an Variablen sparen gegenüber der main

Das mit den "Referenzautos" hatte ich mir auch schon mal überlegt, das wäre definitiv eine Möglichkeit.
Wie sieht es mit einer eigenen Klasse oder einer Art ini-Datei für alle Werte aus?
Im Grunde wäre es ja die gleiche Auslagerung wie bei einer Datenbank, oder?
Oder ist davon prinzipiell abzuraten.
 
S

SlaterB

Gast
pauschal ist endgültig von nichts abzuraten, alles kann seinen Zweck haben,

wenn du aber auf der 'Entwicklungsstufe' bist, zwischen if/else und komischen höheren Dingen zu wählen,
dann ist in der Tat meine Meinung, von den höheren abzuraten und beim if/else zu bleiben

erst wenn du das im Schlaf kannst und dich damit langweilst,
die Nachteile wie Wiederholung, schlechte Wartbarkeit glasklar vor dir siehst,
kannst du begründet Alternativen beurteilen und wählen
(und dann hoffentlich auch eher fehlerfrei bedienen, was als Anfänger oft ein Problem ist)
 

Letavino

Aktives Mitglied
pauschal ist endgültig von nichts abzuraten, alles kann seinen Zweck haben,

wenn du aber auf der 'Entwicklungsstufe' bist, zwischen if/else und komischen höheren Dingen zu wählen,
dann ist in der Tat meine Meinung, von den höheren abzuraten und beim if/else zu bleiben

erst wenn du das im Schlaf kannst und dich damit langweilst,
die Nachteile wie Wiederholung, schlechte Wartbarkeit glasklar vor dir siehst,
kannst du begründet Alternativen beurteilen und wählen
(und dann hoffentlich auch eher fehlerfrei bedienen, was als Anfänger oft ein Problem ist)

Ok, dann werde ich wohl erstmal dabei bleiben.
Nur rein informativ, damit ich mich später auch weiterentwickeln kann:
Welche Alternative würde denn ein erfahrener Programmierer bei so einem Problem wählen?
 
P

Pippl

Gast
Ein Klasse Auto und dann Subklassen (Typ1Auto z.b (wobei eine zahl im klassennamen nicht so das wahre ist)). Die Klasse Auto stellt die variablen zur verfügung und die Subklassen legen diese im konstruktor fest.

Java:
public class Auto
{
    public int speed;

    public Auto(int speed)
    {
        this.speed = speed;
    }
}

public class Typ1Auto extends Auto
{
    public Typ1Auto()
    {
       super(120);
    }
}

Oder wenn du (ich habs nicht alles ganz gelesen ;-)) jetzt ein Auto haben willst das je nach Reifentyp, Automarke, Motor andere Werte bekommt (also der Motor erhöht den Speed um 10, der Reifentyp nochmals um 5), dann wäre das Decorator Pattern glaub ich was.
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
ich persönlich bin für Enums, die lösen alle Sammlungen von festen Informationen,
Nachteil ist dass man sie nicht ohne Neukompilieren ändern kann, wenn das notwenig ist, braucht es halt irgendein Textdokument,
oder auch DB, wann die? wenn sowieso schon da, wenn von Programm aus Änderungen zu speichern sind, bestimmte Sicherheitsanforderungen

oder in anderen Ansichten wieder ganz anders
 

Letavino

Aktives Mitglied
Ok, vielen Dank, das hatte ich mir auch schon überlegt.

Doch muss ich, um an die 120 zu kommen, dennoch ein Referenzobjekt anlegen.
 
P

Pippl

Gast
Ok, vielen Dank, das hatte ich mir auch schon überlegt.

Doch muss ich, um an die 120 zu kommen, dennoch ein Referenzobjekt anlegen.

ja

Java:
public class Auto
{
    public static Auto meinTypXYZAuto = new Typ1Auto();
....
}

Die Klasse Auto sollte dann noch eine Getter Methode für den Speed haben, dann kannst du mittels
Java:
Auto.meinTypXYZAuto.getSpeed();
den Speed abfragen

Aber die Anregung von SlaterB ist auch zu beachten
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E nicht veränderbare Objekte Allgemeine Java-Themen 5
O Werte einer Generic LinkedList zusammenrechenen Allgemeine Java-Themen 14
C In DefaultTableModel nachträglich Werte einfügen Allgemeine Java-Themen 2
rosima26 Unterschiedliche Werte bei return/print Allgemeine Java-Themen 12
berserkerdq2 Kann man in IJVM maximal 3 Werte im Stack haben? Allgemeine Java-Themen 3
OnDemand RegEx /compilebekomme nicht die erwarteten Werte Allgemeine Java-Themen 9
MiMa Werte in liste speichern? Allgemeine Java-Themen 3
Drachenbauer Wie kann ich einer existierenden Enum von außerhalb veränderte Werte zuweisen? Allgemeine Java-Themen 5
Arif Math.cos liefert komische Werte Allgemeine Java-Themen 8
X Größten Werte in meinem Array löschen? Allgemeine Java-Themen 16
D Erste Schritte Im Array Werte tauschen Allgemeine Java-Themen 5
J int Werte in einer anderen Klasse in Arrays speichern Allgemeine Java-Themen 3
B Übernommene Variablen(werte) aus der Main-Klasse ändern? Allgemeine Java-Themen 9
Henrithebegiinerofjava Erste Schritte Werte in Eingabefelder einlesen und wiederholen lassen. Allgemeine Java-Themen 3
I Java: public final Werte: Gute oder schlechte Praxis? Allgemeine Java-Themen 6
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
P Static Variable -> unterschiedliche Werte? Allgemeine Java-Themen 1
J Swing UIManager Werte Allgemeine Java-Themen 6
4 Java 2 ArrayListen Werte herauslesen/übernehmen Allgemeine Java-Themen 4
F Enum-werte als Methoden-Parameter übergeben Allgemeine Java-Themen 6
KeVoZ_ int Werte in einen String fassen Allgemeine Java-Themen 4
N Werte aus Hashmap auslesen und übertragen Allgemeine Java-Themen 8
2 mehrere Json Werte Parsen Allgemeine Java-Themen 3
R jTable, nur Werte zwischen 2 Double values ausgeben Allgemeine Java-Themen 3
B Übergebene Werte in Gerätedatei schreiben Allgemeine Java-Themen 2
M Exceltabelle in Java erstellen und Werte einlesen Allgemeine Java-Themen 32
N Werte aus Arrays auslesen funktioniert nicht Allgemeine Java-Themen 5
R Int werte vergleichen und Anzahl Paare ausgeben Allgemeine Java-Themen 4
O Klassen Programm in Klassen unterteilt, werte werden nicht mehr übernommen Allgemeine Java-Themen 3
R kann man irgendwie mit Arrays mit Eingabefenstern und Schleifen Werte abklappern? Allgemeine Java-Themen 2
L Windows CMD werte Parsen. Allgemeine Java-Themen 2
M Werte aus DB in Liste speichern ohne mehrfach speicherung Allgemeine Java-Themen 18
K Methoden Arrays auf true Werte prüfen Allgemeine Java-Themen 4
R Variablen per HSSF geheime Werte von JAVA an EXCEL Allgemeine Java-Themen 2
ARadauer Checksumme über BigDecimal Werte Allgemeine Java-Themen 11
C Datentypen Enum-Werte Bestanteil von anderem Enum Allgemeine Java-Themen 8
Q GregorianCalendar Methode add liefert komische Werte Allgemeine Java-Themen 3
BRoll Image RGB Werte auslesen und vergleichen Allgemeine Java-Themen 8
Madlip Variablen 3 Werte aus ArrayList und weiter ... Allgemeine Java-Themen 4
M Aus Excel Tabelle lesen und Werte in Array speichern Allgemeine Java-Themen 15
A String Array Werte in neues String Array übernehmen Allgemeine Java-Themen 5
S OOP Objekte als Return-Werte: Einen Klon zurückgeben oder Instanz auf das Feld? Allgemeine Java-Themen 10
R Zusammenhängende Werte in 2-dim. Array finden und zählen Allgemeine Java-Themen 3
S Sinnvolles skalieren von Werte-Set? Allgemeine Java-Themen 2
S Keytool: mögliche Werte für Parameter Allgemeine Java-Themen 4
P Werte in Array zählen und Summe der einzelnen Teile ausgeben Allgemeine Java-Themen 10
P Variablen Werte der Objektvariablen mit getFields() abfragen Allgemeine Java-Themen 2
O Variablen System.getenv: Sinnlose Werte, Arrays?! Allgemeine Java-Themen 6
J JSONObject Reihenfolge der Werte? Allgemeine Java-Themen 4
T java.uil.Random liefert negative Werte Allgemeine Java-Themen 2
c_sidi90 Werte an bestimmten Position aus PDF in DB sichern Allgemeine Java-Themen 2
C Vergleich von Enums gibt inkorrekte Werte Allgemeine Java-Themen 6
T Array Sortieren (null Werte ans Ende) Allgemeine Java-Themen 2
S Werte aus 2 eindimensionale boolean arrays mithilfe von logischen operatoren berechnen Allgemeine Java-Themen 6
C aus einem String einzelne Hex Werte lesen Allgemeine Java-Themen 7
P JFormattedTextField für durch Semikolon getrennte Integer-Werte gesucht / Regulärer Ausdruck Allgemeine Java-Themen 3
M rxtx OutputStream sendet falsche werte Allgemeine Java-Themen 3
J Hex Werte in Bitmap Raster darstellen Allgemeine Java-Themen 16
E Werte übergabe Allgemeine Java-Themen 2
E Werte in andere Klasse übernehmen Allgemeine Java-Themen 8
S Bytes oder Hex-Werte zu Assembler Code? Allgemeine Java-Themen 6
D Mehrere String-Werte in eine Tabellen-Zelle schreiben Allgemeine Java-Themen 8
P Methoden und Werte Allgemeine Java-Themen 17
M Kugelschnittberechnung liefert falsche Werte Allgemeine Java-Themen 4
N unzählige Werte am besten speichern(?) Allgemeine Java-Themen 2
D Spielerwechsel über boolsche Werte läuft inkorrekt Allgemeine Java-Themen 6
MonsterBit 2 Werte aus 2 Array vergleichen Allgemeine Java-Themen 10
T Apache POI Export EXCEL - [Zahlen-Werte] Allgemeine Java-Themen 1
S Doppelte Werte in Listen,Vectoren etc suchen Allgemeine Java-Themen 2
Airwolf89 Zugriff auf Werte in ArrayList<ArrayList> Allgemeine Java-Themen 4
H Prüfen, ob doppete Werte in int-Array vorhanden sind Allgemeine Java-Themen 16
K Datenhaltungsklasse für wenige Werte? Allgemeine Java-Themen 4
T JProgressbar ändert werte nicht Allgemeine Java-Themen 28
K need help ; Werte aus einer Datei auslesen Allgemeine Java-Themen 4
C Eingegebene Werte werden nicht gezeichnet Allgemeine Java-Themen 2
chik 2 return werte für Greedy-Algorithmus (gelöst) Allgemeine Java-Themen 3
hdi dynamische return-Werte Allgemeine Java-Themen 15
R Double Werte aus byte[] auslesen Allgemeine Java-Themen 5
T Wurfweitenberechnung: X-Werte bei extremen Werten falsch. Allgemeine Java-Themen 15
G Excel Werte / Zellen formatieren Allgemeine Java-Themen 5
G Werte bei Rekursion viel höher als erwartet Allgemeine Java-Themen 3
P Bedeutung der Process.exitValue() Werte? Allgemeine Java-Themen 3
C String to hex und hex-Werte löschen Allgemeine Java-Themen 2
D Suche sowas wie Map nur für mehrere Werte Allgemeine Java-Themen 13
M Werte im Browser aktualisieren Allgemeine Java-Themen 2
L Werte in externer Datei speichern und wieder auslesen? Allgemeine Java-Themen 8
MQue Werte in eine html- Datei schreiben Allgemeine Java-Themen 17
D werte in excelltabelle schreiben Allgemeine Java-Themen 5
N Werte Von C++ nach Java über den Stream möglich? Allgemeine Java-Themen 8
S JFreeChart LineChart Punkte über NULL Werte hinweg verbinden Allgemeine Java-Themen 5
G Werte zusammenfassen! Allgemeine Java-Themen 3
M BufferedReader.read(char[] cbuf) liefert falsche Werte? Allgemeine Java-Themen 4
W PrintWriter (PrintStream) sendet falsche Werte Allgemeine Java-Themen 18
Y Methode soll 2 Werte zurückliefern Allgemeine Java-Themen 7
F Werte von Member-Variablen erst im Konstruktor setzen? Allgemeine Java-Themen 7
D Werte aus drei Auswahllisten Allgemeine Java-Themen 5
P JSlider nur bestimmte werte geben Allgemeine Java-Themen 2
P JavaCode verschlüsseln / verschlüsselte Werte Allgemeine Java-Themen 3
D JTextfield für double werte Allgemeine Java-Themen 2
D Spezielles Eingabefeld für Numerische Werte in Swing Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben