Astasor Geschrieben 5. Januar 2010 Geschrieben 5. Januar 2010 Hey Leute, da mir hier schon oft geholfen wurde, komm ich wieder mal mit ner Frage angelaufen. Ich habe eine Klasse geschrieben, darin Variablen sowie Methoden definiert. Jetzt wollte ich mal fragen, wie ich die Teile im Hauptprogramm aufrufen kann. Das geht irgendwie mit dem new Operator doch ich hab kein Plan wie ich den verwende. Hier mein Code. class Buch{ public class Inhalt{ int Erscheinungsdatum; String Autor; String Sprache; public String Schreiber(String A) { A=In.readString(); Autor=A; return Autor; } public int Erscheinung(int Er) { Er=In.readInt(); Erscheinungsdatum=Er; return Erscheinungsdatum; } public String Text(String Spr){ Spr=In.readString(); Sprache=Spr; return Sprache; } } public static void main (String[] arg){ } } Gebt mir bitte nen Tipp oder ein Beispiel oder sowas. Zitieren
Ulfmann Geschrieben 5. Januar 2010 Geschrieben 5. Januar 2010 Hallo Astasor, mir tut es ja fast Leid, aber die reine Beantwortung Deiner Frage wird Dich hier kaum weiter bringen. Ich habe eine Klasse geschrieben, darin Variablen sowie Methoden definiert. Jetzt wollte ich mal fragen, wie ich die Teile im Hauptprogramm aufrufen kann. Das geht irgendwie mit dem new Operator doch ich hab kein Plan wie ich den verwende. das geht so: Object myObject = new Object(); myObject.doStuff(); Und schon wird die von dir definierte Methode aufgerufen. Gebt mir bitte nen Tipp oder ein Beispiel oder sowas. Dein Code ist für mein Empfinden viel zu umständlich. Ich behaupte mal, dass es nicht Deine Absicht ist, hier mit inneren Klassen zu arbeiten. Ich möchte jetzt nicht auf alle Einzelheiten und Fehler eingehen, aber als Erstes solltest Du entweder alles erstmal in nur eine Hauptklasse packen oder die Klasse Inhalt auslagern. Zitieren
Klotzkopp Geschrieben 5. Januar 2010 Geschrieben 5. Januar 2010 Da Inhalt eine innere Klasse von Buch ist, kannst du keine Inhalt-Instanz ohne eine Buch-Instanz anlegen: Buch b = new Buch(); Buch.Inhalt i = b.new Inhalt(); [/code] Was ich mich aber frage: Wozu haben deine Methoden Parameter? Parameter sind Eingabewerte für Methoden, aber deine Methoden tun gar nichts mit ihren Parametern, sie überschreiben sie sofort. Anstatt den Parameter einzulesen und dann dem Instanzattribut zuzuweisen, könntest du auch gleich das Instanzattribut selbst einlesen. Dann könntest du die Parameter komplett weglassen. Zitieren
Astasor Geschrieben 8. Januar 2010 Autor Geschrieben 8. Januar 2010 Vielen Dank für die ganzen Antworten. Nun, zur Zeit studiere ich Informatik und eine Aufgabe ist es, das in eine interne Klasse mit Instanzenmethoden zu packen. Normalerweise räum ich auch alles in eine Hauptklasse. Wenn ich die Parameter direkt einlese, kann ich sie dann über die Instanzenmethoden ausgeben? Kann ich die Parameter auch in den Instanzenmethoden selbst einlesen? Zitieren
Klotzkopp Geschrieben 8. Januar 2010 Geschrieben 8. Januar 2010 Wenn ich die Parameter direkt einlese, kann ich sie dann über die Instanzenmethoden ausgeben?Ich verstehe die Frage nicht. Deine Methoden sind sowieso etwas seltsam. Sie haben Parameter, als ob man die Instanzattribute der Klasse damit setzen könnte, sie lesen die Attribute ein, und sie geben auch die eingelesenen Werte zurück. Es ist aber beispielsweise nicht möglich, den Attributwert aus der Klasse auszulesen, ohne auch gleichzeitig das Einlesen anzustoßen. Normalerweise würde man diese unterschiedlichen Funktionalitäten auf mehrere Methoden aufteilen. Dass eine Klasse ihre Attribute selbst vom Benutzer einliest, halte ich für ziemlich ungewöhnlich. Damit ist diese Klasse nämlich sehr stark an diese Art der Eingabe gebunden. Normalerweise würde man die für die Instanzerstellung notwendigen Werte außerhalb einlesen und dann einen geeigneten Konstruktor aufrufen. Kann ich die Parameter auch in den Instanzenmethoden selbst einlesen?Das tust du doch schon. Worauf ich hinauswollte, war nur folgendes: Statt public int Erscheinung(int Er) { Er=In.readInt(); Erscheinungsdatum=Er; return Erscheinungsdatum; }[/code] kannst du auch einfach das schreiben: [code] public int Erscheinung() { Erscheinungsdatum=In.readInt(); return Erscheinungsdatum; }Der Parameter der Methode ist überflüssig. Aber wie gesagt, die Doppelfunktionalität (Einlesen und Zurückgeben) ist etwas merkwürdig. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.