Version von der überladenen Methode/Klasse

Status
Nicht offen für weitere Antworten.
X

xylibri

Gast
Hallo,

ich habe folgendes Problem zu lösen:
Es gibt zwei Klassen, A und B, B wird von A abgeleitet und eine der Methoden wird überladen.
Code:
Class A 
{
   protected void myMethod()
   {
      doThis();
   }
   protected void yourMethod(){};
   protected void theirMethod(){};
}

Class B extends A 
{
   protected void myMethod()
   {
      doThat();
   }
}

Die Klassen werden von verschiedenen Entwicklern implementiert (EntwicklerA und EntwicklerB), die nichts voneinander wissen.
Später ändert EntwicklerA diee Methode der Klasse A:
Code:
Class A 
{
   protected void myMethod()
   {
      doThis();
      yourMethod();
      theirMethod();
   }
   protected void yourMethod(){};
   protected void theirMethod(){};
}

EntwicklerB aktualisiert die KlasseA. Welche Konzepte gibt es, um dem EntwicklerB "mitzuteilen", dass er seine Methode in der KlasseB evtl. aktualisieren soll?

Eine der Möglichkeiten z.B. ist, eine abstracte Methode mit der Versionsnummer hinzuzufügen:
Code:
Class A 
{
   ...
   abstract void version1(){}
}

Class B extends A 
{
   protected void myMethod()
   {
      void version1(){}
   }
}

Nach jeder Änderung in der KlasseA ändert EntwicklerA die Methode version1():
Code:
Class A 
{
   ...
   abstract void version2(){}
}

Damit bekommt EntwicklerB mit, dass die KlasseA sich geändert hat.

Nachteil: Umständlich, hässlich, 1 Methode für die ganze Klasse (ich hätte das gerne für jede Methode)

Weißt jemand Konzepte, auch externe Tools (z.B. Hashes von Methoden zu erstellen), wie man dieses Problem lösen kann?

Danke im Voraus.

Gruß
xylibri[/code]
 

Tobias

Top Contributor
Was für ein "kaputter" Entwicklungsstil. Die Schnittstelle sollte stabil bleiben, ansonsten gibt es nur (und immer) Probleme. Da helfen auch so irre Ideen wie eine "Versionsnummer im Methodennamen" nichts.

mpG
Tobias
 

ms

Top Contributor
xylibri hat gesagt.:
Welche Konzepte gibt es, um dem EntwicklerB "mitzuteilen", dass er seine Methode in der KlasseB evtl. aktualisieren soll?
Anruf, Email oder persönlich mit ihm sprechen ...
Wenn sich an der Methodensignatur was geändert hat und beide Entwickler im selben Projekt sitzen dann werden sie hoffentlich miteinander reden bzw. wird Entwickler A hoffentlich keine Compile-Errors einchecken.

Grundsätzlich sollte aber so programmiert werden, dass die vereinbarten Schnittstellen eingehalten werden. Wenn sich also etwas an der Schnittstelle ändert gehört das sowieso kommuniziert und dokumentiert.

xylibri hat gesagt.:
Eine der Möglichkeiten z.B. ist, eine abstracte Methode mit der Versionsnummer hinzuzufügen
Bitte vergiss diesen Gedanken schnell wieder.
Abgesehen davon müsste die Klasse A zwangsläufig auch abstrakt werden.

Sehr hilfreich sind auch Unit-Tests und erst dann ins SVN/CVS einchecken, wenn alle diese Tests erfolgreich waren.

ms
 
M

maki

Gast
EntwicklerB aktualisiert die KlasseA. Welche Konzepte gibt es, um dem EntwicklerB "mitzuteilen", dass er seine Methode in der KlasseB evtl. aktualisieren soll?
Vor zig tausenden von Jahren haben unsere Vorfahren die Sprache entwickelt, dass wäre eine Möglichkeit.

Modernere, aber nicht unbedingt effizientere Verfahren wären Briefe, mittlerweile auch im elektronischen Format möglich, nennt sich dann email :)
Andere high-tech wege wie Messenger etc. sind auch denkbar.

