Aufteilung von Code (Theoretische Frage)

Paul279

Aktives Mitglied
Hallo Leute,
wieder eine Anfängerfrage, aber für mich nicht leicht lösbar.

Ich habe jetzt eine MainKlasse, die mittlerweile über 12000 Zeilen Code hat.
Jetzt kenn ich mich schon selber nicht mehr aus, deshalb wollte ich Codeteile in Extraklassen wie "Einstellungen", "Haupframe",... usw. erstellen.

Nun zur ersten Frage? Ist es gut, Code in andere Klassen aufzuteilen?

Das wirft mir nun weitere Fragen auf. Z.B.

In der MainKlasse habe ich die Funktion "KlickAufButton", die ein Actionevent von einem Button beim Design ist. Dann müsste ich in der MainKlasse bei der Funktion "KlickAufButton" ein Object erzeugen, das alle benötigten Referenzen mitgibt, die man bearbeiten möchte.
Ist das so richtig oder würde es einen leichteren/besseren Weg geben? Den ich möchte ja eigentlich nicht immer ein neues Object von etwas erzeugen wenn ich irgendwohin klicke!

Oder sollte ich die ganze MainKlasse der Einstellungsklasse vererben?
Erschlagt mich jetzt bitte nicht :oops:

Am liebsten wäre mir ja, dass ich von meiner MainKlasse einfach nur Stücke in meinem Projectordner aufteilen könnte, da ich mich schon langsam nicht mehr auskenne.

Ich hoffe, dass was ich möchte habe ich halbwegs verständlich rübergebracht.
Danke sehr
 
M

Marcinek

Gast
Nun zur ersten Frage? Ist es gut, Code in andere Klassen aufzuteilen?

Nein, es ist besser alles in einer Klasse zu haben, damit man Klassen mit 12k LoC hat. Das macht das Programm erweiterbar und leicht wartbar, da jeder Entwickler im Team nur eine Datei verändern muss.

scnr

Ist das so richtig oder würde es einen leichteren/besseren Weg geben? Den ich möchte ja eigentlich nicht immer ein neues Object von etwas erzeugen wenn ich irgendwohin klicke!

Das ist so richtig.

Oder sollte ich die ganze MainKlasse der Einstellungsklasse vererben?
Erschlagt mich jetzt bitte nicht

Eine Vererbung ist eine "ist ein" Beziehung. Ist eine MainKlasse eine EinstellungsKlasse oder vice versa?

Am liebsten wäre mir ja, dass ich von meiner MainKlasse einfach nur Stücke in meinem Projectordner aufteilen könnte, da ich mich schon langsam nicht mehr auskenne.

Ich verstehe nicht, wie du eine Klasse mit über 12k LoC schreiben konntest, ohne diese Kentnisse.

Ggf. jetzt mal ein wenig Literatur mit hinzufügen?
 

Master1991

Mitglied
Erschlagt mich jetzt bitte nicht
Sollte man eventuell:D

Nein im Ernst, du scheinst dich ja schon relativ gut mit Java auszukennen wenn du bereits 12000 Zeilen funktionsfähigen Code schreiben kannst.

Ist dir in der Zeit denn nie Objektorientiertes Programmieren untergekommen?

Eines der wichtigsten Prinzipien ist doch wiederverwendbarkeit und damit Modualisierung von Code.

Also erstellst du dir viele neue Klassen die für bestimmte Sachen gut sind. Und erb bitte nicht die komplette MainKlasse:D

Zum Beispiel wäre eine Klasse 2DRechteck mit dem Attribut Ecke sinnvoll...wobei Ecke nun schon direkt eine eigene Klasse sein könnte die x und y Koordinate als Attribute enthält.

Also teil dir den Code ruhig in schön viele (Sinnvolle) häppchen auf;)
 
T

threadstarte

Gast
So schreibe von meinem handy, alles weitere morgen, da ich meine frage falsch verständlich geschrieben habe.
Ich werde es morgen genauer erklären. Danke für die bisherigen posts und bis morgen
 

Paul279

Aktives Mitglied
Soso Mahlzeit,
also ich werde nochmal versuchen mein Problem genauer zu erläutern.
Keine Sorge ich versuche alles sehr Objektorientiert zu schreiben, habe ja mehrere Klassen für z.B. SQLAbfragen, InputOuput von/auf der Festplatte, Eigene Klasse für mein DefaultTableModell usw.

Mein Problem liegt aber wo anders. Beim Design:
Meine Mainklasse ist die Klasse mit den 12000 Zeilen Code. Die Mainklasse ist mein ganzes Design.
Mein Design hat ca. 23 Seiten und da kommt schon etwas zusammen wenn man immer die Funktionen für die Buttons oder sonstiges macht.

