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

Properties aus Klasse auslesen und weitergeben

 

Adi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2012, 10:45     Titel: Properties aus Klasse auslesen und weitergeben
  Antworten mit Zitat      
Hallo,

mein Problem ist mehr oder weniger ein Komfort Problem und mich würde interessieren, ob ich mir das Leben ein wenig vereinfach kann:

Ich habe die Klasse AspenManipulator gebaut, die verschiedene Funktionen erfüllt, unter anderem eine Optimierungsberechnung.

Für jedes Simulationsmodell, was ich optimieren will, erstelle ich mir eine eigene .m Datei, dass eine Instanz der Klasse erstellt und dann die Properties der Klasse AspenManipulator befüllt, z.B.

Code:
Distillation_H2O            = AspenManipulator;
Distillation_H2O.path   = filepath;
Distillation_H2O.comp  = comp;


Dann rufe ich die Optimierungsfunktion auf, die allerdings sehr viele Eingänge und sehr viele Ausgänge hat:
Code:
[alpha, Val_opt, history_alpha, history_Gamma, history_Phi, history_VPressure, history_dH_Vap, history_S_Mix, history_K_x, history_Value, err_comment, Block_comment]  = Distillation_H2O.Optimizer(node_alpha, nodepath_opt, Aspen, AspenEngine)


Meine Idee ist jetzt, dass ich viele der Ausgänge in ein Property der Klasse schreiben will und dann über den Workspace auf die Ausgänge zugreifen möchte.

Es klappt auch schon, innerhalb des Optimizers ein Property (hier: history_VPressure) zu schreiben. Nur, wenn ich dann nach der Ende des Optimizers history_VPressure in der Instanz aufrufen will, dann ist das Property leer.

Jetzt ist meine Frage: Geht das überhaupt, dass ich ein derartiges Property auslesen lassen kann, oder liegt das in der Natur der OOP, dass sowas nicht geht?

Wenn es doch geht, wie kann ich das umsetzen?


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 12.12.2012, 14:36     Titel:
  Antworten mit Zitat      
Hallo

Gehen tut das schon. Der Indirekte Zugriff auf Properties ist besser, das geht dann über SETTER/GETTER Methoden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Adi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.12.2012, 12:00     Titel:
  Antworten mit Zitat      
Danke schön für die Antwort! Kannst du das vielleicht ein wenig präzisieren, was du mit SETTER und GETTER Methoden meinst?
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 18.12.2012, 19:04     Titel:
  Antworten mit Zitat      
Hallo unter SETTER und GETTER Methode meine SET und GET für Properties
http://www.mathworks.de/de/help/mat.....rface-for-properties.html

Code:

classdef Person < hgsetget
   %UNTITLED Summary of this class goes here
   %   Detailed explanation goes here
   properties
      Name    = []
      Vorname = []
      Alter   = []
   end
   
   methods
      function obj = Person()
      end
     
      function nm = get.Name(obj)
         nm = obj.Name;
      end
     
      function set.Name(obj,nm)
         obj.Name = nm;
      end
     
      function nm = get.Vorname(obj)
         nm = obj.Vorname;
      end
           
     
      function set.Vorname(obj,nm)
         obj.Vorname = nm;
      end
     
     
      function  altr = get.Alter(obj)
         altr = obj.Alter;
      end
     
     
      function  set.Alter(obj,altr)
         obj.Alter= altr;
      end
   end
   
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Adi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2012, 11:26     Titel:
  Antworten mit Zitat      
Super, vielen Dank für die Mühe!

Ich habe das für meinen konkreten Fall jetzt folgendermaßen gelöst:

Da ich ja von einer .m Datei auf die Klasse zugreife, habe ich in dieser .m Datei geschrieben:
Code:
Distillation_H2O = Distillation_H2O.Optimizer(node_alpha, nodepath_opt, Aspen, AspenEngine)


In der Klasse habe ich den Aufruf zu:
Code:
obj = Goal_Optimizer(obj, node_alpha, nodepath_opt, Aspen, AspenEngine)



und nach Berechnung der gewünschten Parameter und Variablen diese per
Code:
obj.cl_alpha = alpha;


in das Property cl_alpha geschrieben.

Vielen Dank nochmal!
 
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.