Das Problem ist ein organisatorisches, Entwickler, die nix von einander Wissen und gegenseitig denselben Code soweit ändern so dass er nicht mehr kompatibel ist, das ist umständlich, hässlich und äusserst unproffessionel.
 

ARadauer

Top Contributor
Telefon ;-)

nein ehrlich, die Frage ist ob Entwickler B davon wissen muss?
wenn die Methode noch immer das macht, was sie machen soll und sich an die Schnittstelle hält... wo ist das problem?

Wenn sie was anderes macht... tja dann eine neue methde machen und die alte mit einer annotaition deprecated setzen...

wenn die Änderung wirklich eine Schwerwiegende ist und B unbedingt drauf reagieren muss, dann empfehl ich das Telefon..
 
G

Guest

Gast
Tobias hat gesagt.:
Was für ein "kaputter" Entwicklungsstil. Die Schnittstelle sollte stabil bleiben, ansonsten gibt es nur (und immer) Probleme. Da helfen auch so irre Ideen wie eine "Versionsnummer im Methodennamen" nichts.

mpG
Tobias
Die Schnittstelle bleibt auch stabil, keine der Signaturen wird verändert. Was ist daran kaputt?
 
M

maki

Gast
Wenn die Schnittstelle gleich bleibt, darf es keine Probleme geben wenn die Implmentierung verändert wird.

Dafür gibt es doch Schnittstellen...
 
X

xylibri

Gast
ms hat gesagt.:
Anruf, Email oder persönlich mit ihm sprechen ...
Wenn sich an der Methodensignatur was geändert hat und beide Entwickler im selben Projekt sitzen dann werden sie hoffentlich miteinander reden bzw. wird Entwickler A hoffentlich keine Compile-Errors einchecken.
Nehmen wir an, EntwicklerA und EntwicklerB sitzen in verschiedenen Projekten. Die kommunizieren nicht miteinander, es gibt aber natürlich Changelogs. Die Logs sind so groß, dass EntwicklerB leicht eine Änderung in der Klasse A übersehen kann. Die Schnittstelle ändert sich nicht, aber die Implementierung. Der EntwicklerB macht also ein Update, sieht keine Fehler oder Warnungen und macht sich keine Gedanken. Später bekommt er aber Probleme.
 
G

Guest

Gast
maki hat gesagt.:
Code:
Vor zig tausenden von Jahren haben  unsere Vorfahren die Sprache entwickelt, dass wäre eine Möglichkeit.

Modernere, aber nicht unbedingt effizientere Verfahren wären Briefe, mittlerweile auch im elektronischen Format möglich, nennt sich dann email :)
Andere high-tech wege wie Messenger etc. sind auch denkbar.
EntwicklerA weißt weder vom EntwicklerB noch von der KlasseB. Es existieren Changlogs. Die sind aber so groß, dass EntwicklerB die Änderung in der Klasse A schnell übersehen kann.
Code:
Das Problem ist ein organisatorisches
Richtig erkannt :)
Code:
Entwickler, die nix von einander Wissen und gegenseitig denselben Code soweit ändern so dass er nicht mehr kompatibel ist, das ist umständlich, hässlich und äusserst unproffessionel.
Das finde ich nicht so. Man ändert nicht denselben Code, nur eine spezielle Implementierung von einer Methode.
 
G

Guest

Gast
maki hat gesagt.:
Wenn die Schnittstelle gleich bleibt, darf es keine Probleme geben wenn die Implmentierung verändert wird.

Dafür gibt es doch Schnittstellen...
Was meinst du mit Problemen? Ja, es wird immer noch kompilieren und starten. Update von der KlasseA ist aber nicht drin. Muss aber rein.
 
M

maki

Gast
Ist alles in allem ein Change Management Problem hier.


Automatische Change Notifications wären eine Möglichkeit, welche von einem CI Server versendet werden.

Eine andere wäre, die Klasse in eine jar zu stecken, diese jar als Maven Projkt zu verwalten, dann merken andere Maven Projekte selbstständig (falls die Version das Wort SNAPSHOT enthält), ob es eine neuere Version der "dependency" gibt, lädt diese runter und alles ist gut, Entwickler B hat unter Umständen gar nicht mitbekommen, dass eine neuere Version genutzt wird.

