unterschiedliche Objekte, selbe getter und setter

Jesterhead

Mitglied
Hallo Leute,

ich brauche ein wenig Hilfe, ich weiß nicht genau wie ich vorgehen soll.

Folgende Situation:

Ich habe mehrere verschiedene Objekte die die selben getter und setter methoden besitzen.
Beispiel:

Objekt Auto auto:
String getColor();
int getNumberTires()
int getNumberSeats()
String setColor();
int setNumberTires()
int setNumberSeats()

Objekt LKW lkw:
String getColor();
int getNumberTires()
int getNumberSeats()
String setColor();
int setNumberTires()
int setNumberSeats()

Diese Objekte stehen mir samt der getter und setter zur Laufzeit zur Verfügung. Ich habe momentan zwei exakt gleiche Programme, die jeweils mit diesen Objekten arbeiten. Ich möchte jedoch nicht den selben Code zwei mal/ mehrfach schreiben. Wie kann ich das lösen?

Ich stelle mir ein interface oder sowas vor, weiß aber nicht wie ich das anstellen soll:

auto.setNumberTires = 4;
lkw.setNumberTires = 8;

Auto und LKW Objekte sind unterschiedliche Objekte. Also wie kann ich die beiden Zeilen in einem Programm vereinen?

Grüße und schon mal vielen Dank für eure Tipps!!!
 

Shine

Mitglied
Indem du eine Klasse erstellst und diese dann z.B. Fahrzeug nennst, dieser Klasse gibst du dann die Attribute und Methoden die die Klassen Lkw und Auto gemeinsam haben und dann lässt du diese beiden Klassen von der Klasse Fahrzeug erben. Dann kannst du bei einem Objekt der Klasse Auto bzw. Lkw auf die Methoden und Attribute der Klasse Fahrzeug zugreifen, ohne diese in den beiden Klassen neu implementieren zu müssen.

Schau dir dazu am besten mal das hier an:
Galileo Computing :: Java ist auch eine Insel - 5 Eigene Klassen schreiben
 
Zuletzt bearbeitet:

hauptDev

Bekanntes Mitglied
Es ging doch um zwei verschiedene Programme erstmal. Also würde ich annehmen es geht hier auf ClassLoader hinaus. Sorry muss mich wieder kurz halten.

Gesendet von meinem Cat Tablet PHOENIX 8.1J0 mit Tapatalk
 

Shine

Mitglied
Zuletzt bearbeitet:

Jesterhead

Mitglied
Hallo Leute,

danke erst mal für eure Antworten.

Evtl. nochmals zur Erklärung:
Die Objekte Auto und Lkw sind eigenständige Objekte, die ich nicht verändern kann. Dies stellen Datenobjekte einer Datenbank dar und stehen mir zur Verfügung um Daten zu lesen und schreiben.

Momentan habe ich zwei mal den selben Code in unterschiedlichen Programmen geschrieben. Im einen Programm wird das Objekt Auto und im anderen Programm das Objekt Lkw angesprochen.

Ich möchte jedoch vermeiden, zwei Programme mit dem selben Code schreiben, nur weil unterschiedliche Objekte angesprochen werden.

Beispiel:

Java:
public class UpdateAutoExample extends Auto{

  public void setColorFromRGB(int rCode, int gCode, int bCode){
    if(rCode = 255 && gCode == 255 && bCode == 255){
      getCurrentObject.setColor(Color.RED);
    }
  }
}

Java:
public class UpdateLkwExample extends Lkw{

  public void setColorFromRGB(int rCode, int gCode, int bCode){
    if(rCode = 255 && gCode == 255 && bCode == 255){
      getCurrentObject.setColor(Color.RED);
    }
  }
}

Das ist jetzt ein wirklich sehr vereinfachtes Beispiel. Ich habe zwei Programme mit exakt dem selben Code. Die Vaterklasse ist jeweils eine Andere und damit auch das Objekt das bearbeitet wird. Ich würde gerne die Methode setColorFromRGB auslagern und das Objekt übergeben.

Ich komme aber leider auf keine akzeptable Lösung...
Wenn ich es so mache, habe ich wieder zwei Zweige:

