%
%   Klasse Data: 4.1.1 
%
classdef Data < handle 
    
  properties
    file = [];   % Excel-Datei, optional
    x = [];
    y = [];
  end  % properties 
    
  methods
    % Konstruktor: verzweigt auf 2 Konstruktoren  
    function obj = Data( varargin )
      % Test der Zahl der übergebenen Werte
      if( nargin == 0 )
        obj = Data0( obj );
      elseif( nargin == 1 )
        obj = Data1( obj, varargin{1} );   % Werte im Cell-Array
      else
        errordlg( 'Zu viele Argumente für Klasse Data!', ... 
                  'Data-Konstruktor' );  
        obj = Data.empty;
		error( 'Data-Konstruktor: Zu viele Argumente!' );
      end
    end
    
  end  % methods
  
  
  % Private Methoden  
  methods (Access = private)  
    
    % Konstruktor 0: ohne Argumente
    function obj = Data0( obj )
      obj.file = [];
    end
    
    % Konstruktor 1: mit filename oder '' bzw. []
    function obj = Data1( obj, data )
      if( ~ischar( data ) )
        obj.file = [];   % leere Liste 
      else
        % Leerstring
        if( ~isempty(data) )
          obj.file = data;
        else
          getFilename( obj );   % Dateinamen holen         
        end
      end   
    end
 
    function getFilename( obj )
      [f,p] = uigetfile( '*.xlsx', 'Daten-Datei auswählen' );
      if( f == 0 )
        % msgbox( 'Leere Liste erzeugt!', 'Konstruktor' );
        obj.file = [];
      else
        obj.file = [p,f];
      end       
     end
    
  end % private methods 
  
end