So stellt euch vor, ihr habt die GUI, macht dort eine Actionlistener drauf. Dieser ActionL. wird wie das Design in die Mainklasse geschrieben. Bei 23 Seiten kommen aber einige Actionlistener zusammen, so möchte ich gerne die Mainklasse aufteilen.

Ich möchte also das Design/Mainklasse aufteilen!!

Ich möchte gerne eine Seite meines Designs (z.B. dort wo alle Einstellungen getätigt werden) in einer eigenen Klasse haben. Nun ist aber die Frage, wie ich das Design von der Mainklasse "abkopple", sodass alle Funktion dieser einzigen Seite in eine andere JavaKlasse gespeichert werden.

So hätte ich am Ende:
Beim Design mit 23 Seiten, 23 Klassen.

Ich hoffe, dass es bis hierher etwas verständlicher ist.
Versuch 2 :popcorn:
 
F

Firephoenix

Gast
Hier besteht wohl Lesebedarf:
Galileo Computing :: Objektorientierte Programmierung - Das umfassende Handbuch

Java ist eine Objektorientierte Sprache, in der man auch recht flach programmieren kann (alles in einer Methode/Klasse/etc), aber damit verliert man alle OOP-Vorteile (kleine, übersichtliche Module mit klar vorgegebenen Aufgaben, Wiederverwertbarkeit, ...).

Einfach mal Codezeilen/Abschnitte auslagern aus 12k Zeilen Nudelsalat, das kann nicht gut gehen.
Selbst wenn du den Teil copy-paste als Methode extrahierst und in eine Hilfsklasse packst hätte die Methode vermutlich soviele Parameter, dass man die Methode ebenfalls überarbeiten müsste.

Wenn du das wirklich überarbeiten willst, schau dir die Funktionalitäten von deinem Programm an (Außenansicht), überlege dir dazu einen OOP-Konformen Aufbau und schreib das ganze Ding neu.
Wenn du einen Codeschnipsel benötigst und du findest den schneller im alten Code, als es dauert ihn neu zu schreiben, dann such ihn aus dem alten Code.
Das geht sehr wahrscheinlich schneller als die komplette Klasse nach für nach aufzulösen.

(Den Code würde ich aber doch gerne mal sehen, rein zur Unterhaltung. Ich kann mir beim besten Willen nicht vorstellen wie man 23 Seiten Code untereinander packt, die dann auch noch das tun was sie sollen :popcorn:)

Gruß
 

Paul279

Aktives Mitglied
@Firephoenix
Danke für den Link, mittlerweile habe ich eine Lösung gefunden. (Verstehe nicht warum einen das immer erst einfällt wenn man schon die Frage im Forum gepostet hat :bloed: )

Meine derzeitige Umsetzung:
Jede Designseite bekommt eine eigene Klasse. Diese Klassen werden alle ganz am Anfang, oder besser beim Programmstart geladen.

Danach arbeiten die Actionlistener nur noch mit den Klassen und rufen die benötigten Funktionen auf. Somit habe ich meine "Monsterlogik" auf viele Klassen unterteilt.

Viele Programme haben ja die Aufteilung GUI, Logik usw.
Ich habe eben GUI, LOGIK1, LOGIK2, LOGIK3 ...Logik23.

Selbst wenn du den Teil copy-paste als Methode extrahierst und in eine Hilfsklasse packst hätte die Methode vermutlich soviele Parameter, dass man die Methode ebenfalls überarbeiten müsste.

Ja das stimmt. Die meisten Methoden haben nun 10 Parameter. Aber warum nicht ;)

Das ganze Ding bau ich ständig neu, wenn mir etwas besseres einfällt, deswegen arbeite ich ja schon ein gutes halbes Jahr daran. :D

Den Code würde ich aber doch gerne mal sehen, rein zur Unterhaltung. Ich kann mir beim besten Willen nicht vorstellen wie man 23 Seiten Code untereinander packt, die dann auch noch das tun was sie sollen

Warum nicht. Ich baue gerade das Programm um (Auslagerung usw.) Aber von 12.000 zeilen code bin ich mittlerweile schon bei 7500. Sobald es wieder lauffähig ist kann ich es dir mal per PN senden, wenn es ernst gemeint war ;)

Vielleicht hättest du ja auch ein paar gute Ratschläge für mich :)

Danke sehr und gute Nacht

//EDIT
Ein kleiner Gedanke noch:
Warum habe ich nicht meine Main/Design und erbe alle Hilfklassen. Dann bräuchte ich auch nicht diese Methodenaufrufe mit 10 Parametern?
 
Zuletzt bearbeitet:

blauerninja

