Introduction to OOP
OOP in MATLAB
Lecture 5
Advanced MATLAB:
Object-Oriented Programming
Matthew J. Zahr
CME 292
Advanced MATLAB for Scientific Computing
Stanford University
7th October 2014
CME 292: Advanced MATLAB for SC Lecture 5
Introduction to OOP
OOP in MATLAB
1 Introduction to OOP
2 OOP in MATLAB
Class Definition and Organization
Classes
CME 292: Advanced MATLAB for SC Lecture 5
Introduction to OOP
OOP in MATLAB
What is OOP?
Procedural programming is a list of instructions for the computer to
perform to accomplish a given task
Code and data
No association between functions and the data on which they operate
Languages: FORTRAN, C
Object-oriented programming (OOP) is a programming paradigm
organized around objects equipped with data fields and associated
methods.
Data (state) and methods (behavior) associated via objects
Objects used to interact with each other
Languages: C++, Objective-C, Smalltalk, Java, C#, Perl, Python, Ruby,
PHP
CME 292: Advanced MATLAB for SC Lecture 5
Introduction to OOP
OOP in MATLAB
Why use OOP?
OOP enables a level of modularity and abstraction not generally available in
procedural languages
Increased code understanding
Code maintenance
Code expansion/evolution
CME 292: Advanced MATLAB for SC Lecture 5
Introduction to OOP
OOP in MATLAB
OOP Fundamentals
Class: template for creating objects, defining properties and methods,
as well as default values/behavior
Object: instance of a class that has a state (properties) and behavior
(methods)
Properties: data associated with an object
Methods: functions (behavior) defined in a class and associated with
an object
Attributes: modify behavior of classes and class components
Inheritance: object or class (subclass) derived from another object or
class (superclass)
Polymorphism: single interface to entities of different types
Other OOP features include events and listeners, which will not be covered
CME 292: Advanced MATLAB for SC Lecture 5
Introduction to OOP Class Definition and Organization
OOP in MATLAB Classes
Class Components in MATLAB
classdef block
Contains class definition, class attributes, and defines superclasses
properties block
Defines all properties to be associated with a class instance
Defines attributes of all properties and default values
methods block
Defines methods associated with the class and their attributes
First method must have the same name as the class, called the constructor
event block
enumeration block
http:
//www.mathworks.com/help/matlab/matlab_oop/class-components.html
CME 292: Advanced MATLAB for SC Lecture 5
Introduction to OOP Class Definition and Organization
OOP in MATLAB Classes
Class Block
Class definitions - blocks of code delineated with classdef .. end
keywords
Specify attributes and superclasses
Contains properties, methods, events subblocks
One class definition per file
Only comments and blanks can precede classdef
CME 292: Advanced MATLAB for SC Lecture 5
Introduction to OOP Class Definition and Organization
OOP in MATLAB Classes
Properties: Definition/Initialization
Properties are variables associated a particular class
Defined in special properties block
Can be multiple properties blocks, each with own attributes
CME 292: Advanced MATLAB for SC Lecture 5
Introduction to OOP Class Definition and Organization
OOP in MATLAB Classes
Properties: Initialization/Attributes
1 classdef class name
2 properties
3 PropertyName
4 end
5 properties (SetAccess=private,GetAccess=public)
6 PropertyName = 'some text';
7 PropertyName = sin(pi/12);
8 end
9 end
Property attributes: http://www.mathworks.com/help/matlab/
matlab_oop/property-attributes.html
CME 292: Advanced MATLAB for SC Lecture 5
Introduction to OOP Class Definition and Organization
OOP in MATLAB Classes
Methods
Methods are MATLAB functions associated with a particular class
Defined in special methods block
Can be multiple methods blocks
1 classdef ClassName
2 methods
3 function obj = ClassName(arg1,arg2,..)
4 end
5 function normal method(obj,arg1,..)
6 end
7 end
8 methods (Static = true)
9 function static method(arg1,..)
10 end
11 end
12 end
CME 292: Advanced MATLAB for SC Lecture 5
Introduction to OOP Class Definition and Organization
OOP in MATLAB Classes
Value vs. Handle Class
There are two fundamentally different types of classes in MATLAB
Value class
Handle class
An instance of a value class behaves similar to most MATLAB objects
A variable containing an instance of a value class owns the data associated
to it
Assigning object to new variable copies the variable
Conversely, an instance of a handle class behaves similar to MATLAB
graphics handles
A variable containing an instance of a handle class is a reference to the
associated data and methods
Assigning object to a new variables makes a new reference to same object
Events, listeners, dynamic properties
http://www.mathworks.com/help/matlab/handle-classes.html
CME 292: Advanced MATLAB for SC Lecture 5
Introduction to OOP Class Definition and Organization
OOP in MATLAB Classes
Examples
The remainder of this lecture will be done in the context of two examples
polynomial.m
A value class for handling polynomials of the form
p(x) = c0 + c1 x + c2 x2 + · · · + cm xm
in a convenient and simple way
Simple interface for performing operations of polynomials to create new
ones
dsg elem def.m
A handle class for graphically deforming the deformation of a body
Both examples are incomplete. We will (mostly) complete polynomial.m
throughout the remainder of the lecture. You will have the opportunity to
extend both in Homework 3.
CME 292: Advanced MATLAB for SC Lecture 5
Introduction to OOP Class Definition and Organization
OOP in MATLAB Classes
polynomial class
classdef polynomial
%POLYNOMIAL
properties (GetAccess=public,SetAccess=private)
coeffs=0;
order =0;
end
methods
function self = polynomial(arg)
function [tf] = iszero(poly)
function [y] = evaluate(poly,x)
function [apoly] = plus(poly1,poly2)
function [mpoly] = minus(poly1,poly2)
function [ipoly] = integrate(poly,const)
function [dpoly] = differentiate(poly)
function [iseq] = eq(poly1,poly2)
function [] = plot it(poly,x,pstr,ax)
function [] = disp(poly)
CME 292: Advanced MATLAB for SC Lecture 5