Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Create a Simple Class

Design Class

The basic purpose of a class is to define an object that encapsulates data and the operations performed on that data. For example, BasicClass defines a property and two methods that operate on the data in that property:

  • Value — Property that contains the data stored in an object of the class

  • roundOff — Method that rounds the value of the property to two decimal places

  • multiplyBy — Method that multiplies the value of the property by the specified number

Here is the definition of BasicClass:

classdef BasicClass
   properties
      Value
   end
   methods
      function r = roundOff(obj)
         r = round([obj.Value],2);
      end
      function r = multiplyBy(obj,n)
         r = [obj.Value] * n;
      end
   end
end

For a summary of class syntax, see classdef.

To use the class:

  • Save the class definition in a .m file with the same name as the class.

  • Create an object of the class.

  • Access the properties to assign data.

  • Call methods to perform operation on the data.

Create Object

Create an object of the class using the class name:

a = BasicClass
a = 

  BasicClass with properties:

    Value: []

Initially, the property value is empty.

Access Properties

Assign a value to the Value property using the object variable and a dot before the property name:

a.Value = pi/3;

To access a property value, use dot notation without the assignment:

a.Value
ans =

    1.0472

For information on class properties, see Properties.

Call Methods

Call the roundOff method on object a:

roundOff(a)
ans =

    1.0500

Pass the object as the first argument to a method that takes multiple arguments:

multiplyBy(a,3)
ans =

    3.1416

You can also call a method using dot notation:

a.multiplyBy(3)

It is not necessary to pass the object explicitly as an argument when using dot notation. The notation uses the object to the left of the method name.

For information on class methods, see Methods and Functions

Add Constructor

Classes can define a special method to create objects, called a constructor. Constructor methods enable you to pass arguments to the constructor, and to validate and assign property values. Here is a constructor for the BasicClass class:

methods
   function obj = BasicClass(val)
      if nargin > 0
         if isnumeric(val)
            obj.Value = val;
         else
            error('Value must be numeric')
         end
      end
   end
end

By adding this constructor to the class definition, you can create an object in one step:

a = BasicClass(pi/3)
a = 

  BasicClass with properties:

    Value: 1.0472

This constructor also performs type checking on the input argument. For example:

a = BasicClass('A character array')
Error using BasicClass (line 11)
Value must be numeric

For information on constructors, see Class Constructor Methods

Vectorize Methods

MATLAB® enables you to vectorize operations. For example, you can add a number to a vector:

[1 2 3] + 2
ans =

     3     4     5

MATLAB adds the number 2 to each of the elements in the array [1 2 3]. To vectorize the arithmetic operator methods, enclose the obj.Value property reference in brackets, where obj is an object array.

[obj.Value] + 2

This syntax enables the method to work with arrays of object. For example, given objects a1, a2, and a3:

[a1.Value,a2.Value,a3.Value] + 2

By using vector notation, a can be an array:

a(1) = BasicClass(2.7984);
a(2) = BasicClass(sin(pi/3));
a(3) = BasicClass(7);
roundOff(a)
ans =

    2.8000    0.8700    7.0000

Overload Functions

Classes can implement existing functionality, such as addition, by defining a method with the same name as the existing MATLAB function. For example, suppose that you want to add two BasicClass objects. It makes sense to add the values of the ObjectValue properties of each object.

Here is an overload of the MATLAB plus function. It defines addition for this class as adding the property values:

method
   function r = plus(o1,o2)
      r = [o1.Value] + [o2.Value];
   end
end

By implementing a method called plus, you can use the “+” operator with objects of BasicClass.

a = BasicClass(pi/3);
b = BasicClass(pi/4);
a + b
ans =

    1.8326

Related Information

For information on overloading functions, see Overload Functions in Class Definitions.

For information on overloading operators, see Operator Overloading.

BasicClass Code Listing

Here is the BasicClass definition after adding the features discussed in this topic:

classdef BasicClass
   properties
      Value
   end
   methods
      function obj = BasicClass(val)
         if nargin == 1
            if isnumeric(val)
               obj.Value = val;
            else
               error('Value must be numeric')
            end
         end
      end
      function r = roundOff(obj)
         r = round([obj.Value],2);
      end
      function r = multiplyBy(obj,n)
         r = [obj.Value] * n;
      end
      function r = plus(o1,o2)
         r = o1.Value + o2.Value;
      end
   end
end

Related Topics

Was this topic helpful?