Mitglied
Was du da programmiert hast, nennt man Gottesklasse. Du solltest sie aufbewahren und zu irgendeinem Wettbewerb schicken, wo es darum geht, wer den Längsten (Code) hat. XD
Nun hast du auch das Dilemma. Wahrscheinlich sind die Methoden in der Klasse auch selbst zu lang (vllt auch nur die main() ?)
Ich würd dir empfehlen Literatur zu besorgen, aber so dringend. Wahrscheinlich ist es besser und auch der schnellere Weg (und nicht zu vergessen: der Übungsaspekt, wie man RICHTIG programmiert), wenn du dein Programm einfach neu schreibst. Empfehlen kann ich:

Code Complete - Deutsche Ausgabe der Second Edition: Amazon.de: Steve McConnell: Bücher
http://www.amazon.de/Clean-Code-Ref...5486/ref=sr_1_2?ie=UTF8&qid=1358125684&sr=8-2

Das zweite ist gut für den Einstieg, hat mir damals seeeeeehr geholfen. Auch ich hab mal so große Klassen geschrieben, ok, an die 800 bin ich gekommen, dann bin ich doch noch rechtzeitig zur Besinnung gefunden^^
Das erste Werk wirst du auch brauchen, früher oder später. Also wieso nicht schon jetzt? Mit komplexen Klassen hantierst du eh schon rum, wenn du bereits mit GUIs arbeitest. Das Geld wirst du dann nicht bereuen ausgegeben zu haben^^
 

blauerninja

Mitglied
@Firephoenix

//EDIT
Ein kleiner Gedanke noch:
Warum habe ich nicht meine Main/Design und erbe alle Hilfklassen. Dann bräuchte ich auch nicht diese Methodenaufrufe mit 10 Parametern?

Weil Java keine Mehrfachvererbung unterstützt. Du kannst nur von einer Klasse erben. Und auch eine Kaskade von 23 Vererbungen ist nicht sinnvoll.

Ich würd eher die Ursprungsklasse anschauen^^ Und wie ich schon empfohlen habe: :rtfm:
 

Bleiglanz

Gesperrter Benutzer
Warum fällt mir dazu nur VBA/Visual Basic ein?

Es handelt sich vermutlich um ein IDE-Problem: man klickt den Button an, der Code-Editor öffnet sich und man kann sofort den Code schreiben, der beim "click()" ausgeführt wird.

Man sollte deinen Post als Warnung verstehen: Überleg dir VORHER ein vernünfgiges Modell (a la MVC oder ähnliches) und verteile soche Action-Methoden in GUI-Klassen sofort weiter an andere Klassen (Delegates oder...)

vorläufig würde ich mit einer IDE alle diese Aufrufe nehmen, via "Extract Method" erst mal den Code in eine neue Klasse schieben (als static). Danach diese ebenfalls riesige Klasse zerlegen in keine logisch sinnvolle Einheiten usw.
 

Paul279

Aktives Mitglied
@blauerninja
Danke für die Links und den Hinweis mit der Vererbung.
Dass mir wieder mal das mit der Mehrfachvererbung nicht eingefallen ist!

So kurz mal in "Clean-Code" reingeschmöckert, steht vieles drinnen.
(So habe diesen Miniabsatz jetzt schon mehrmals umgeschrieben, so dass es dankbar aber nicht überheblich klingt,
also bitte auch nett interpretieren)
Angefangen von Benennung von Variablen, Funktionen, Kommentaren Multithreading, Exceptions usw. und kleinen Strukturen
steht da nicht mehr drinnen. Ich denke das ist ein sehr Basic-Buch, womit man sicher gut anfangen kann, doch mir
hilft es nicht mehr weiter.

Denn auch wenn mein Code 12k lang ist, ist er verständlich, da er schon sehr nach den konformen Regeln der Sprache
geschrieben ist, also richtige Groß-Kleinschreibung, richtige Benennung, Kommentaren ....
und da es objektorientiert geschrieben ist.(Nicht in der Main!)
Doch mein Problem ist wo anders und das habe ich in meinem Modell nicht bedacht ->
Dass die Mainklasse zu groß werden könnte!

Das ist mein Problem und das hat auch Bleiglanz herausgefunden.
Es handelt sich vermutlich um ein IDE-Problem: man klickt den Button an, der Code-Editor öffnet sich und man kann sofort den Code schreiben, der beim "click()" ausgeführt wird.

Die Lösung von Bleiglanz werde ich jetzt mal überdenken:
die Aufrufe mal "extrahieren" und in andere Klassen verschieben.
Arbeite übrigens mit Netbeans ;-)

