|
|
Methods der superclass in subclass aufrufen |
|
sierkt |
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 31.10.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 31.10.2009, 14:41
Titel: Methods der superclass in subclass aufrufen
|
|
|
|
|
Hallo,
ich habe folgendes Problem:
Ich habe eine Klasse "Punkt" erstellt mit einer constructor method.
Des Weiteren habe ich Unterklassen erstellt, "Unterpunkt_A", "Unterpunkt_B" und "Unterpunkt_C".
Jetzt möchte ich folgendes machen. Unter methods der Klasse "Punkt" soll eine Funktion definiert werden, die von den Unterklassen benutzt werden kann, jedoch nicht benutzt werden muss. Diese Funktion heißt:
fcoordinate = formatcoordinate(coordinate)
Wenn ich die Funktion in einer separaten .m-File speichere und in den Unterklassen aufrufe funktioniert das auch alles.
Ich möchte die Anzahl der Dateien meines Programm jedoch so gering wie möglich halten, daher soll die Funktion in die Klasse "Punkt". Ist dieses möglich? Und wenn ja, wie rufe ich diese Funktion der Klasse "Punkt" in der Unterklasse auf.
Diese Funktion wird in der Constructor Method der Unterklasse benötigt.
In der Matlab Hilfe habe ich schon gefunden, dass beim Aufruf das @-Zeichen benutzt werden soll. Dieses funktioniert bei mir auch, wenn ich den Constructor der Hauptklasse aufrufe. Ich bekomme es jedoch nicht bei dieser angesprochenen Funktion hin.
Wäre super wenn mir jemand helfen könnte!
Gruß
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 31.10.2009, 15:08
Titel:
|
|
Hallo,
soweit ich weiss, stehen die Methoden einer Klasse in ihren vererbten Klassen zur Verfügung, ohne dass weiteres Zutun notwendig ist. Was passiert denn, wenn du einfach versuchst, die Methode aufzurufen?
Grüße,
Harald
|
|
|
sierkt |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 31.10.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 31.10.2009, 15:10
Titel:
|
|
Dann kommt in Matlab die Fehlermeldung, dass die Function bzw. Method nicht definiert ist.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 31.10.2009, 15:19
Titel:
|
|
Hallo,
da weiss ich auch erstmal nicht weiter. Kannst du evtl den Code bzw. die relevanten Teile davon posten?
Grüße,
Harald
|
|
|
sierkt |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 31.10.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 31.10.2009, 15:23
Titel:
|
|
Vielen Dank.
Werde ich gleich Montag machen. Habe den Code leider momentan nur im Büro.
Gruß,
Sierk
|
|
|
Titus |
Forum-Meister
|
|
Beiträge: 871
|
|
|
|
Anmeldedatum: 19.07.07
|
|
|
|
Wohnort: Aachen
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 31.10.2009, 19:02
Titel:
|
|
Hallo,
ein paar Anmerkungen (ich gebe Harald recht, ohne Code schwierig).
- die Methode muss public oder protected sein
- das @ braucht man nur, wenn man in der abgeleiteten Klasse die Methode überlagert und die Methode der Basisklasse aufrufen will
ansonsten sollte die Funktion bekannt sein (schließlich ist das eins DER Eigenschaften objektorientierter Programmierung).
Titus
|
|
|
sierkt |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 31.10.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.11.2009, 15:16
Titel:
|
|
Hallo!
So, hier kommt jetzt erstmal der Code der Basisklasse "Punkt":
Die unter methods definierte Function "formatCoordinates" wird nun in einer Unterklasse aufgerufen. Die Unterklasse ist hier zu sehen:
Ich möchte mit dem Datensatz 5, bei dem es sich um einen 'string' handelt in die Funktion formatCoordinates gehen. Wenn ich die Funktion in einer separaten m-File speichere funtioniert alles einwandfrei.
In Matlab wird nun dieser Fehler angegeben:
??? Undefined function or method 'formatCoordinatesDeclination' for input
arguments of type 'char'.
Error in ==> cVOR>cVOR.cVOR at 40
obj.StationDeclination
=formatCoordinatesDeclination(Daten{5});
Hoffe es ist alles einigermaßen verständlich!
Gruß,
Sierk
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 02.11.2009, 15:37
Titel:
|
|
Hallo,
um das laufen zu lassen, fehlt natürlich z.B., was Daten nun wirklich ist.
Das entscheidende Problem dürfte aber sein, dass MATLAB in dieser Zeile
nicht weiss, dass es sich um eine Methode der Oberklasse handeln soll - woher auch? Probier doch mal:
Grüße,
Harald
|
|
|
Titus |
Forum-Meister
|
|
Beiträge: 871
|
|
|
|
Anmeldedatum: 19.07.07
|
|
|
|
Wohnort: Aachen
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.11.2009, 15:45
Titel:
|
|
Hallo,
das zweite, was merkwürdig ist: die formatCoordinate Methode ist nicht statisch? Dann sollte der erste Parameter doch ein Objekt sein, oder? Oder, falls sie statisch ist (oder sein sollte), muss sie immer (egal ob in der eigenen Klasse oder wo auch immer) mit cPoint.formatCoordinate aufgerufen werden.
Ciao,
Titus
|
|
|
sierkt |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 31.10.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.11.2009, 15:58
Titel:
|
|
Vielen Dank Titus!!!
Habe die methode jetzt statisch gemacht. Jetzt funktioniert alles bestens. Bin auch recht neu im OOP. Muss mir jetzt mal klar machen, was statisch bedeutet.
Gruß,
Sierk
|
|
|
Titus |
Forum-Meister
|
|
Beiträge: 871
|
|
|
|
Anmeldedatum: 19.07.07
|
|
|
|
Wohnort: Aachen
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.11.2009, 17:25
Titel:
|
|
Hallo,
eine statische Methode ist eine, die der Klasse zugehörig sein soll, aber nicht an ein Objekt der Klasse gebunden ist. Beispiel:
Ich brauche also nicht
zu schreiben, da von x selber keine Eigenschaften oder Methoden erforderlich sind, sondern
Titus
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|