# Introduction

In this post, a demonstration on how to create objects using object oriented programming (OOP) in MATLAB is covered using easy to follow steps, and the basic MATLAB syntax. The demo is structured as follows:

- creating objects using the basic MATLAB syntax,
- hierarchy in objects (including
*Abstract*method functions), and - initialising and validating property values.

OOP is an approach to programming, where focus is put on design patterns and classification systems. It forms a consistent framework which is recognisable, and can be easily reused and extended by others. OOP is ideal to use when designing complex models, because of the flexibility and extensibility of the code, where a simple model can easily be extended to cover a more complex model.

# Data

In object oriented programming the classification of data and the actions to be performed on the data, is done by defining different objects. An object is defined as an instance of a class which has specific properties and functions associated with it.

# Defining classes

A class is used to define an object in terms of:

- the data it contains (properties),
- the operations performed on the data (methods/functions), and
- events and listeners (not covered in this demo).

Classes, properties, methods, and events and listeners all have optional attributes which control the behaviour of the specific methods.

Figure: *Objects in MATLAB*

Figure: *Class,* *Properties* and *Methods* optional attributes

*Classdef *in MATLAB

In MATLAB, a class is defined using the *classdef *method under which the name of the class, the properties of the object in the class, and the functions to be applied to the objects is defined.

Example: Defining a Rectangle Class

Consider a rectangle as an object as defined by the class *Rectangle. *To define this object, one must firstly determine the data contained by the object and secondly, the actions to be performed on the data of that object.

- The data values (properties) for a rectangle object:
- the height of the rectangle,
- the width of the rectangle, and
- the colour of the rectangle.

- We are interested in performing the following action (function) on the data contained by the rectangle object:
- calculating the area of the rectangle.

## Class properties

Objects which share common properties are defined under a specific class, the common properties and the attributes of those properties are defined under the class *properties* block of code.

### Example: Defining a Rectangle Class

The following properties are used to describe the rectangle namely width, height and colour.

Properties definition code in MATLAB: *Rectangle*

classdef Rectangle % Rectangle Data set class properties Width %width of rectangle Height %height of rectangle Colour %colour of rectangle end end

- The
*property*command can be used to see a list of the defined properties for a class, for example the properties associated with the class*Rectangle*can be obtained as follows:

*Command in MATLAB:*

properties(Rectangle)

*Output in MATLAB:*

Properties for class Rectangle: Colour Width Height

## Class methods

Functions to be applied to the data contained within the objects of a specific class are defined under the class *methods *block of code.

In the example of a rectangle, we might be interested in calculating the area of the rectangle. The function *getArea *is written in the methods block as follows:

Methods and functions code in MATLAB: *getArea*

methods function Area=getArea(thisRectangle) Area=thisRectangle.Width*thisRectangle.Height; end end

- Method functions can be called in the command window using the name of the method function to be called, for example the function
*getArea*for the rectangle object*thisRectangle*can be called as follows:

*Command in MATLAB:*

Area=getArea(thisRectangle);

- Alternatively, the area for the rectangle object
*thisRectangle*using the function*getArea*can be computed as follows:

*Command in MATLAB:*

thisRectangle.getArea;

- The
*methods*command can be used to see a list of the defined method functions for a class, for example the method functions associated with the class*Rectangle*can be obtained as follows:

*Command in MATLAB:*

methods(Rectangle)

*Output in MATLAB:*

Methods for class Rectangle: Rectangle getArea

The functions listed under methods include *Rectangle *and *getArea. Rectangle *is a default built-in constructor function used to create objects, in the Section: Creation of Objects, the customisation of the constructor function is discussed.

In conclusion, the MATLAB code for the class definition of *Rectangle* will look as follows:

Class definition code in MATLAB: *Rectangle*

# Creation of Objects

Objects can be created/instantiated by specifying an object to be a member of a specific class, or alternatively objects can be created using the constructor method function.

- Objects can be created in the command window/script file in MATLAB, and the dot syntax can be used to assign and access properties of the objects.

### Example: Rectangle Object

Creating an instance for a specific rectangle object, named Rectangle1:

*Command in MATLAB:*

Rectangle1=Rectangle

*Output in MATLAB:*

Rectangle1 = Rectangle with properties: Width: [] Height: [] Colour: []

An object called Rectangle1 will be created with properties *Width*, *Height* and *Colour *containing empty values.

The data values associated with the Rectangle1 object can be assigned and accessed using the dot syntax in MATLAB. The *Width *property of the Rectangle1 is assigned the value 5, the *Height *property of the Rectangle1 is assigned the value 7, and the *Colour *property is assigned to be green.

*Commands in MATLAB:*

Rectangle1.Width=5; Rectangle1.Height=7; Rectangle.Colour='green';

If we were to run the command to display Rectangle1 in MATLAB now, the following will be displayed:

*Command in MATLAB:*

Rectangle1

*Output in MATLAB:*

Rectangle1 = Rectangle with properties: Width: 5 Height: 7 Colour: 'green'

- Creating objects using the constructor method.

A constructor method function is defined under the class *methods *block of code, and it is used to create/instantiate new objects. In defining a constructor method function, the name of the constructor function must be assigned the same name as the corresponding class name.

### Example: Rectangle Constructor function

A constructor function for the class *Rectangle *is defined below, where the name of the constructor function is assigned to be *Rectangle*:

Constructor function code in MATLAB: *Rectangle*

function thisRectangle=Rectangle(colour,width,height) if nargin ==3 thisRectangle.Colour=colour; thisRectangle.Width=width; thisRectangle.Height=height; end end

For example, if we were to create Rectangle1 using the constructor function, we would assign the values for the *Width, Height* and *Colour *properties of the rectangle by specifying them as input arguments in the constructor function. In contrast to the steps taken to create the object *Rectangle1 *in 1) above, using the constructor function, the creation and assignment of property values of an object can be performed in one step.

*Command in MATLAB:*

Rectangle1=Rectangle('green',5,7)

*Output in MATLAB:*

Rectangle1 = Rectangle with properties: Width: 5 Height: 7 Colour: 'green'

In addition to creating objects and initialising object property values, the constructor method function can also be used for validating property values. This enables one to perform error checking when an object is created to ensure the object created fills the template (class) of the object correctly. Error checking can be performed to ensure names of objects are correctly spelled, and data values are stored as the correct class type.

This is an advantage over the procedural programming approach as using the procedural programming approach, misspelling of a variable will lead to the creation of a new variable and data values assigned incorrectly will not necessarily be noticed.

To summarise, we have created an object called *Rectangle1* which is an instance of a *Rectangle *object as defined by the class *Rectangle*:

Class definition code in MATLAB: *Rectangle*

This is the first of two blog on OOP in Matlab. In the next blog we consider how subclasses and super-classes can be defined as we take a closer look at the hierarchy in MATLAB. Continue reading...

References

*(1) MATLAB: Object Oriented Programming (R2016b)*. 9th ed. Natwick, MA: MathWorks, 2016.

What good education provided in MATLAB

Is really useful

Thanks