Ob das jetzt die elegante Lösung ist weiß ich nicht, da ich sogar lieber 10 Parameter hätte als static zu verwenden.
Ich habe hier im Forum irgendwo einmal einen sehr interessanten Beitrag zu "Warum static Variablen und Methoden schlecht sind" gelesen.
Sehr interessant. Wenn ich nur den Link finden könnte :-/

Ich werde mir jetzt noch ein bisschen überlegen ob ich die Methoden static machen soll oder doch lieber auf die 10
Parameter setzten sollte.

Danke für eure Beiträge

PS: Bei Code-Complete habe ich noch nicht reingesehen, werde ich aber sicherlich noch machen.
 

Paul279

Aktives Mitglied
Teil2:

Hmm da ich mittlerweile schon 22 Parameter bei einer Funktion habe werde ich es wohl "moven".
Doch leider bekomme ich immer einen Fehler, anscheinend mache ich da gewaltig etwas falsch:

Bei Netbeans:
Ich klicke die Methode an. Refactor - Move - wähle die Methode aus. Unten lasse ich die Standardeinstellung:
Keep original methods and delegate to the moved method (nicht angeklickt)

Wenn ich "refactore" sagt er mir auch noch eine Warnung: (Leider für mich nicht verständlich)
No accessor found to invoke the method from: Delegate method

Er erstellt mir zwar in einer anderen Klasse wunderbar die selbe Funktion, aber wenn ich das Programm ausführe geht er noch immer in den alten Code rein, denn der ist auch noch da.

Auch wenn ich den Einstellungspunkt "Keep original methods and delegate to the moved method" anklicke, passiert nicht viel. Er geht nicht in die "neue" Methode hinein.

Was mache ich falsch?

Danke sehr
 
Zuletzt bearbeitet:

blauerninja

Mitglied
Mehr als 3 Parameter gilt schon als zu viele Parameter.
Bei NetBeans kenn ich mich nicht aus. Was ich beitragen konnte, hab ich gemacht. Für mich ist Ende Gelände.
Viel Glück, und die Ursprungsklasse würd ich mir doch schon gern anschauen. Vllt auf Rapid und Link per PN?

Ciao
 

Paul279

Aktives Mitglied
Danke trotzdem!

Da ich jetzt schon den ganzen Tag umschreibe und ich nicht mit Versionierung arbeite, kann ich dir die Ursprungsklasse nicht senden, aber wenn es dich interessiert, schicke ich es per PN, in aufgeteilter Form, sobald ich alles wieder lauffähig und meinen Ursprung sozusagen wieder hergestellt habe.

Jetzt kann ich das Programm grad nicht mal ausführen weil ich so viele Umstrukturierungen habe.
 

KSG9|sebastian

Top Contributor
"Aus jeder Seite des Design" eine Klasse machen...was genau ist den eine Seite? Ich hoffe ja mal nicht eine Seite mit textueller Beschreibung, die als Java-Klasse dann Seite1-20 heißt?

Und dein Code ist NICHT objektorientiert, wenn es nur ein Objekt/Klasse gibt. Gibt es überhaupt EIN Objekt? Oder sind alles statische Methoden?
Auch "Methode mit 20 Parametern" entspricht nicht gerade der Definition von übersichtlich, getrennt, strukturiert, objektorientiert!

Sich an Code-Conventions zu halten bringt dich auch nicht zu einem guten Design.
 

Paul279

Aktives Mitglied
Keine Sorge, ich habe nicht nur eine Klasse.

Also ich habe 7ben. Ich habe mir schon ein Modell dabei ausgedacht, das Problem, wie oben beschrieben, war die Main. An die habe ich nicht gedacht, dass sie so fett werden könnte.

Seite: Entschuldigung, dabei habe ich mein Design gemeint. Ich habe zwei TabbedPane eingebaut, die jeweils mehrere JPanels beinhalten. Die JPanels waren meine Seiten.
Also immer wenn der User wo anders hinklickt, kommt eine andere "Seite"/Jpanel :)

Wie auch oben geschrieben versuche ich static zu vermeiden. Und es gibt genug Objekte, die werde ich jetzt nicht zählen ;-)

Mittlerweile bin ich soweit, dass ich meine Logik, welche ich zusätzlich in der Main gehabt habe in mehrere Klassen aufgeteilt habe. Habe zwar noch immer 20 Parameter aber dafür habe ich jetzt die nächste Lösung gefunden.

Da ich meist nur 2 Typen mitgebe, jComboboxen und jPanels werde ich alle meine JCombos und Jpanels in Arraylists packen.

Somit verkürzt sich meine Parameterübergabe von 20 auf 2.

Bin gespannt was der nächste Vorschlag/Einwand ist :popcorn:
 
C

Camino

Gast
Da ich meist nur 2 Typen mitgebe, jComboboxen und jPanels werde ich alle meine JCombos und Jpanels in Arraylists packen.