Java:
public static void setColorFromRGB(int rCode, int gCode, int bCode, Auto fahrzeug){
    if(rCode = 255 && gCode == 255 && bCode == 255){
    fahrzeug.setColor(Color.RED);
  }
}

public static void setColorFromRGB(int rCode, int gCode, int bCode, Lkw fahrzeug){
    if(rCode = 255 && gCode == 255 && bCode == 255){
    fahrzeug.setColor(Color.RED);
  }
}

Klar könnte ich das so schreiben, dass nur "Color.RED" zurück gegeben wird, aber dann habe ich den Aufruf der Methode wieder doppelt und eben das will ich ja vermeiden. Ich will nur einen Aufruf und dann die Abhandlung in einer eigenen Klasse/Methode durchführen.
 
Zuletzt bearbeitet:

Tom299

Bekanntes Mitglied
Und wenn du in deiner Methode ein Object übergibst, dann einen Cast machst und dann den Setter aufrufst?

Code:
also anstatt:
public static void setColorFromRGB(int rCode, int gCode, int bCode, Lkw fahrzeug) { 

}

public static void setColorFromRGB(int rCode, int gCode, int bCode, Object ob) {
   if (obj instanceof Lwk) {
   
   }
   else if (obj instanceof Auto) {

   }
}
 

Harry Kane

Top Contributor
Wie wärs mit einem Adapter?
Java:
interface Fahrzeug{
    public void setColor(Color c);
    public Color getColor();
    public void setColorFromRGB(int rCode, int gCode, int bCode);
}
abstract class FahrzeugAdapter implements Fahrzeug{
    public void setColorFromRGB(int rCode, int gCode, int bCode){
        if(rCode == 255 && gCode == 0 && bCode == 0){
            setColor(Color.RED);//oder was auch immer
        }
    }
}
class AutoAdapter extends FahrzeugAdapter{
    private Auto auto;
    AutoAdapter(Auto auto){
        this.auto = auto;
    }
    public void setColor(Color c){
        this.auto.setColor(c);
    }
}
class LKWAdapter extends FahrzeugAdapter{
    private LKW lkw;
    LKWAdapter(LKW lkw){
        this.lkw = lkw;
    }
    public void setColor(Color c){
        this.lkw.setColor(c);
    }
}
Du müsstest dann zwar für jede Klasse einen Adapter schreiben, der viel quasi-copy-paste-Code enthält, dafür müsstest du im Rest des Programms nur noch Fahrzeuge verwenden.
 

dcc

Aktives Mitglied
War so frei. Wenn du es in 3 Klassen Dateien splittest, dann brauchst unten nicht mehr über das Fahrzeug Objekt aufrufen, es geht dann auch "Fahrzeug a = new Auto()";

Nun hast noch was gelernt was du gar nicht wolltest :D
Ein Auto / LKW sind auch Fahrzeuge, was die getReifen Methode aufrufen muss wird über das "Late Binding" während der Laufzeit ermittelt.

Interfaces sind nix besonderes. Sie dienen nur der Struktur und geben Methoden etc. vor.Werden sie von einer Klasse "implements", dann müssen diese Klassen die Interface Methoden exakt so umsetzen.

Java:
public class Fahrzeug {
	private int reifen;
	
	public int getReifen(){
		return reifen;
	}
	
	public void setReifen(int x){
		reifen = x;
	}
	
	public class Auto extends Fahrzeug {
		Auto(){
			this.setReifen(5);
		}
	}
	
	public class LKW extends Fahrzeug {
		LKW(){
			this.setReifen(8);
		}
	}
	
	public static void main(String[] args) {
		Fahrzeug a = new Fahrzeug();
		Fahrzeug b = a.new Auto();
		Fahrzeug c = a.new LKW();
		System.out.println(b.getReifen()); // 5
		System.out.println(c.getReifen()); // 8
	}
}
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
Da du wie du sagst keinen Einfluss auf die bestehenden Objekte hast, wurden hier die möglichen Lösungen schon genannt, (classLoader, Adapter-pattern),

