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.

Which Kind of Class to Use

Examples of Value and Handle Classes

Handle and value classes are useful in different situations. For example, value classes enable you to create new array classes that have the same behavior as MATLAB® numeric classes.

Class Design for Polynomials and Class to Represent Structured Data provides examples of value classes.

Handle classes enable you to create objects that more than one function or object can share. Handle objects allow more complex interactions among objects because they allow objects to reference each other.

Class to Implement Linked Lists and Developing Classes — Typical Workflow provides examples of a handle class.

When to Use Handle Classes

Use a handle class when:

  • No two instances of a class can have the same state, making it impossible to have exact copies. For example:

    • A copy of a graphics object (such as a line) has a different position in its parents list of children than the object from which it was copied. Therefore, the two objects are not identical.

    • Nodes in lists or trees having specific connectivity to other nodes—no 2 nodes can have the same connectivity.

  • The class represents physical and unique objects like serial ports and printers.

  • The class represents visible objects like graphics components.

  • The class defines events and notifies listeners when an event occurs (notify is a handle class method).

  • The class creates listeners by calling the handle class addlistener method.

  • The class subclasses the dynamicprops class (a subclass of handle) so that instances can define dynamic properties.

  • The class subclasses the matlab.mixin.SetGet class (a subclass of handle) so that it can implement a graphics object style set/get interface to access property values.

  • You want to create a singleton class or a class in which you track the number of instances from within the constructor.

  • Instances of a class cannot share state, such as nodes in a linked list.

When to Use Value Classes

Value class objects behave like normal MATLAB variables. A typical use of value classes is to define data structures. For example, suppose that you want to define a class to represent polynomials. This class can define a property to contain a list of coefficients for the polynomial. It can implement methods that enable you to perform various operations on the polynomial object. For example, implement addition and multiplication without converting the object to another class.

A value class is suitable because you can copy a polynomial object and have two objects that are identical representations of the same polynomial. For an example of value classes, see Class Design for Polynomials and Subclasses of MATLAB Built-In Types.

Related Topics

Was this topic helpful?