Somit verkürzt sich meine Parameterübergabe von 20 auf 2.

Aus welchem Grund übergibst du diese Komponenten? Also, von wo nach wo übergibst du die? Ich vermute mal, das lässt sich bestimmt stark vereinfachen, dein Programm. Mich würde ja schon mal interessieren, wie dein Code aussieht. Hast du nicht mal Lust, wenigsten einen kleinen Teil von deinem GUI-Aufbau hier reinzuposten?
 

Bleiglanz

Gesperrter Benutzer
Jetzt kann ich das Programm grad nicht mal ausführen weil ich so viele Umstrukturierungen habe.

Kleiner Tipp zu Refactoring:

Immer nur KLEINE Schritte, nach jedem Schritt übersetzen und prüfen (gibt es unit-Tests?). Im Prinzip sollte nach move-method alles vollständig unverändert sein?

Und: Das Problem ist, dass so viel "Kontext" in deiner Main-Klasse ist, d.h. member-Variablen auf die du in deinen Action-Methoden einfach zugreifen kannst, die aber beim extrahieren natürlich in der Parameterliste landen. Ist suboptimal...
 

Crian

Top Contributor
Danke trotzdem!

Da ich jetzt schon den ganzen Tag umschreibe und ich nicht mit Versionierung arbeite, kann ich dir die Ursprungsklasse nicht senden, aber wenn es dich interessiert, schicke ich es per PN, in aufgeteilter Form, sobald ich alles wieder lauffähig und meinen Ursprung sozusagen wieder hergestellt habe.

Jetzt kann ich das Programm grad nicht mal ausführen weil ich so viele Umstrukturierungen habe.

Du machst nichtmal vor solchen Riesenänderungen eine Sicherung in Form einer Zip-Datei oder ähnlichem? Woa!
 

Paul279

Aktives Mitglied
Aus welchem Grund übergibst du diese Komponenten? Also, von wo nach wo übergibst du die? Ich vermute mal, das lässt sich bestimmt stark vereinfachen, dein Programm. Mich würde ja schon mal interessieren, wie dein Code aussieht. Hast du nicht mal Lust, wenigsten einen kleinen Teil von deinem GUI-Aufbau hier reinzuposten?

Ich übergebe diese Komponenten weil ich zuvor alles in der Main hatte und von dort leicht aus zugreifen konnte. Ich übergebe nun von der Main in meine Logikklassen.

Also, dass es sich stark vereinfachen lässt wage ich einmal zu bezweifeln und ich habe schon vor ein paar Tagen darüber nachgedacht ob ich einen Code posten soll, aber das würde nur noch mehr Verwirrung bringen. Wenn ich den Aufbau posten würde, müsste ich den ganzen Programmablauf erklären, meine dazugehörige Datenbank und die "Speicherlogik" warum ich welche Werte in der Datenbank speichere und ich arbeite schon ein dreiviertels jahr an dem Programm, da müsste ich sehr viel schreiben und Hilfe bei meinem Code brauche ich ja nicht wirklich, eher, wie man es richtig übergibt, wenn man so viele Komponenten braucht. ;)

Das soll jetzt nicht das weitere Thema sein, aber mein Programm ist ein Auswertungs-Statistikprogramm, welches von unterschiedlich vielen Clients zeitenweise Daten für die Auswertung bekommt. -> Nur um die Neugierde zu befriedigen ;)

Immer nur KLEINE Schritte, nach jedem Schritt übersetzen und prüfen (gibt es unit-Tests?). Im Prinzip sollte nach move-method alles vollständig unverändert sein?

Und: Das Problem ist, dass so viel "Kontext" in deiner Main-Klasse ist, d.h. member-Variablen auf die du in deinen Action-Methoden einfach zugreifen kannst, die aber beim extrahieren natürlich in der Parameterliste landen. Ist suboptimal...

Keine jUnits.

Nach der Move-Method habe ich in der Hilfsklasse die komplett selbe Methode wie in der Mainklasse, also doppelt, aber er geht nur in die Methode von der Mainklasse hinein.
Also die Move verstehe ich nicht, warum diese so arbeitet.

Ich habe gedacht move, verschiebt meine Methode von der Main in die Hilfsklasse, sodass die Methode in der Hilfsklasse ausgeführt wird?

Ja aber static möchte ich auch nicht verwenden, also bleibt mir jetzt nichts andere übrig.
Wie schon geschrieben werde ich jetzt die ganzen JLabels, JComboboxen und JRadiobuttons in Arraylists packen und diese übergeben, dann funktioniert aber alles tadellos.

