einzelne Methoden einer Klasse auslagern

Status
Nicht offen für weitere Antworten.

MrMilti

Mitglied
Hallöchen, heut hab ich mal eine saudämliche Frage:


Ich schreib derzeit an einem kleinen Programm, dass so langsam größer und größer... sprich unübersichtlicher wird. Jetzt möchte ich da etwas Ordnung hinein bringen und den Quellcode auf mehrere Dateien verteilen, daran verzweifle ich aber allmählich.

Ich hab mich in diversen Tutorials und Hilfen mit Packaging beschäftigt, aber das beschreibt alles nicht so recht das Problem, das ich dabei habe. Dort werden immer nur einzelne Klassen auf mehrere Dateien verteilt, aber was mach ich, wenn ich einzelne Funktionen EINER Klasse auf mehrere Dateien verteilen möchte?




Ich komme von c++, da sah das ganze in etwa so aus:

main.cpp (die Datei wird dann mit dem Compiler angesprochen)
Code:
#include "elements.hpp"
#include "elements.cpp"

int main(int argc, char *argv[])
	{
	PointValues P1, P2;
	P1.flush();
	}

elements.hpp:
Code:
class PointValues
	{
	private:
	double stat, rw, hw, ny, h, n;

	public:
	PointValues() {}
	~PointValues() {}
	void flush();

	};

elements.cpp
Code:
void PointValues::flush()
	{
	stat = 0.;
	rw   = 0.;
	hw   = 0.;
	ny   = 0.;
	h    = 0.;
	n    = 0.;
	return;
	}


Also in diesem Beispiel wird die Datei main.cpp kompiliert, die zunächst mal eine Headerdatei elements.hpp importiert, in der nur Variablen und Funktionennamen deklariert sind. Erst in der Datei elements.cpp stehen dann (mit Angabe des Namensraums) die eigentlichen Funktionen drin. Genau das würde ich jetzt in Java auch gerne machen, ist das möglich? Oder wie ist das in Java üblich, wenn eine Klasse immer länger und länger wird?


Nachtrag:
Ich merke grade, mein Problem wird nicht 100% ersichtlich durch das bisher geschriebene. Zur Aufklärung: in der elements.hpp könnten beispielsweise sehr viele Funktionen deklariert sein, die alle sehr lang sind. Zur Übersichtlichkeit werden diese vielen Funktionen jetzt in sinnvollen Gruppen auf mehrere Dateien verteilt. Also ein Headerfile, dass die Funktionen deklariert (damit sich auch keine dazumogeln kann) und dann ein paar Dutzend einzelne Dateien, in denen die Funktionen dann drinstehen ;)
 
Zuletzt bearbeitet:

kama

Top Contributor
Hallo,

es gibt in Java keine Unterscheidung zwischen Deklaration und Definition wie in C++....abgesehen davon heissen in C++ die Header Dateien immer noch ".h" ...weiterhin fehlen in der Header-Datei die #ifndef ..._H...
Warum ist der Default Constructor nicht dazu da die sachen auf 0.0 zu setzen...der Würde doch dann im C++ Quelltext
Code:
PointValues P1, P2;
hier aufgerufen....anstatt mit flush ?

Java:
public class PointValues {
  private Double stat;
  private Double rw;
  private Double hw;
  private Double ny;
  private Double h;
  private Double n;

  public PointValues() { //Default Constructor
    flush();
  }
  //Weitere Constructoren...

  public void flush() {
    stat = 0.0;
    rw = 0.0;
    hw = 0.0;
    ny = 0.0;
    h = 0.0;
    n = 0.0;
  }

 //getter/setter schenke ich mir jetzt mal....
}
Das obige kommt in eine einzige Datei und zwar "PointValues.java"...

In C++ sollte man eine logischen Zusammenhang zwischen Datei und Funktionen bzw. besser Methoden machen....

MfG
Karl Heinz Marbaise
 

MrMilti

Mitglied
Ich habs in der Uni mit .hpp gelernt, im Endeffekt ist das doch auch völlig egal, man könnte sie auch .quitscheentchen nennen, wenn einem der Sinn danach steht.

Desweiteren führe ich auch nur sinnhafte Beispiele an, um mein Problem zu erläutern und lege jetzt keinen Wert auf vollständig ausformulierte Codezeilen, die vielleicht hübsch anzusehen sind, mit meiner Problemstellung aber nichts zu tun haben.


Wie gesagt mein Problem ist immer noch das Selbe:
Ich hab eine Klasse mit Hausnummer 23 Millionen Methoden und die möcht ich bitte nicht alle in eine Datei schreiben müssen...

Sorry für die vielleicht etwas bissige Antwort, aber ich hab grad das Gefühl, nicht ernst genommen und als unfähig dargestellt zu werden
 
M

maki

Gast
Ich hab eine Klasse mit Hausnummer 23 Millionen Methoden und die möcht ich bitte nicht alle in eine Datei schreiben müssen...
Nicht falsch verstehen, aber man sagt "Wenn man nur einen Hammer hat, sieht jedes Problem wie ein Nagel aus."
Dein Hammer ist die eher schräge Trennung in C++ von Schnittstelle und Deklaration, in der man beides mischen kann.
Was du für einen Nagel hällst ist sehr wahrscheinlich eine nicht OO mässige Struktur, wenn eine Klasse zu groß wird, liegt das daran das da weitere Klassen drinnstecken die ausbrechen wollen ;)

Mit refactoring kannst du das korrigieren.
 

kama

Top Contributor
Hallo,

Ich habs in der Uni mit .hpp gelernt, im Endeffekt ist das doch auch völlig egal, man könnte sie auch .quitscheentchen nennen, wenn einem der Sinn danach steht.
Nicht wirklich ....Das Problem ist, dass faktische alle Build Tools (Make etc.) hier meist default Regeln haben um C++ zu übersetzen und da wird nun mal .h genommen.....

Desweiteren führe ich auch nur sinnhafte Beispiele an, um mein Problem zu erläutern und lege jetzt keinen Wert auf vollständig ausformulierte Codezeilen, die vielleicht hübsch anzusehen sind, mit meiner Problemstellung aber nichts zu tun haben.
Das hättest Du ja kurz hinschreiben könne... (so nach dem Motto: Zur Übersichtlichkeit gekürzt....)...Weil ich nur danach gehen kann was Du schreibst und nicht was Du Dir denkst.....Hier gibt es durchaus Leute die schon mal C++ gesehen aber auch selbst schon programmiert haben....somit fällt denen (auch mir) so etwas auf....

Wie gesagt mein Problem ist immer noch das Selbe:
Ich hab eine Klasse mit Hausnummer 23 Millionen Methoden und die möcht ich bitte nicht alle in eine Datei schreiben müssen...
Dann war das auch schon in C++ Käse. Das refaktoriert man dann. Eben, um kleinere Übersichtlichere Einheiten zu erhalten....Da besteht prinzipiell kein Unterschied zwischen C++ und Java...Ok Java hat keine Prä-Prozessor..(Ist auch gut so) usw....

Abgesehen davon wenn Die Klasse tatsächliche so viele Methoden hat, dann ändernt das erstmal nichts....Stichwort ist wie schon gesagt "Refaktorierung" ....dazu sind selbstverständlich Unit Tests unerlässlich....

Sorry für die vielleicht etwas bissige Antwort, aber ich hab grad das Gefühl, nicht ernst genommen und als unfähig dargestellt zu werden
Warum nicht? Sowohl Leroy42 als auch ich haben geschrieben, dass das von Dir gewünschte nicht möglich ist...Abgesehen davon: Es wird doch geantwortet....Was willst Du denn noch mehr?
EDIT: Maki fehlt noch...

MfG
Karl Heinz Marbaise
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
E JTable einzelne Zelle färben Java Basics - Anfänger-Themen 2
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
B Inventar als einzelne Klassen anlegen? Java Basics - Anfänger-Themen 12
X Wie kann ich Zahlen in einzelne Zifferne zerlegen? Java Basics - Anfänger-Themen 3
O Einzelne Bits umwandeln und prüfen Java Basics - Anfänger-Themen 23
C Auf einzelne Werte aus HashSet zugreifen Java Basics - Anfänger-Themen 10
K Einzelne Email verschieben nicht möglich Java Basics - Anfänger-Themen 3
F Arrays Sätze speichern und einzelne Worte mit Index Angabe auslesen Java Basics - Anfänger-Themen 4
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
B lanterna einzelne Zeichen aus dem Terminal löschen Java Basics - Anfänger-Themen 0
C Matrixmultiplikation ohne einzelne Elemente aufzurufen Java Basics - Anfänger-Themen 2
T JTable einzelne Zeilen löschen Java Basics - Anfänger-Themen 3
A Variablen String Array in einzelne Strings auspalten Java Basics - Anfänger-Themen 4
J Methoden Einzelne Objekte eines Vectors addieren Java Basics - Anfänger-Themen 10
S Einzelne Buchstaben aus Jtextfield in array Java Basics - Anfänger-Themen 2
R Einzelne Zahlen von der Eingabe (Scan) weiterverarbeiten Java Basics - Anfänger-Themen 3
D Kleinere Positionsangabe als einzelne Pixel bei Image? Java Basics - Anfänger-Themen 28
F Einzelne Werte aus einem Array vergleichen? Java Basics - Anfänger-Themen 8
H Input/Output JTextArea einzelne Zeile auslesen Java Basics - Anfänger-Themen 6
X String einzelne Buchstaben ersetzen Java Basics - Anfänger-Themen 4
M Einzelne Zeilen nach Zeichen auslesen Java Basics - Anfänger-Themen 4
T Erste Schritte einzelne Wörter aus textdatei lesen... Java Basics - Anfänger-Themen 4
M JTable einzelne Spalte rechtsbündig Java Basics - Anfänger-Themen 2
M JUnit - nur einzelne Methode testen? Java Basics - Anfänger-Themen 4
S Einzelne Werte von Array-Feld löschen Java Basics - Anfänger-Themen 15
N TextZeile in einzelne Strings teilen, die mit Komma getrennt sind Java Basics - Anfänger-Themen 4
A einzelne Zeichen aus String auslesen Java Basics - Anfänger-Themen 3
J Von einem String einzelne Wörter speichern Java Basics - Anfänger-Themen 6
R einzelne Bits prüfen Java Basics - Anfänger-Themen 12
H String zerlegen in einzelne Buchstaben (char)?? Java Basics - Anfänger-Themen 7
A Einzelne TeilStrings einfärben Java Basics - Anfänger-Themen 3
S mehrere einzelne klassen in eine datei packen Java Basics - Anfänger-Themen 4
K Datentypen Liste: Einzelne Einträge ändern Java Basics - Anfänger-Themen 2
D Einzelne Ziffern aus einem String Java Basics - Anfänger-Themen 10
B Was für Aufgaben haben die einzelne Entwurfsmuster? Java Basics - Anfänger-Themen 9
C Einzelne Werte eines Arrays ausgeben Java Basics - Anfänger-Themen 2
B Laufzeitverschlechterung durch Auslagerung in einzelne Threads Java Basics - Anfänger-Themen 8
T Einzelne Ziffer zusammenfügen (ohne Strings oder Arrays) Java Basics - Anfänger-Themen 2
M einzelne Pixel setzen/auslesen Java Basics - Anfänger-Themen 2
N aus HTML einzelne Inhalte (z.B. Tabelleninhalte) auslesen Java Basics - Anfänger-Themen 10
A Nur einzelne Methode einer anderen Klasse starten Java Basics - Anfänger-Themen 2
G Einzelne Datei im jar verändern ? Java Basics - Anfänger-Themen 5
B Einzelne Zellen in JTable markieren Java Basics - Anfänger-Themen 2
C String.split("") einzelne Positionen abfragen Java Basics - Anfänger-Themen 10
ven000m Primzahl.class wie starte ich diese einzelne Datei? Java Basics - Anfänger-Themen 10
R einzelne Zelle einer JTable bearbeiten Java Basics - Anfänger-Themen 2
M Object zu Int Problem, obwohl einzelne Objecte Int sind =( Java Basics - Anfänger-Themen 2
J String - einzelne Zeichen sortieren Java Basics - Anfänger-Themen 14
G Einzelne Zeilen beschreiben Java Basics - Anfänger-Themen 4
E einzelne Zeile mithilfe Steams aus Textdatei überschreiben Java Basics - Anfänger-Themen 23
F einzelne Buchstaben in JTextField ändern Java Basics - Anfänger-Themen 11
S setCellRenderer für EINZELNE Zelle Java Basics - Anfänger-Themen 9
S Zugriff auf einzelne Buchstaben eines String Java Basics - Anfänger-Themen 16
J Jtable - wie einzelne zelle markieren Java Basics - Anfänger-Themen 8
emreiu Methoden Rekursive Methoden Runter- & Hochzählen Java Basics - Anfänger-Themen 2
U Funktionale Interfaces mit mehreren abstrakten Methoden? Java Basics - Anfänger-Themen 8
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
J Argumente in Methoden übergeben Java Basics - Anfänger-Themen 1
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
Renjiroo Java Bmi Rechner mit Methoden Java Basics - Anfänger-Themen 4
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
Alen123 Erstes Arbeiten mit Methoden. Java Basics - Anfänger-Themen 5
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Gerade oder ungerade Zahl mittels Methoden Java Basics - Anfänger-Themen 13
M Erklärung von Ausnahmebehandlung in Methoden Java Basics - Anfänger-Themen 13
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
L Rekursive Methoden Java Basics - Anfänger-Themen 14
X Wie erreiche ich, dass ein Robot weitere Attribute hat, die nicht materialisiert sind, sondern nur über get/ set-Methoden simuliert sind? Java Basics - Anfänger-Themen 1
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
W Verschiedene Methoden in einer Klasse in der Main aufrufen? Java Basics - Anfänger-Themen 8
W Methoden aufrufen - auch klassenübergreifend? Java Basics - Anfänger-Themen 9
Kotelettklopfer Methoden nicht aufrufbar Java Basics - Anfänger-Themen 34
R Schulaufgabe, Bruache Hilfe mit non-static Methoden Java Basics - Anfänger-Themen 2
S Vererbung Abstrakte Methoden: Wozu das Ganze?! Java Basics - Anfänger-Themen 7
S abstrakte methoden in subclass? Java Basics - Anfänger-Themen 7
S Methoden - Warum int wenn auch void? Java Basics - Anfänger-Themen 3
H Kann man Methoden öfter aufrufen? Java Basics - Anfänger-Themen 2
CptK Interface Functional interface mit mehreren Methoden Java Basics - Anfänger-Themen 6
P Objekt in mehreren Methoden verwenden. Java Basics - Anfänger-Themen 3
M Aufruf von statischen Methoden einer anderen Klasse Java Basics - Anfänger-Themen 15
lougoldi Verkettung von Methoden und Konstruktoren Java Basics - Anfänger-Themen 4
Zeppi OOP Methoden mit einander Verknüpfen Java Basics - Anfänger-Themen 6
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6
A Parametar übergabe zwischen Methoden Java Basics - Anfänger-Themen 26
D Methoden nach einer bestimmten Reihenfolge ausführen. Java Basics - Anfänger-Themen 20
P Wie rufe ich Methoden mit einer Referenz auf eine Klasse||Objekt auf Java Basics - Anfänger-Themen 4
O Attribute die Methoden zählen Java Basics - Anfänger-Themen 5
M Bräuchte Hilfe bei diesen Methoden Java Basics - Anfänger-Themen 4
G Methoden Methoden mit versch. Datentypen Java Basics - Anfänger-Themen 1
T Ich habe eine Variabel die nicht Methoden übergreifend ist. Kann mir jemand Helfen :) Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben