WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Funktionen anderer Klassen ausführen

 

Piet

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2009, 15:58     Titel: Funktionen anderer Klassen ausführen
  Antworten mit Zitat      
Hallo!
Ich beginne gerade mit OOP in Matlab.
Ich habe eine Klasse 'CHauptklasse'. In dieser werden im Konstruktor z.B. zwei Instanzen anderer Klassen erstellt:
Code:
function obj = CHauptklasse()
   obj.zweite=CZwei();
   obj.dritte=CDrei();
end


Wie kann ich nun z.B. in einer Funktion der Klasse zwei eine Funktion aus Klasse drei aufrufen?

Habs bisher so, dass die Funktion der Klasse zwei ein Event auslöst, welchem die Hauptklasse zuhört. Diese kann dann mit
Code:
obj.dritte.Funktion

die gewünschte Funktion auslösen.

Dies geht aber bestimmt eleganter, oder?


MfG
Piet


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 11.11.2009, 16:37     Titel:
  Antworten mit Zitat      
Hallo,

ich geb zu, ich verstehe die Frage nicht: "in einer Funktion der Klasse zwei eine Funktion aus Klasse drei aufrufen?", was meinst Du damit? Eine Funktion der Klasse aufrufen ist immer (solange sie nicht statisch ist), an ein Objekt der Klasse gebunden ...

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
piet

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2009, 16:52     Titel:
  Antworten mit Zitat      
Hallo!

Ich habe mal Beispielfiles angehängt. Hoffe das hilft Smile

CDrei.m
 Beschreibung:

Download
 Dateiname:  CDrei.m
 Dateigröße:  300 Bytes
 Heruntergeladen:  922 mal
CZwei.m
 Beschreibung:

Download
 Dateiname:  CZwei.m
 Dateigröße:  357 Bytes
 Heruntergeladen:  996 mal
CHauptklasse.m
 Beschreibung:

Download
 Dateiname:  CHauptklasse.m
 Dateigröße:  340 Bytes
 Heruntergeladen:  941 mal
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 11.11.2009, 16:56     Titel:
  Antworten mit Zitat      
Hallo,

hmm, sorry, aber das macht keinen Sinn: das obj, welches bei den Methoden an erster Stelle steht, ist ein Objekt der Klasse, in der die Methode definiert ist. Jede Klasse ist für sich verantwortlich, Du probierst, diese grundlegende Eigenschaft zu überwinden.
Vielleicht wird es klarer, wenn Du kurz erklärst, was die 3 Klassen repräsentieren sollen ...

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
piet

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2009, 12:44     Titel:
  Antworten mit Zitat      
Hallo!

Die Hauptklasse soll sozusagen als übergordnete Verwaltungsklasse arbeiten. In ihr läuft z.B. ein Timer, der Daten einliest.

Klasse zwei wäre dann eine GUI. Der Timer in der Hauptklasse kann ja dann mit
Code:
obj.zweite.GuiAktualsieren
eine Funktion "GuiAktualisieren" in dem Objekt CZwei aufrufen. Diese aktualiesiert dann Anzeigen auf der GUI.
In Klasse drei ist ein Berechnungsprogramm hinterlegt. Hier liegt z.B. eine Funktion "StarteBerechnung".

Wenn sich nun auf der GUI ein Button befindet, möchte ich beim Klicken von diesem, die Funktion "StarteBerechnung" durchführen. Dafür müsste ja Das Objekt der Klasse zwei (also meine GUI) das Objekt der Klasse drei (das Berechnungsprogramm) kennen.

Hoffe das ist verständlich Very Happy
Danke für deine Nachfragen!
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 12.11.2009, 13:43     Titel:
  Antworten mit Zitat      
Hallo,

wenn das so ist, dann ist aber der erste Weg der richtige: das GUI "alarmiert" über ein event die Hauptklasse, welche ihrerseits die Berechnung startet. Klingt zwar unelegant, wie Du geschrieben hast, ist aber logisch richtig ...

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
piet

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2009, 15:09     Titel:
  Antworten mit Zitat      
Okay, danke!
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.