Object Oriented Programming in MATLAB - sjhstone/MATLAB_Develop_Tips GitHub Wiki

Object-Oriented Programming in MATLAB

MATLAB中的面向对象编程

Features Supported in MATLAB

Source: Object-Oriented Programming in MATLAB | Master Class with Loren Shure

  • Class Definitions
  • Methods
  • Properties
  • Events and listeners
  • Overloaded operators
  • Protected access
  • Handle (reference) classes
  • Destructors
  • Classes defined in single files
  • Static methods
  • Property validation
  • Namespaces
  • Object arrays
  • Custom indexing

Mixin / Mix-In:混入/多态继承

Based on Mix It Up and Mix It In

你希望将天体作为父类(superclass,又称基类,base class),希望通过面向对象的子类(subclass)定义来表示各种天体实例(instance),如月球等卫星、土星等行星、太阳等恒星,以及彗星等。

若不使用Mixin风格,你可能需要构造一个非常深的继承链:

土星 < 气态有环行星 < 有环行星 < 行星 < 球形天体 < 天体

而若使用Mixin风格,你会首先构造一些抽象类(abstract class),所谓抽象类一般是为了其子类服务的,抽象类中可以定义一系列子类通用的方法接口(method)和属性(property/attribute/类域field),而不会有其单独的类实例(class instance)。

  • 抽象 有环(属性:环径
  • 抽象 气态(属性:气体种类[]
  • 抽象 天体(属性:质量
  • 抽象 球形(属性:直径
  • 抽象 行星 < 天体(属性:卫星[]

定义了上述抽象类之后,土星的类继承定义可以变为

土星 < 有环 & 气态 & 行星,注意行星 < 天体

如果将继承关系可视化为树结构,深继承链只有1个根节点,即天体,而使用Mixin风格后,会有3个根节点,即天体有环气态