goMatlab - Mein MATLAB Forum

Mein MATLAB Forum

 
Login  | Registrieren
Bücher:

MATLAB und Simulink: Grundlegende Einführung f. Studenten

Fachkräfte:
Softwareentwickler MATLAB/Simulink (w/m)
Erarbeitung von Lösungen im Bereich der Schnittstelle zum Simulink-Modell und der Benutzeroberfläche von TargetLink
dSPACE GmbH - Paderborn

Testingenieur (w/m) Testframework für Simulink-basierte Echtzeitanwendungen
Pflege des MATLAB/Simulink-Testframeworks, Spezifizieren von Testkriterien, Testfällen und Testszenarien
dSPACE GmbH - Paderborn

Testingenieur (w/m) Konfigurationswerkzeuge für Echtzeitsysteme
Einbinden von Simulink®-Simulationsmodellen, Verteilung der Simulationsmodelle auf Multicore- und Multiprozessorsysteme
dSPACE GmbH - Paderborn

Senior Systemingenieur/in
Entwicklung von Funktionen im Bereich Antrieb Automotive
ESG Elektroniksystem- und Logistik-GmbH - München

Entwicklungsingenieur/-in Systemengineering - Software - Landmaschinengetriebe
Anforderungsmanagement, Softwareentwicklung, Systemanalysen
ZF Friedrichshafen AG - Friedrichshafen

weitere Angebote

Partner:




Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Funktion der Superclass aus Unterklasse aufrufen

 

Daedalus
Forum-Anfänger
Forum-Anfänger

Beiträge: 13
Anmeldedatum: 09.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.08.2010, 20:31     Titel: Funktion der Superclass aus Unterklasse aufrufen
  Antworten mit Zitat      
Hi,

ich habe ein Problem mit Klassen. Bin blutiger Anfänger auf dem Gebiet. Ich will aus der Unterklasse eine Funktion der Hauptklasse aufrufen.
Es gibt die Klasse c_frequencyPoints mit Messdaten an Frequenzpunkten, und die Klasse c_measurementdata, welche allgemeine Informationen der Messungen enthält. In dieser Klasse ist auch eine Funktion setPlotMenu, welche mir von plots die menus erzeugt. Ich habe die mit in die Superclass mit rein, damit alle späteren Plots gleich aussehen, ohne das ich viel zaubern muss. Nun würde ich diese Funktion gern direkt aufrufen, so wie es z.B. mit measValues.getMeasurementInfo auch geht, also:

Code:

measValues.setPlotMenu(target)
 


Aber das geht nicht. Statisch ist es kein Problem. Aber ich würde es gern auch "anders" können. Danke für die Hilfe

Hier die Klassen:

Code:
classdef c_frequencyPoints < c_measurementdata
    properties
        valuesVector;
      freqVector;
    end
    methods

        function obj = c_frequencyPoints(freqVector, valuesVector, date, description, device, die)
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        %%% constructor
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
            obj = obj@c_measurementdata(date, description, device, die);
         obj.valuesVector   = valuesVector;
            obj.freqVector      = freqVector;
      end
     
      function plotFrequencyValues(self, target)
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        %%% plot data
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
         axes(target);
         plot(self.freqVector, self.valuesVector);      
         c_measurementdata.setPlotMenu(target) % static
      end
    end
end
 


Klasse 2:


Code:

classdef c_measurementdata %< handle
   properties
      date;         % when measured
      description;   % more info about the data
      device;         % device name
      die;         % name of the measured die
     
   end
   methods (Static = false)
      function obj = c_measurementdata(date, description, device, die)
         switch nargin
            case 0
               obj.date      = '';
               obj.description = '';
               obj.device      = '';
            case 4
               obj.date      = date;
               obj.description = description;
               obj.device      = device;
               obj.die         = die;
         end
      end
      function returnString = getMeasurementInfo(self)
            returnString   = char(   ['Measurement date :        ', self.date,],...
                              ['Measurement device :      ', self.device,],...
                              ['Die Name:                 ', self.die,],...
                              ['Measurement description : ', self.description,]);
      end
   end
   methods (Static = true)
      function setPlotMenu(target)
         axes(target);
         % Define a context menu; it is not attached to anything
         hcmenu = uicontextmenu;        
         h1 = uimenu(hcmenu,'label','LineWidth');            % Make a menu for the lineWidth
         h2 = uimenu(hcmenu,'label','LineStyle');            % Make a menu for the lineStyle
         h3 = uimenu(hcmenu,'label','Extras');               % Make a menu for the extras
         
         
         % Define callbacks for context menu items that change linestyle
         width1   = ['set(gco, ''LineWidth'', 1)'];
         width2   = ['set(gco, ''LineWidth'', 2)'];
         width3   = ['set(gco, ''LineWidth'', 3)'];
         width4   = ['set(gco, ''LineWidth'', 4)'];
         lin1   = ['set(gco, ''LineStyle'', ''--'')'];
         lin2   = ['set(gco, ''LineStyle'', '':'')'];
         lin3   = ['set(gco, ''LineStyle'', ''-'')'];
         extra1   = ['delete(gco)'];
         % Define the context menu items and install their callbacks
         uimenu(h1, 'Label', '1', 'Callback', width1);
         uimenu(h1, 'Label', '2', 'Callback', width2);
         uimenu(h1, 'Label', '3', 'Callback', width3);
         uimenu(h1, 'Label', '4', 'Callback', width4);
         uimenu(h2, 'Label', 'dashed', 'Callback', lin1);
         uimenu(h2, 'Label', 'dotted', 'Callback', lin2);
         uimenu(h2, 'Label', 'solid',  'Callback', lin3);
         uimenu(h3, 'Label', 'DELETE',  'Callback', extra1);
         % Locate line objects
         hlines = findall(target, 'Type','line');
         % Attach the context menu to each line
         for line = 1:length(hlines)
            set(hlines(line),'uicontextmenu',hcmenu)
         end
      end  
   end
end
 


Und hier das Hauptprogramm:

Code:

% TESTER der Objectklasse

clc; clear all; clear classes; close all;
clear c_frequencyPoints
clear c_measurementdata

% load('20100729104019_none.mat')

data.frequency      = 100 : 100 : 10000;
data.measValOsci   = rand(1, length(data.frequency)) ;
data.description   = 'TEST';
measValues = c_frequencyPoints(data.frequency, data.measValOsci, '20100729', data.description, 'Tektronix 2012B', 'none');

measValues.getMeasurementInfo

figure;
h = axes; grid on; hold all;
measValues.plotFrequencyValues(h)
%%%%%%%%%%%%%%%%%%%%%%
%%% GEHT NICHT, WARUM?
%%%%%%%%%%%%%%%%%%%%%%
measValues.setPlotMenu(target)  
 
Private Nachricht senden Benutzer-Profile anzeigen


Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2012 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.