Maven2 mit Continuum würde beides ermöglichen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
izoards Java Home Pfad unabhängig von der Version Allgemeine Java-Themen 7
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
D SHA-3 für Java-version 1.8 Allgemeine Java-Themen 1
F Reason: Missing Constraint: Import-Package: okhttp3.internal.http; version="0.0.0" Allgemeine Java-Themen 0
S @version in Kommentaren aktualisieren Allgemeine Java-Themen 10
bueseb84 Wget mit Wildcards - oder wie lädt man bei JFrog die letzte Version eines Artifacts herunter Allgemeine Java-Themen 3
hello_autumn Java_Home geändert auf Java 13, trotzdem wird Java Version 8 angezeigt. Allgemeine Java-Themen 2
L Java Version ändernhi icj Allgemeine Java-Themen 9
S Tool mit dem man die Major version im Bytecode patchen kann..? Allgemeine Java-Themen 10
G Wiedereinstieg, welche Java Version empfehlt ihr Allgemeine Java-Themen 7
G GUI-basiertes Java-Program in Command-line Version umwandeln Allgemeine Java-Themen 1
I Geeignete Java-Version herusfinden Allgemeine Java-Themen 7
D Aktuell installierte Java Version auslesen unter Windows Allgemeine Java-Themen 5
F Netbeans Version Allgemeine Java-Themen 2
M Windows 98 - Mit welchem JDK (Version) kann noch Programm dafür erstellt werden Allgemeine Java-Themen 6
P Java Fehler auf Win2008 Server java.io.FilePermission IE8 Version JRE 1.7.0_51 Allgemeine Java-Themen 7
Developer_X Java Version aufrüsten Allgemeine Java-Themen 6
J Firefox - Java Version Wechseln Allgemeine Java-Themen 2
B Input/Output version.cfg konnte nicht im Klassenpfad gefunden werden, ist aber dort. Allgemeine Java-Themen 0
L Java Version aus Tomcat ermitteln Allgemeine Java-Themen 3
P JDK und JVM: 64bit Version UND 32bit Version gleichzeitig? Allgemeine Java-Themen 5
P Check, welche Java Version installiert bevor ein Programm ausgeführt wird. Allgemeine Java-Themen 12
N Java Version Prüfen lassen Allgemeine Java-Themen 11
M Umgebungsvariable Version des Programms Allgemeine Java-Themen 10
B A newer version of Java is needed to view the application. Allgemeine Java-Themen 17
N iText-Nutzung (Version 2.1.7) in kommerzieller Website Allgemeine Java-Themen 8
E Java Version Details ermitteln Allgemeine Java-Themen 5
G Java ME Version Allgemeine Java-Themen 2
J Alte version nutzen Allgemeine Java-Themen 4
D Problem mit Java version? Allgemeine Java-Themen 4
E Probleme beim Umstieg auf Version 1.6.0_12 Allgemeine Java-Themen 4
ARadauer welche java version wird benutzt Allgemeine Java-Themen 4
E Welche Java-Version kennt isEmpty() ? Allgemeine Java-Themen 2
H java version Allgemeine Java-Themen 6
B suche Deutsche Übersetzung für neuste Eclipse Version Allgemeine Java-Themen 6
A Apache License, Version 2.0 Allgemeine Java-Themen 7
E welche standalone Version von Tomcat benutzen? Allgemeine Java-Themen 6
D Probleme beim Umstellen von iText 1.4.4 auf Version 2.1.2 Allgemeine Java-Themen 5
G Auslesen mit welcher Java-Version Anwendung kompiliert wurde Allgemeine Java-Themen 2
W Programm prüft auf webserver ob neue version vorhanden? Allgemeine Java-Themen 3
B Java Buch zu welcher Version empfehlenswert? Allgemeine Java-Themen 6
J Windows Version von javacomm Allgemeine Java-Themen 2
S Bad version number in .class file Allgemeine Java-Themen 5
G Nachdem die neuste Version v. Java installiert-Fehlermeldung Allgemeine Java-Themen 22
G Prüfen welche JRE-Version gebraucht wird Allgemeine Java-Themen 19
L Wie für ein bestimmte JVM-Version kompilieren? Allgemeine Java-Themen 2
C Auswahl einer Version, bei mehreren installierten Versionen Allgemeine Java-Themen 3
A serial Version UID field of type long Allgemeine Java-Themen 5
P welche java version für javax.mail? Allgemeine Java-Themen 7
B Welche Java-Version? Allgemeine Java-Themen 7
D Java Version Allgemeine Java-Themen 2
G Aktuelle JRE Version? Allgemeine Java-Themen 7
M java.lang.UnsupportedClassVersionError: Bad version number i Allgemeine Java-Themen 5
vogella Version von Java ermitteln Allgemeine Java-Themen 2
B jre version in der html-datei für ein applet abfragen Allgemeine Java-Themen 5
A Java Version verstellen Allgemeine Java-Themen 2
F JRE Version ermitteln Allgemeine Java-Themen 2
K Java Version ermitteln (über System.getProperty hinaus) Allgemeine Java-Themen 6
S Ich verstehe meine Java-Version nicht Allgemeine Java-Themen 6
P Java, rar.exe(winrar cmd version) und cpu-auslastung 100% Allgemeine Java-Themen 27
B java-version bestimmen innerhalb von Programm Allgemeine Java-Themen 4
W version aus klasse auslesen Allgemeine Java-Themen 8
P Javadoc -> Autmatisiertes @version Tag Allgemeine Java-Themen 6
R Java version Allgemeine Java-Themen 3
S Version des Browserplugins Allgemeine Java-Themen 4
clemson Kompilieren nach einer früheren Version Allgemeine Java-Themen 4
S Trial version Allgemeine Java-Themen 12
X Unattended alte Java Version deinstalliern und Java 1.4.2. Allgemeine Java-Themen 3
sokobus java ältere Version - das laden dauert sooo lange Allgemeine Java-Themen 3
F Version Allgemeine Java-Themen 5
B Java-Version aus .class erfahren Allgemeine Java-Themen 6
A Die Java-Version des Clients in einem Java-Applet ermitteln Allgemeine Java-Themen 2
G JDK Version - exec Befehl Allgemeine Java-Themen 3
B Java Version Allgemeine Java-Themen 5
C Java-Version herausfinden Allgemeine Java-Themen 9
P Aufrufsystematik einer überladenen Methode Allgemeine Java-Themen 5
S Wie vererbe ich vernünftig bei stark überladenen Konstruktoren? Allgemeine Java-Themen 12
W Hilfe bei Methode Allgemeine Java-Themen 14
Ü Methoden Arrays vergleichen - Methode Allgemeine Java-Themen 1
Simon16 compareTo Methode überschreiben Allgemeine Java-Themen 4
TheSkyRider Methode über DataInputStream "auslösen" Allgemeine Java-Themen 6
M CrudRepository save Methode mocken Allgemeine Java-Themen 6
thor_norsk toString() - Methode Allgemeine Java-Themen 6
A Clean Code: Variable vs. Methode Allgemeine Java-Themen 8
Encera Zweite Main-Methode zuschalten Allgemeine Java-Themen 18
M Optimierung einer Methode (byte-Geraffel) Allgemeine Java-Themen 2
I Hibernate Envers - Aufruf der Methode zum Speichern selbst ausführen oder managen? Allgemeine Java-Themen 0
N rekursion mehrfach eine Methode Öffnen Allgemeine Java-Themen 4
berserkerdq2 Wenn ich eine Methode nur jede 50ms ausführen will, wie mach ich das? Allgemeine Java-Themen 4
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
N Schnellste Methode, ein Array durchzugehen? Allgemeine Java-Themen 9
E Methoden abstract static Methode Allgemeine Java-Themen 8
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
F Getter Methode aufrufen funktioniert nicht Allgemeine Java-Themen 1
B In Java Methode mit generic input und output basteln? Allgemeine Java-Themen 4
goldmensch Datentypen Welche Methode hat die bessere Performance? Allgemeine Java-Themen 12
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
T C++ Methode Übersetzung in Java Allgemeine Java-Themen 3
L Erste Schritte TDD testen einer Methode mit injezierten Services? Allgemeine Java-Themen 12

Ähnliche Java Themen

Neue Themen


Oben