Gleiche Methode in 2 verschiedenen Klassen - Lösung ?

jhjh

Bekanntes Mitglied
Hallo,
ich habe 2 Klassen und bei beiden Klassen verwende ich exakt die selbe Methode (Methode gibt einen String zurück). Ich frage mich wie es am "elegantesten" wäre, dass ich die Methode nur einmal definieren muss. Meine Überlegung ist, dass ich eine weitere Klasse erstelle, in der ich nur diese Methode definiere auf die dann die anderen Klassen zugreifen können. Kann man generell eine "Methoden-Klasse" erstellen, in der ich dann alle Methoden reinpacke, die ich mehrmals definieren müsste ? Schlechte Idee ?
Wie ist es eigentlich wenn ich eine Methode mit selben Parametern von verschiedenen Klassen aufrufe und sich der Algorithmus, abhängig davon von welcher Klasse die Methode aufgerufen wird, ein wenig ändert ? Bisher habe ich so gelöst, dass ich einen weiteren Parameter gesetzt habe über disen ich dann erkennen konnte von welcher Klasse die Methode aufgerufen wurde und ich dann mit Fallunterscheidungen entweder den einen oder den anderen Weg einschlagen konnte...

Ich bedanke mich! =)
 

mihe7

Top Contributor
Kann man generell eine "Methoden-Klasse" erstellen, in der ich dann alle Methoden reinpacke, die ich mehrmals definieren müsste ? Schlechte Idee ?
Ja und ja. Was macht die Methode denn?

Wie ist es eigentlich wenn ich eine Methode mit selben Parametern von verschiedenen Klassen aufrufe und sich der Algorithmus, abhängig davon von welcher Klasse die Methode aufgerufen wird, ein wenig ändert ?
Strategy-Pattern.
 

jhjh

Bekanntes Mitglied
So, hatte leider private Schwierigkeiten und kann deswegen erst jetzt antworten...
Was macht die Methode denn?
Ich habe z.B. eine Funktion die mir den letzten Sonntag in einem Monat als Integer zurück gibt.
Code:
public Integer LastSunday(int monat, int jahr) {
    int letzterTag;
   int anzahlTageImMonat = getAnzahlTageImMonat(monat, jahr);
    Integer letzterSonntagImMonat;
    Calendar cal = new GregorianCalendar();
    cal.set(Calendar.DATE, 1);
    cal.set(Calendar.MONTH, monat);
    cal.set(Calendar.YEAR, jahr);
    cal.set(Calendar.DAY_OF_MONTH, anzahlTageImMonat);
    letzterTag = cal.get(Calendar.DAY_OF_WEEK);
    if (letzterTag == 1) {
        letzterSonntagImMonat = anzahlTageImMonat;
    } else if (letzterTag == 2) {
        letzterSonntagImMonat = anzahlTageImMonat - 1;
    } else if (letzterTag == 3) {
        letzterSonntagImMonat = anzahlTageImMonat - 2;
    } else if (letzterTag == 4) {
        letzterSonntagImMonat = anzahlTageImMonat - 3;
    } else if (letzterTag == 5) {
        letzterSonntagImMonat = anzahlTageImMonat - 4;
    } else if (letzterTag == 6) {
        letzterSonntagImMonat = anzahlTageImMonat - 5;
    } else {
        letzterSonntagImMonat = anzahlTageImMonat - 6;
    }
    return letzterSonntagImMonat;
}
Diesen Wert brauche ich in mehreren Klassen. Habe es jetzt so gelöst, dass ich eine neue Klasse erstellt, welches über diese Methode verfügt. Gibt es von der Konvention her irgendeinen Klassennamen wie man eine "Methoden-Klasse" nennen kann ?
Generell habe ich die bisherigen Methoden dort "reingepackt" wo sie hingehören. So habe ich beispielsweise eine Geo-Klassen, die neben den Klassenvariablen, sämtliche Methoden (Distanzberechnung zwischen 2 Punkten, umwandeln von Adressen in Geo Daten etc..., bereit hält.
ABER habe dann halt noch Methoden, die ich keiner Klasse zuordnen könnte! Die würde ich dann halt in einer neuen Klasse (Sonstige Methoden) packen.
 

mihe7

Top Contributor
Was Du meinst sind sog. Utility-Klassen, für die es tatsächlich eine Art Namenskonvention gibt und zwar in der Form, dass der Name auf Utils endet. Das ist aber kein besonders gutes Vorgehen, weil es im Endeffekt bedeutet, dass man keine andere Idee hatte (was übrigens teilweise wirklich nicht einfach ist).

Unabhängig davon: verwende die Time API. Das macht einiges einfacher.

Auf die Schnelle wäre mir jetzt eingefallen (ungetestet):
Java:
public class MonthYear {
    private YearMonth yearMonth;

    public MonthYear(int month, int year) {
        yearMonth = YearMonth.of(year, month);
    }

    public int lastInMonth(DayOfWeek dow) {
        return yearMonth.atDay(1).
            .with(TemporalAdjusters.lastInMonth(dow))
            .getDayOfMonth();
    }

    public static int lastSunday(int month, int year) {
        return new MonthYear(month, year).lastInMonth(DayOfWeek.SUNDAY);
    }
}
 
Zuletzt bearbeitet von einem Moderator:

mrBrown

Super-Moderator
Mitarbeiter
Was Du meinst sind sog. Utility-Klassen, für die es tatsächlich eine Art Namenskonvention gibt und zwar in der Form, dass der Name auf Utils endet. Das ist aber kein besonders gutes Vorgehen, weil es im Endeffekt bedeutet, dass man keine andere Idee hatte (was übrigens teilweise wirklich nicht einfach ist).
Oder die "Plural-Variante" wie Objects, Collections, Strings, finde ich persönlich schöner
 

jhjh

Bekanntes Mitglied
Was Du meinst sind sog. Utility-Klassen, für die es tatsächlich eine Art Namenskonvention gibt und zwar in der Form, dass der Name auf Utils endet. Das ist aber kein besonders gutes Vorgehen, weil es im Endeffekt bedeutet, dass man keine andere Idee hatte (was übrigens teilweise wirklich nicht einfach ist).
[/code]


Alles Klar, dann weiß ich erstmal bescheid. Ja ich sitze gerade vor meinem ersten etwas größerem Projekt, bei dem ich schon ca. ein halbes Jahr dran arbeite und jetzt eigentlich auch schon fast fertig bin. Habe dann im laufe der Entwicklung bemerkt, dass ich an manchen Sachen etwas "umständlich" herangegangen bin. Mit war es dann in dem Moment erstmal wichtig etwas zum laufen zu bringen anstatt schönen Code bzw. schön strukturierten Code zu schreiben :rolleyes: Naja wenn ich fertig bin muss ich evtl. paar Sachen nochmal abändern und schöner machen :D
 

jhjh

Bekanntes Mitglied
Aus Erfahrung führt letzteres nebenbei auch schnell zu erstem, durchaus auch schneller, als sich nur auf ersteres zu konzentrieren.
Ja das mag gut sein :D Aber gerade als Neuling fehlt einem das Wissen, wie man bei bestimmten Problem am besten herangehen kann. Da stellt sich dann auch nicht immer die Frage ob es hier eine bessere Lösung gibt, sondern man geht dann davon aus, dass das SO eine übliche Vorgehensweise ist und man hinterfragt sich das nicht ^^
Aber gut, beim nächsten Projekt werde ich bei manchen Dingen schon wissen, wie man die besser lösen könnte und werde die Fehler die ich aus dem alten Projekt gemacht habe, gleich von beginn vermeiden können. Zumindest bei den "Fehlern" die mir bekannt sind :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Methode in einer anderen Methode (gleiche Klassse) aufrufen Java Basics - Anfänger-Themen 11
E Gleiche Methode einer (Kinds?)Klasse erneut aufrufen Java Basics - Anfänger-Themen 2
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
berserkerdq2 Ist JVM das gleiche wie IJVM (Bytecode) Java Basics - Anfänger-Themen 1
J Kreis soll die gleiche Fläche wie das Rechteck haben wie mache ich das? Java Basics - Anfänger-Themen 3
K Wie String prüfen ob drei mal das gleiche Zeichen vorkommt? Java Basics - Anfänger-Themen 7
W Mehrfach das gleiche Attribut für ein Objekt erzeugen (mit verschiedenen Werten) Java Basics - Anfänger-Themen 2
B Jsoup: gleiche Session nutzen Java Basics - Anfänger-Themen 0
tom.j85 Doppelte Foreach Schleife: Am Ende wird immer das Gleiche Objekt eingefügt Java Basics - Anfänger-Themen 4
X Textdatei: zwei-zeilenweise gleiche Zeilen rausschmeißen Java Basics - Anfänger-Themen 21
CptK Interface Beide Panels zeigen das Gleiche Java Basics - Anfänger-Themen 2
B Prüfen, ob Datum2 der gleiche Tag ist wie Datum1 Java Basics - Anfänger-Themen 10
O Problem gleiche Zahlen Java Basics - Anfänger-Themen 2
F Immer wieder gleiche Zufallszahl? Java Basics - Anfänger-Themen 4
N Array gleiche Datentypen zusammenrechnen Java Basics - Anfänger-Themen 28
T Classpath Zwei gleiche Dateinamen in verschiedenen Projekten möglich? Java Basics - Anfänger-Themen 13
L Gleiche Werte aus Array aussortieren Java Basics - Anfänger-Themen 5
L Gleiche Werte im Array hochzählen Java Basics - Anfänger-Themen 4
J Methoden Zwei Methoden die fast das gleiche tun organisieren Java Basics - Anfänger-Themen 3
L Classpath Zwei Bibliotheken enthalten gleiche .class Datei Java Basics - Anfänger-Themen 6
R Enum ist das gleiche wie? Java Basics - Anfänger-Themen 15
H überprüfen ob in Array gleiche int-Zahlen gespeichert werden. Java Basics - Anfänger-Themen 7
K Das Gleiche wiederholen Java Basics - Anfänger-Themen 5
Y Gleiche Arrays aus einem Array mit Objekten Java Basics - Anfänger-Themen 5
O Klasse in ArrayList speichern Problem -gleiche Speicheradresse Java Basics - Anfänger-Themen 2
M Zwei gleiche Eintraege in ArrayList finden Java Basics - Anfänger-Themen 15
D Javaliste auf gleiche Einträge überprüfen Java Basics - Anfänger-Themen 2
E Input/Output Drucken am Mac immer gleiche Schriftgröße?!? Java Basics - Anfänger-Themen 2
I immer die gleiche Zufallszahl Java Basics - Anfänger-Themen 9
L Eine ArrayList auf gleiche Inhalte prüfen Java Basics - Anfänger-Themen 10
M Erste Schritte Eclipse führt immer das gleiche Programm aus Java Basics - Anfänger-Themen 6
J Objekterzeugung im Konstruktor - Mehrfach gleiche Referenzvariable? Java Basics - Anfänger-Themen 4
A Mehrere Gegner sollen das gleiche Bild benutzen Java Basics - Anfänger-Themen 3
W JButton in gleiche Größe bringen Java Basics - Anfänger-Themen 4
M gleiche Box in GUI mehrmals verwenden Java Basics - Anfänger-Themen 5
A objekt innerhalb der gleiche klasse Java Basics - Anfänger-Themen 10
S Dasselbe ist nicht das gleiche? Java Basics - Anfänger-Themen 7
K Datentypen Gleiche Zufallszahlen in verschiedenen Datenstrukturen Java Basics - Anfänger-Themen 6
G Gleiche Elemente in Feld zählen Java Basics - Anfänger-Themen 13
B 2D-Array, gleiche Einträge prüfen Java Basics - Anfänger-Themen 5
B Random() gleiche Zahlen ausschließen Java Basics - Anfänger-Themen 30
J Datentypen List - gleiche Einträge bei neuen Objekten Java Basics - Anfänger-Themen 31
N Threads: 4 Threads, 4mal Zugriff auf Array soll nicht der gleiche Zugriff sein Java Basics - Anfänger-Themen 4
S OOP Warum gleiche Instanz der Klasse? (Factory-Muster) Java Basics - Anfänger-Themen 13
F Gleiche JUnit-Tests automatisert mit verschiedenen Methoden ausführen Java Basics - Anfänger-Themen 6
O Zweidemensionales Array auf zwei gleiche Zahlen prüfen Java Basics - Anfänger-Themen 15
G Der Gleiche oder der Selbe? Java Basics - Anfänger-Themen 6
G Zählen gleiche Werte in Array Java Basics - Anfänger-Themen 5
Gama 2 (fast) gleiche Dateien - nur eine funktioniert Java Basics - Anfänger-Themen 2
B Gleiche Ordner löschen Java Basics - Anfänger-Themen 15
V Vector/Arraylist hat nur gleiche Einträge Java Basics - Anfänger-Themen 3
G Warum das Prog mehrmals das gleiche macht wegen ItemListener Java Basics - Anfänger-Themen 4
Z Feld prüfen ob 3 gleiche zahlen nach einander vorkommen Java Basics - Anfänger-Themen 3
G gleiche Strings ungleich? Java Basics - Anfänger-Themen 5
K Neue Werte für gleiche Array-Indexe Java Basics - Anfänger-Themen 16
G Gleiche Aktionen verarbeiten (aber nur einmal Code)? Java Basics - Anfänger-Themen 2
M bewirken diese Schreibweisen das gleiche? :) Java Basics - Anfänger-Themen 8
F zugriff auf gleiche klasse aus mehreren klassen. Java Basics - Anfänger-Themen 3
G 2 gleiche Strings Java Basics - Anfänger-Themen 2
Z Vector führt mehrer, aber gleiche Elemente Java Basics - Anfänger-Themen 6
T Verschiedene Optionen in der Methode Java Basics - Anfänger-Themen 6
T Rekursive Methode Java Basics - Anfänger-Themen 13
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
Leyla Spezifischte Methode Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
M Methode sperren bis ein Kriterium erfüllt wurde Java Basics - Anfänger-Themen 3
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
Say super.methode / super.variable und super(variable) Java Basics - Anfänger-Themen 2
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
til237 Iterative Methode in rekursive Methode umschreiben Java Basics - Anfänger-Themen 4
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
D next() Methode mehrfach verwenden Java Basics - Anfänger-Themen 1
Ostkreuz Methoden Von Dezimal zu Hexadezimal Methode toHex Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
N Throw an Main Methode übergeben Java Basics - Anfänger-Themen 7
M Methoden Methode 'wiederhole' nicht gefunden (Uebersetzungsfehler) Java Basics - Anfänger-Themen 1
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
M Anzahl Kommandozeilenparamter mittels Methode Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben