Dernière mise à jour : 19/03/2010
Introduction
Hormis la documentation officielle sur le site de Matlab, on ne trouve guère sur le net, de littérature sur la programmation objet sous Matlab. Depuis la version R2008, le modèle d’implémentation objet a changé et reprend les règles d’écritures que l’on retrouve habituellement dans d’autres langages objets comme Java ou VB.net
La documentation en ligne de Matlab sur le sujet est complète mais il est parfois difficile d’y retrouver rapidement et précisément des informations sur un point particulier.
Le but de cet article est de fournir au lecteur les principaux liens pour débuter rapidement la programmation objet sous Matlab.
Une implémentation d’une pile LIFO (Last In, First Out) en Matlab
Cet exemple est directement tiré de l’algorithme en pseudo-code d’un article sur l’implémentation d’une pile LIFO sur Wikipédia.
Le code de ces classes est disponible sous subversion :
node et stack
La classe stack est une classe par référence (handle classe) car elle hérite de la classe handle. Voir la documentation sur le sujet.
Le constructeur d’une classe
Extrait, en anglais, de la documentation Matlab : Class Constructor Methods
Determining Which Method Is Invoked
Invoking Superclass Methods in Subclass Methods
Rules for Constructors :
A constructor method is a special function that creates an instance of the class. Typically, constructor methods accept input arguments to assign the data stored in properties and always return an initialized object.
- The constructor has the same name as the class.
- he only output argument from a constructor is the object constructed.
- If the class being created is a subclass, the MATLAB class system calls the constructor of each superclass class to initialize the object. Implicit calls to the superclass constructor are made with no arguments. If superclass constructors require arguments, you must call them from the subclass constructor explicitly.
- A class does not need to define a constructor method unless it is a subclass of a superclass whose constructor requires arguments. In this case, you must explicitly call the superclass constructor with the required arguments. See Constructing Subclasses
- If a class does not define a constructor, the MATLAB class system supplies a constructor that takes no arguments and returns a scalar object whose properties are initialized to empty or the values specified as defaults in the property definitions. The constructor supplied by MATLAB also calls all superclass constructors with no arguments.
- If you create a class constructor, you should implement class constructors so that they can be called with no input arguments, in addition to whatever arguments are normally required See Supporting the No Input Argument Case and Basic Structure of Constructor Methods.
- Constructors must always return objects of their own class. A superclass constructor cannot return an object of a subclass.
- Calls to superclass constructors cannot be conditonal This means superclass construction calls cannot be placed in loops, conditions, switches, try/catch, or nested functions. See No Conditional Calls to Superclass Constructors for more information.
- You can restrict access to constructors using method attributes, as with any method.
L’écriture du constructeur d’une classe doit respecter dans l’ordre les 3 étapes suivantes :
- Pré-initialisation
- Initialisation de l’objet
- Post-initialisation
Voir les liens suivants dans la documentation Matlab :
Basic Structure of Constructor Methods
Arguments du constructeur et initialisation
Fonctionnalités propres à Matlab
Liens externes utiles