mir würden sonst nur noch Reflections einfallen, allerdings weiß ich nicht wie weit dir das in deinem Fall hilft :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Unterschiedliche jar Dateien zusammen führen Allgemeine Java-Themen 8
rosima26 Unterschiedliche Werte bei return/print Allgemeine Java-Themen 12
M Warum gibt es Unterschiedliche Kommentar Zeichen Allgemeine Java-Themen 15
Y Java Methoden unterschiedliche Zahlenreihen Allgemeine Java-Themen 2
P Static Variable -> unterschiedliche Werte? Allgemeine Java-Themen 1
P Berechnungen: unterschiedliche Rundungsfehler bei Long? Allgemeine Java-Themen 3
M Zwei unterschiedliche JAR Dateien mit ANT erstellen Allgemeine Java-Themen 8
J unterschiedliche Dateiformate verarbeiten Allgemeine Java-Themen 7
G Methoden Unterschiedliche viele Parameter Allgemeine Java-Themen 17
A TXT File einlesen unterschiedliche Zeilenlänge Allgemeine Java-Themen 9
P Unterschiedliche Clone- Methoden Allgemeine Java-Themen 5
GianaSisters Klassen Unterschiedliche Zeiten bei DATE Allgemeine Java-Themen 6
G Input/Output URLDecoder.decode - Unterschiedliche Ergebnisse Windows / Linux Allgemeine Java-Themen 2
A md5 liefert unterschiedliche Testsummen? Allgemeine Java-Themen 4
M Unterschiedliche Java-Versionen Allgemeine Java-Themen 5
B hashtable für unterschiedliche Typen - mit Generics Allgemeine Java-Themen 8
S Zugriff auf unterschiedliche JREs Allgemeine Java-Themen 7
G Abstrakte Fabrik für unterschiedliche Signaturen? Allgemeine Java-Themen 7
L unterschiedliche Größe beim serialisieren eines Objektes! Allgemeine Java-Themen 6
W Unvollständige und unterschiedliche CharSets Allgemeine Java-Themen 3
L Unterschiedliche mails (Daten aus JTable) schicken Allgemeine Java-Themen 14
U Transparent Buttons - unterschiedliche Java-Versionen Allgemeine Java-Themen 8
M unterschiedliche Betriebssysteme abfangen Allgemeine Java-Themen 3
schegga_B javax.crypto - Cipher Objekte - Sevice Provider matching? Allgemeine Java-Themen 1
berserkerdq2 Weiß jemand wie ich im Scenebuilder das Fenster so darstellen kann, dass beim Vollbildmodus die Objekte so angezeigt werden? Allgemeine Java-Themen 1
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
L Objekte in Set nicht gefunden Allgemeine Java-Themen 13
Avalon Data Transfer Objekte aus Datenbank erstellen Allgemeine Java-Themen 8
G Objekte mit Strings Aufrufen Allgemeine Java-Themen 8
H Objekte speichern und laden Allgemeine Java-Themen 10
H Objekte speichern und laden Allgemeine Java-Themen 1
MiMa Referenz auf Objekte und deren Inhalte Allgemeine Java-Themen 12
W Objekte reproduzieren Allgemeine Java-Themen 2
W Objekte per Reflexion instanziieren Allgemeine Java-Themen 7
W Unittest - Objekte simulieren Allgemeine Java-Themen 7
T OOP Objekte mit Erweiterung Initialisieren Allgemeine Java-Themen 6
O Erste Schritte Objekte als Datenelemente Allgemeine Java-Themen 14
J Equals Mock Objekte Allgemeine Java-Themen 5
J Mockito - Objekte miteinander vergleichen (equals) Allgemeine Java-Themen 6
N Bei Mouse Events nicht mehrere Objekte erstellen Allgemeine Java-Themen 13
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
J Java Objekte = null, Garbagecollector Allgemeine Java-Themen 12
F Listen - Mehrere Objekte Allgemeine Java-Themen 1
J Verständnis Frage zur Instanz, Objekte, Instanzierung, Referenz Allgemeine Java-Themen 14
F Objekte erzeugen Allgemeine Java-Themen 1
E Threads ThreadPoolExecutor remove mit callable Objekte Allgemeine Java-Themen 3
P mehrer Verschiedene Objekte in einer Klasse erstellen. Allgemeine Java-Themen 4
E OOP Objekte und Methoden Allgemeine Java-Themen 1
@SupressWarnings() Umgebungsvariable Objekte "gekoppelt" Allgemeine Java-Themen 6
S Algorithmus um Objekte auf einer Flaeche mit gleichem Abstand anzuordnen..? Allgemeine Java-Themen 20
C Objekte in Array List speichern? Allgemeine Java-Themen 1
OnDemand Objekte speichern Allgemeine Java-Themen 8
B Objekte anhand von Properties file Allgemeine Java-Themen 41
U Tiefe Objekte schreiben Allgemeine Java-Themen 1
R Abstrakte Basisklasse und instanzierte Objekte der abgeleiteten Klasse als Basisklasse übergeben Allgemeine Java-Themen 2
E 3D Objekte in 2D Bild finden Allgemeine Java-Themen 5
J Daten aus GUI auslesen und in Objekte umwandeln Allgemeine Java-Themen 6
F FileOutput/Input Objekte Allgemeine Java-Themen 6
OnDemand Objekte serialisieren Allgemeine Java-Themen 3
L Lib gesucht: Java-Objekte mit JSON Allgemeine Java-Themen 2
U Set erklären dass objekte gleich sind Allgemeine Java-Themen 12
E Best Practice Verdammt große Objekte Allgemeine Java-Themen 10
B Mehrere Objekte verschlüsselt serialisieren Allgemeine Java-Themen 6
G Liste anzahl der gleichen Objekte Allgemeine Java-Themen 6
N Objekte an eine andere Applikation übergeben Allgemeine Java-Themen 3
N 2 Objekte zu einer Gruppe zusammenfügen Allgemeine Java-Themen 7
M Instanzierte Objekte in XML Dokument speichern Allgemeine Java-Themen 3
B Verschiedene Objekte in Abhängigkeit eines Typs instanziieren. Allgemeine Java-Themen 17
K Input/Output Im Programm instanzierte Objekte Speichern und laden Allgemeine Java-Themen 3
S OOP Objekte als Return-Werte: Einen Klon zurückgeben oder Instanz auf das Feld? Allgemeine Java-Themen 10
H Objekte Serialisiert speichern Allgemeine Java-Themen 10
L MouseListener für viele Objekte erstellen Allgemeine Java-Themen 16
5 Objekte Sortieren lassen Allgemeine Java-Themen 7
N Objekte aus Array Inhalt erzeugen Allgemeine Java-Themen 8
L Input/Output Textdatei in Objekte überführen? Allgemeine Java-Themen 4
R Input/Output Objekte speichern ohne überschreiben Allgemeine Java-Themen 7
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
H Threads Thread stirbt aber Objekte in ihm leben weiter?! Allgemeine Java-Themen 9
M Java Objekte in XML mit JAXB Allgemeine Java-Themen 9
C Strings und JSON Objekte so klein wie möglich im Speicher ablegen Allgemeine Java-Themen 5
H COM-Objekte/ AktiveX Objekte Allgemeine Java-Themen 4
C Script für Website mit Objekte Ausblenden Allgemeine Java-Themen 3
M Txt einlesen & Objekte erzeugen Allgemeine Java-Themen 2
X Objekte aus TableModel serialisieren und deserialisieren Allgemeine Java-Themen 4
T ObjectInputStream - Arrayliste, die unbekannte Objekte enthält Allgemeine Java-Themen 9
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
D Grafische Objekte zeichnen Allgemeine Java-Themen 4
A Wie zur Laufzeit auf Objekte zugreifen Allgemeine Java-Themen 7
F Referenzen auf Objekte Allgemeine Java-Themen 5
H Eclipse und Objekte Allgemeine Java-Themen 6
S Objekte die Objekte enthalten: Keine Vererbung Allgemeine Java-Themen 4
E Objekte in einer Liste suchen. Allgemeine Java-Themen 4
I Über eine Liste iterieren und Objekte löschen. Wie löst man das sauber? Allgemeine Java-Themen 5
I Pattern zum Erweitern existierender Objekte Allgemeine Java-Themen 4
N Dynamische Objekte / DB Allgemeine Java-Themen 5
J Objekte binär speichern Allgemeine Java-Themen 10
TiME-SPLiNTER Unbekannte Anzahl serialisierter Objekte lesen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben