Sollte man dies kapseln?

Status
Nicht offen für weitere Antworten.

CarloC

Bekanntes Mitglied
Hallo zusammen,

meine Applikation beinhaltet einige JTables. Die Daten dieser Tabellen speicher ich immer in einem Vector ab. Für das füllen des Vectors habe ich mir eine Methode geschrieben (datensaetzeEinfuegen).

Diese Methode steht momentan noch in jeder Klasse der einzelnen Tabellen. Sauberer wäre es aber sicherlich wenn ich sie kapseln würde, da ich sie ja in mehrern Klassen benutze.

Der Aufbau der Methode ist an sich immer gleich. Sie unterscheidet sich allerdings beim SELECT und bei der Art von Objekten die für den Vector gebildet werden (beim ersten Beispiel Organisationseinheiten und beim zweiten Beispiel Gliederungseinheiten).

Code:
		public void datensaetzeEinfuegen()
		{
			Sql.connect();

	        try
			{
	        	String select = "SELECT * FROM dbo.organisationsplan WHERE [...]";
	        	rSet = Sql.select(select);

	        	while (rSet.next())
	        	{   		
	        		
	        		OrganisationsEinheit orgEinheitObjekt = new OrganisationsEinheit(
	        			new ImageIcon(),
						rSet.getString("orgeinheit"),
						rSet.getString("bezeichnung"),
						rSet.getInt("id")
	        		);

	        		daten.add(orgEinheitObjekt);
	        	}
			}
	        catch (Exception e)
			{
	        	[...]
	     	}
		}

zweites Beispiel:

Code:
	public void datensaetzeEinfuegen()
	{
		Sql.connect();

        try
		{
        	String select = "SELECT * FROM dbo.gliederungsplan WHERE [...]";
        	System.out.println(select);
        	rSet = Sql.select(select);

        	while (rSet.next())
        	{   		
        		
        		GliederungsEinheit eaua = new GliederungsEinheit(
        			new ImageIcon(),
					rSet.getString("eaua"),
					rSet.getString("bezeichnung"),
					rSet.getInt("id")
        		);

        		daten.add(eaua);
        	}
		}
        catch (Exception e)
		{
        	[...]
     	}
	}

Jetzt stellt sich für mich die Frage ob man die Methoden wirklich kapseln sollte oder ob ich es so lassen soll. Wenn man es kapseln soll, wie unterscheide ich dann die Art von Objekten die gebildet werden müssen?

Wie würdet ihr das machen?

Vielen Dank für die Hilfe!
 

LoN_Nemesis

Bekanntes Mitglied
Bin mir nicht sicher ob ich das richtig verstehe, also kannst du der Methode nicht einfach 2 Parameter geben? Der erste bestimmt welcher String ausgewählt wird und der zweite die Klasse des einzufügenden Objektes.

Sorry wenn ich was falsch verstanden habe.
 

CarloC

Bekanntes Mitglied
Meinst du, dass ich als String den Tabellennamen übergebe? Dann könnte der SELECT so lauten:

Code:
SELECT * FROM dbo." + tabellenName + "WHERE [...]

Bei der Übergabe des Objektes gibt es das Problem, dass sich die Spalten der Tabelle unterscheiden.
Bei einem gibt es dann "orgeinheit, bezeichnung, id" und bei dem anderen "gliederungseinheit, bezeichnung, id".
Es kann allerdings auch sein, dass sich alle drei Spalten unterscheiden oder es noch mehr Spalten gibt.

Ich könnte höchstens mit einer IF-Abfrage prüfen um was für ein Objekt es sich handelt.

Wenn Organisationseinheit dann -->
Code:
        		OrganisationsEinheit orgEinheitObjekt = new OrganisationsEinheit(
        			new ImageIcon(),
					rSet.getString("orgeinheit"),
					rSet.getString("bezeichnung"),
					rSet.getInt("id")
        		);

Wenn Gliederungseinheit dann --> usw.
Da könnte man dann natürlich auch einfach nur einen String übergeben, der besagt um was es sich handelt.

Ist es denn sinnvoll etwas zu kapseln wenn ich es dann mit IF-Abfragen unterscheide?
 
S

SlaterB

Gast
nur bedingt sinnvoll,

was du einigermaßen sinnvoll machen könntest, wäre die Datenanfrage auszulagern,

also eine Operation, die den kompletten SQL-String bekommt und ganz generisch ohne Unterscheidung das Ergebnis in ein Object[][] tut,
dazu wahrscheinlich noch ein ein Array mit den Spaltennamen falls die wichtig sind,
ansonten müsste man mit Spalte 1,2,3 arbeiten und hoffen dass sich die Reihenfolge nie ändert..

dann noch Einzeloperationen ohne Connection, SQL, ResulSet und try-catch,
dafür mit Object[][] und ähnlicher Übertragung auf die zu erstellenden Objekte

----------


wäre ganz hübsch, aber recht aufwendig,
dazu der Overhead des zu erstellenden Object[][] + die Frage der Spaltennamen,
musst du wissen,

auf jeden Fall eine Operation pro zu erstellenes Objekt
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
A Wie sollte ich es am besten an gehen - denkweise Java Basics - Anfänger-Themen 48
J Vektoren Add gibt nicht das aus was es sollte Java Basics - Anfänger-Themen 3
M Klassen Warum sollte man Abstraktion verwenden? Java Basics - Anfänger-Themen 4
W Dezimalzahl in Binär umwandeln - Was sollte ich an meinem Programm verbessern? Java Basics - Anfänger-Themen 5
C Polymorphie Was genau ist Polymorphie und wann genau sollte man es verwenden? Java Basics - Anfänger-Themen 9
J OOP Wie sollte ich das organisieren (Abstract? Interface?) Java Basics - Anfänger-Themen 33
S Erste Schritte Generische Klassen sind toll ....aber warum sollte ich das je benutzen? Java Basics - Anfänger-Themen 3
W Wie kann man diesen Code in einen Code umwandeln, der folgendes können sollte? Java Basics - Anfänger-Themen 1
S Welchen Bereich sollte ich favorisieren? Java Basics - Anfänger-Themen 3
K JAR Dateien einbinden - funkt nicht wie es sollte... Java Basics - Anfänger-Themen 22
S JUnit assertEquals funktioniert nichgt wie es sollte :( Java Basics - Anfänger-Themen 7
L Erste Schritte Sollte ich hier lieber Cases verwenden oder wäre eine If-Bedingung besser? Java Basics - Anfänger-Themen 6
P Ergebnis sollte double sein ... Java Basics - Anfänger-Themen 5
S Wie sollte man Package bezeichnen Java Basics - Anfänger-Themen 2
B Frage zu Programmierstil: sollte Hauptklasse nur main enthalten? Java Basics - Anfänger-Themen 6
D Warum sollte ich bestehende Funktionen "extend"en? Java Basics - Anfänger-Themen 32
B String Array funzt nich wie sollte Java Basics - Anfänger-Themen 3
G Sollte man Klassenvariablen als final deklarieren? Java Basics - Anfänger-Themen 3
D Objektorientierung - wie konsequent sollte man sein ? Java Basics - Anfänger-Themen 30
S Wie debugge ich dies am besten: SingleThreadExecutor führt Task nicht aus..? Java Basics - Anfänger-Themen 29
S Gibt es irgendeine Möglichkeit, dies zu tun?(Android Studio) Java Basics - Anfänger-Themen 1
S Ist dies ein Bug in Eclipse Java Basics - Anfänger-Themen 2
JavaNewbie2.0 Warum ist dies nicht möglich? Java Basics - Anfänger-Themen 7
O Starte Timer, während anderer Timer noch läuft. Ruft dies Schwierigkeiten hervor? Java Basics - Anfänger-Themen 0
O Funktioniert dies? Und gibt es eine bessere Lösung? Java Basics - Anfänger-Themen 6
Chocola Datums-String mit "ungültigem Anhängsel" wird ohne Fehler geparsed. Kann man dies irgendwie beheben? Java Basics - Anfänger-Themen 3
Z Array mit daten einer datenbankbefüllen und dies an eine tabelle geben Java Basics - Anfänger-Themen 6
P Keinen Wert - wie kann dies in eine Bedinung geprüft werden Java Basics - Anfänger-Themen 4
T aktuelles jahr ermitteln (und nur dies) Java Basics - Anfänger-Themen 3
D Kann dies Java? Java Basics - Anfänger-Themen 29
Meeresgott OOP Socket Verbindung richtig Kapseln Java Basics - Anfänger-Themen 0
O Code sparen oder Kapseln Java Basics - Anfänger-Themen 7
G kann man alles mögliche in Obect kapseln? Java Basics - Anfänger-Themen 2
N Kapseln Java Basics - Anfänger-Themen 7
H Kapseln bzw. "verdecken" von Klassen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben