Zum Inhalt springen

Instanzenmethoden einer Klasse im Hauptprog. aufrufen


Astasor

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...