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

Normale Funktionen in OOP

 

Nicolas S.
Forum-Century

Forum-Century


Beiträge: 146
Anmeldedatum: 15.07.09
Wohnort: ---
Version: R2014a/b
     Beitrag Verfasst am: 15.07.2009, 14:06     Titel: Normale Funktionen in OOP
  Antworten mit Zitat      
Hallo zusammen,

ich bin gerade dabei, in objektorientiere Programmierung in Matlab einzusteigen- mit der "klassischen" Programmierung bin ich eigentlich sehr vertraut, aber hier sieht noch alles fremd und wild aus. Ich habe folgendes Problem:

Ich habe eine handle - Klasse definiert, bei der eine Methode auf eine Funktion zurückgreifen muß, die als "Gewöhnlichen Matlab Funktion" (call by value) programmiert wurde, wobei der Rückgabewert in der Methode weiterverwendet wird. Die Funktion, nennen wir sie der Einfachheit halber:
Code:

function a = calcSomething(b)
 

ist sehr ausgefuchst, in einer eigenen m-Datei und greift ihrerseits auf viele andere "gewöhnliche" Matlab-Funktionen in jeweils eigenen m-Dateien zu.

In der methode will ich sie weiterverwenden in der Form:
Code:

function RefreshMesh(obj)
            a = calcSomething(obj.b)
            obj.a = a;
        end % RefreshMesh
 


Gibt es eine Möglichkeit, diese Funktionen innerhalb des Klassen-Ordners und zugleich "private" zu halten, ohne die Funktionen großartig umzuschreiben?

Was funktioniert, ist die funktion calcSomething als "static" und "private" zu erklären, wobei sie aber 1. mit a = Klasse.calcSomething(b) aufgerufen werden muß und 2. auch alle Unterfunktionen in einzelnen m-Dateien als static erkärt und mit der Punkt-Schreibweise aufgerufen werden müssen.
Private Nachricht senden Benutzer-Profile anzeigen


Comboni
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 14.10.09
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 16.02.2010, 16:06     Titel:
  Antworten mit Zitat      
Nicolas S. hat Folgendes geschrieben:
Hallo zusammen,

[...]

Gibt es eine Möglichkeit, diese Funktionen innerhalb des Klassen-Ordners und zugleich "private" zu halten, ohne die Funktionen großartig umzuschreiben?


Hallo,
Da ich auch neu bei oop programmiere, lerne ich auch dabei. Ich würde das so machen:
Erstmals die Klasse in einem @Class Ordner speichern, und alle andere Methoden (function calcSomething, function refreshMesh) die zu der Klasse "Class" gehören in dem selben Ordner als separate m-Dateien speichern. Danach in der Klasse die Methoden als Private definieren.
z.B.:
Code:

classdef Class < handle
    %CLASS
   
    properties
        attributA=1;
    end
   
    methods
        function obj = Class(attributA)
            %Constructor
            obj.attributA = attributA;
        end
               
    end

    methods (Access = private)
        a = calcSomething(obj, b)
        refreshMesh(obj)
    end
 


Gruss
Private Nachricht senden Benutzer-Profile anzeigen
 
Nicolas S.
Themenstarter

Forum-Century

Forum-Century


Beiträge: 146
Anmeldedatum: 15.07.09
Wohnort: ---
Version: R2014a/b
     Beitrag Verfasst am: 02.03.2010, 18:32     Titel:
  Antworten mit Zitat      
Hallo zusammen,

vielleicht sollte ich den alten Thread mal schließen.
Daß Funktionen selbst innerhalb ihrer Klasse mit ihrem Klassen- oder Packagenamen aufgerufen werden muessen habe ich mitlerweile durch den exzessiven Einsatz von "embedded"-Funktionen gelöst; so bleiben massige Aufrufe kurzer Funktionen im Rahmen gewöhnlicher Schreibarbeit. (Gibt es eigentlich einen guten Texteditor, der im 2-Spalten-Modus anzeigen kann? Mein Bildschirm ist sehr breit aber nur niedrig :-) ).

Viele Grüße
Nicolas
_________________

--
The programmer suggested it.
Private Nachricht senden Benutzer-Profile anzeigen
 
MatLabNooB
Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2011, 05:32     Titel:
  Antworten mit Zitat      
Hi,

hab jetzt ein ziemlich ähnliches Problem, ich ersetzte momentan teilweise meinen Code mit OOP. Jetzt ist es so, dass ich innerhalb einer Klasse einen Pushbutton generiere und dieser soll eine Funktion in meinem normalen Code abfeuern, allerdings scheint der Pushbutton diese funktion nicht zu sehen? Ich denk, wenn Class methods aus normalen Funktionen heraus gestartet werden können, warum nicht umgekehrt?

gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
MatLabNooB
Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2011, 20:42     Titel:
  Antworten mit Zitat      
push
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 26.08.2011, 09:18     Titel:
  Antworten mit Zitat      
Hallo,

wo ist da Zusammenhang zu Threadopener-Frage. Bitte neues Thema aufmachen, und deine Frage korrekt schildern. In Thread sind nur Fragen und Antworten zu Threadopener-Frage erlaubt. Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
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.