Du machst nichtmal vor solchen Riesenänderungen eine Sicherung in Form einer Zip-Datei oder ähnlichem? Woa!
Was soll ich sagen. Ich schreibe es um und wenns nicht geht suche ich den Fehler. (Ich weis eine eher schlechte Weise, aber ich fahre damit nicht so schlecht)

Mein einziges Backup, falls der Laptop mal hinüber ist, ist google drive, da läuft mein Projekt drauf. Laienhaft aber für mich reichts.

Gut, da wir jetzt schon eher vom Thema abkommen, sage ich allen Danke für eure Hilfe, mittlerweile habe ich meinen Weg gefunden wie ich es mache, mich würde nur noch die Move-method interessieren, warum diese so komisch arbeitet! ???:L

Wünsche euch noch einen schönen Tag
 

Crian

Top Contributor
Statt einzelner Listen bietet sich vielleicht eine Klasse an, die deine ganzen Objekte verwaltet, der Objekte zum Speichern übergeben werden können und die man nach Objekten fragen kann.
 

Sehales

Bekanntes Mitglied
Statt einzelner Listen bietet sich vielleicht eine Klasse an, die deine ganzen Objekte verwaltet, der Objekte zum Speichern übergeben werden können und die man nach Objekten fragen kann.

Und schwupps sind wir wieder bei dem Thema ob -er Klassen(Manager/Controller..) richtig sind oder nicht.

@TO
Ich wäre sehr an dem Quellcode eines solchen riesen Projektes interessiert. Mein eigenes mammut Projekt besteht aus 71 Klassen und durchschnittlich vielleicht 200 Zeilen(viele javadoc Kommentare), damit komme ich auf 14000 Zeilen... was macht denn dein Programm? Ich verfolge den Thread seit beginn und werde langsam neugierig. Ich glaube das ist der Thread mit dem wenigstem Quellcode...
 

Paul279

Aktives Mitglied
Und schwupps sind wir wieder bei dem Thema ob -er Klassen(Manager/Controller..) richtig sind oder nicht.

Static versuche ich zu vermeiden. Ich habe das Programm nun mal umgeschrieben und übergebe alle Parameter die ich brauche.

Jetzt ist die nächste Überlegung ob ich es in Listen packen soll oder wie Sehales geschrieben hat eine eigene Klasse schreiben soll. Ich werde es mal mit Listen probieren, wenn es damit zu umständlich/umfangreich wird, werde ich wohl diese Hilfsklasse schreiben müssen.
@TO
Ich wäre sehr an dem Quellcode eines solchen riesen Projektes interessiert. Mein eigenes mammut Projekt besteht aus 71 Klassen und durchschnittlich vielleicht 200 Zeilen(viele javadoc Kommentare), damit komme ich auf 14000 Zeilen... was macht denn dein Programm? Ich verfolge den Thread seit beginn und werde langsam neugierig. Ich glaube das ist der Thread mit dem wenigstem Quellcode...

Es ist auch eine Theoretische Frage! Und warum ich es nicht poste und was es ist habe ich zwei Beiträge weiter oben geschrieben ;)

Warum ich diesen Beitrag noch offen lasse ist, dass ich gern wüsste, warum meine Move-Methode unter Netbeans nicht richtig funktioniert.

Ich beschreibe es nochmal:
Wenn ich eine Methode Move, bleibt die originale und in meiner hilfsklasse erscheint die kopierte Methode.
Er geht aber immer in die Originale hinein. Dabei wollte ich diese doch verschieben ???:L
 

mla.rue

Bekanntes Mitglied
Die Fehlermeldung hatte ich noch nie, eine accessor method ist z.b. getter... kann es sein, dass einer deiner Parameter eine getter Methode ist, und nicht eine Variable? Wenn nicht gerade statisch, kann auf diese Methode natürlich nicht am neuen Ort zugegriffen werden, daher eine Warnung. Das wäre jedenfalls meine Vermutung ohne mich explizit mit der Fehlermeldung zu beschäftigen.

Was das andere Problem angeht, Englisch lernen, oder die deutsche NetBeans Version installieren :) (nicht böse gemeint)

Dein Dialog sagt:
Code:
Keep the original method(s) and delegate to the moved method
     Deprecate the old method(s)

Die zweite Zeile ist angehackt und ausgegraut, wenn alles so lässt, wird die Methode an die neue Stelle verschoben und die Referenzen "sollten" sich ändern, so dass der neue Code ausgeführt wird.

Setzt du aber einen Hacken in die erste Zeile, und deaktivierst den in der zweiten, werden die gewählten Methoden nur kopiert und bleiben an der alten Stelle existent. Daher ändern sich auch keine Referenzen und der alte Mechanik deines Codes wird ausgeführt (der zwar in einer Klasse eine Methode mehr hat, aber ohne weitere Referenzen voll für den Eimer ist). Du hast also Nichts gekonnt.

Ergo: erste Zeile Hacken aus, zweite Zeile hacken an.
 

Paul279

Aktives Mitglied
So Entschuldige für die Verspätete Antwort, hatte einen Unfall und war im Krankenhaus deswegen gehts erst jetzt weiter.

@mla.rue
Habe mehrmals versucht auch Testmethoden umherzuschieben, mittlerweile habe ich es gefunden.

Deine Idee mit getter war richtig. Habe dort auf Variablen zugegriffen, die nur dort vorhanden waren.

Was das andere Problem angeht, Englisch lernen, oder die deutsche NetBeans Version installieren (nicht böse gemeint)

Ja, da hast du recht :oops:


So @all
Ich möchte mich bei allen nochmals herzlich bedanken.
Ihr habt mir sehr geholfen, bin wieder mal um einiges "wissender" geworden.

Wünsche euch allen noch eine weitere schöne Woche
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Variablen Problem bei Aufteilung in verschiedene Class-Files Java Basics - Anfänger-Themen 4
M Code aus IntelliJ in "Textform" für Word-Paper? Java Basics - Anfänger-Themen 10
T Kann mir jemand wörtlich erklären, was in dem Code genau passiert? Java Basics - Anfänger-Themen 1
Ü Dead Code im Programm? Java Basics - Anfänger-Themen 13
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
terashy VS Code Project run error Java Basics - Anfänger-Themen 10
JaZuDemNo Code Erklärung Java Basics - Anfänger-Themen 3
M Connect-4-Code analysieren Java Basics - Anfänger-Themen 2
N BMI Rechner Was haltet ihr von dem Code habt ihr Verbesserungsvorschläge weil design teschnisch ist das nicht das geilste würde das gerne überarbeiten Java Basics - Anfänger-Themen 12
W In alten Code zurück- und dort wieder zurechtfinden? Java Basics - Anfänger-Themen 17
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
T Fehlercode bei code der das Alter ausrechnet Java Basics - Anfänger-Themen 2
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
jhfjeh Strukturgramm in code Java Basics - Anfänger-Themen 11
D Tipps zum Code Java Basics - Anfänger-Themen 24
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2
W Java code- TicTac toe Java Basics - Anfänger-Themen 51
W Java-code Java Basics - Anfänger-Themen 8
W Java-code Java Basics - Anfänger-Themen 9
W Java-Code erklären Java Basics - Anfänger-Themen 6
ohneInformatik; For Schleife. Was macht dieser Code?? Java Basics - Anfänger-Themen 5
Say Fehlenden Code finden in einer while-Schleife? Java Basics - Anfänger-Themen 11
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
Say Stelle in Code herausfinden, wie geht man vor? Java Basics - Anfänger-Themen 12
Say do-While Code Ausführung Java Basics - Anfänger-Themen 3
W Rückfrage zur Programmgestaltung (clean code) Java Basics - Anfänger-Themen 12
M intelliJ auf neuem PC, plötzlich kein Code Java Basics - Anfänger-Themen 3
Pinhg Sound in Greenfoot Code einbinden Java Basics - Anfänger-Themen 2
C Java boolean Code läuft nicht Java Basics - Anfänger-Themen 5
I Code für Bezahlsystem (auch bei Offline Aktivität) Java Basics - Anfänger-Themen 7
J Größter gemeinsamer Teiler: mein Code Java Basics - Anfänger-Themen 6
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
A Wie könnte man diesen Code kürzer machen ? Java Basics - Anfänger-Themen 7
J Frage zu meinem Code (OOP) Java Basics - Anfänger-Themen 4
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
Max246Sch Frage zu Währungsrechner Code Java Basics - Anfänger-Themen 2
S Hilfe bei Umänderung von Java Code Java Basics - Anfänger-Themen 16
I Code wird nicht ausgeführt Java Basics - Anfänger-Themen 2
K Wie kann man diesen Code schnell und effizient interpretieren (Man hat nur 4 Minuten) Java Basics - Anfänger-Themen 3
R ISBN-10-Code überprüfen Java Basics - Anfänger-Themen 7
I Bitte um Hilfe zu unterstehenden Code Java Basics - Anfänger-Themen 6
I Interface von einer EJB Klasse, um Code zu reduzieren Java Basics - Anfänger-Themen 1
I HTML Code säubern Java Basics - Anfänger-Themen 4
B Brauche Hilfe zu einem Code Java Basics - Anfänger-Themen 5
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
N Java-Code abwärtskompatibel machen Java Basics - Anfänger-Themen 4
J Erste Schritte Was mache ich in meinem Code falsch. Java Basics - Anfänger-Themen 3
Ameise04 Variablen Inhalt einer Variable im Code verwenden? Java Basics - Anfänger-Themen 9
S Compiler-Fehler Nicht adressierbarer Code ( Non-addressable code ) Java Basics - Anfänger-Themen 5
Aemulit Java Schaltjahr berechnen Code Java Basics - Anfänger-Themen 7
A Code Problem Java Basics - Anfänger-Themen 6
C Fehler im Code Java Basics - Anfänger-Themen 10
A Zu einem bestimmten Ort im Code springen Java Basics - Anfänger-Themen 11
L Ist der Code richtig Java Basics - Anfänger-Themen 3
josfe1234 code vereinfachen Java Basics - Anfänger-Themen 15
nonickatall Ausführbarkeit von Code testen bzw. Remote Debugging Java Basics - Anfänger-Themen 4
F Frage betreff Programm mit dem man C++-Code in JAVA-Code übersetzen lassen kann Java Basics - Anfänger-Themen 2
S Fehler bei Code mit SubStrings für mich nicht auffindbar. Java Basics - Anfänger-Themen 4
G Programm Code Java Basics - Anfänger-Themen 5
C Code zusammenfassen Java Basics - Anfänger-Themen 5
I Erklärung zum Java Code Java Basics - Anfänger-Themen 2
T Programmablaufsplaninterpretation in Code umformen Java Basics - Anfänger-Themen 1
dieter000 Kurze Frage kann mir ejmand kurz diesen Code erklären, bzw wie man die zeilen erklärt und so Java Basics - Anfänger-Themen 1
AlexVo String zu Java Anweisung getString("*** java code ***") Java Basics - Anfänger-Themen 19
M ISBN-Code Java Basics - Anfänger-Themen 26
B Zeitgleiches Arbeiten am Code mit mehreren Personen? Java Basics - Anfänger-Themen 7
S Wie kann ich bei diesem Code erreichen, das als Ergebnis hier 15 herauskommt? Java Basics - Anfänger-Themen 23
N Kann man den Code vereinfachen? Java Basics - Anfänger-Themen 25
marcooooo Code erklären Java Basics - Anfänger-Themen 28
marcooooo Code erklären Java Basics - Anfänger-Themen 4
S Advent of Code Day4 Java Basics - Anfänger-Themen 4
B Nach eingefügtem Code erkennt Compiler keine Instanzvar und meldet SyntaxError Java Basics - Anfänger-Themen 2
Gaudimagspam Caesars Code entziffern in Java Java Basics - Anfänger-Themen 8
Lukasbsc Wie kann ich meinen Code optimieren? Java Basics - Anfänger-Themen 4
NeoLexx equals()-Methode Verständnis Frage anhand Code Beispiel Java Basics - Anfänger-Themen 22
I Input/Output Code wird doppelt ausgeführt Java Basics - Anfänger-Themen 3
T Main startet nicht bei vorgegebenen Code Java Basics - Anfänger-Themen 41
B Frage zum Code verständnis im Resultat Java Basics - Anfänger-Themen 10
J Fehler im Code, aber ich weiß nicht wieso! Java Basics - Anfänger-Themen 6
S Mehrere Probleme im Code Java Basics - Anfänger-Themen 7
M Code nur für Cracks? Crack the Passwort Übung Java Basics - Anfänger-Themen 7
parrot Code entferneJedeZweiteZiffer Java Basics - Anfänger-Themen 6
G Code kürzen Java Basics - Anfänger-Themen 5
Bluedaishi Source Code Signieren Java Basics - Anfänger-Themen 22
L Best Practice Code Refactoring für Methoden mit fast gleicher Aufbau Java Basics - Anfänger-Themen 6
L Best Practice Code refactern Java Basics - Anfänger-Themen 30
G code kürzen Java Basics - Anfänger-Themen 16
A Code umschreiben Java Basics - Anfänger-Themen 6
Torsten.E JavaFX mit Visual Studio Code verwenden Java Basics - Anfänger-Themen 1
C Beispiel-Code mit Pair wird nicht compiliert. Java Basics - Anfänger-Themen 8
X Reverse algorithm engineering (Java code) Java Basics - Anfänger-Themen 6
T Bufferedwriter code Nullpointerexception Java Basics - Anfänger-Themen 4
V Switch Methode macht Code kaputt Java Basics - Anfänger-Themen 18
R Was muss ich an meinem Code ändern? Java Basics - Anfänger-Themen 2
S Bewertet meinen Code - Part 1 Java Basics - Anfänger-Themen 8
M Java Code Verständnis Java Basics - Anfänger-Themen 4
M Java Code Verständnis Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben