La Programación Orientada a Objetos (POO) en MATLAB es similar a muchos lenguajes de programación convencionales como Java, Python, etc. excepto por la sintaxis. La característica importante de los OOP es que le permite combinar datos y sus acciones asociadas (métodos/funciones) en objetos. En comparación con otros lenguajes, como C++, Java, etc., la programación orientada a objetos será mucho más rápida en MATLAB, lo que le permitirá resolver aplicaciones informáticas complejas. Hay ciertas características en OOP que se pueden usar para resolver problemas complejos, brindar seguridad a los datos, etc.
Las características de OOP admitidas por MATLAB son:
- Objeto
- Clase
- Polimorfismo
- Herencia
- Abstracción
- Encapsulación
Ahora profundicemos en algunos ejemplos para comprender mejor los conceptos anteriores.
Clase
Una clase es una plantilla/modelo definido por un usuario mediante el cual se crean objetos. Se compone de un conjunto de atributos y métodos que se utilizan para las entidades de objetos. Un Constructor es un método/función, definido con el mismo nombre de la clase, e inicializa las clases con ciertos valores pasados a través de la función de llamada (es decir, Constructor). Definir un constructor es opcional como en muchos otros lenguajes. La sintaxis de MATLAB es bastante peculiar en comparación con otros lenguajes de programación convencionales.
Sintaxis:
classdef (atributos) className
. . . . .
final
Parámetros:
classdef -> palabra clave utilizada para definir clases
atributos -> Argumentos/Valores usados para modificar el comportamiento de la clase
Ejemplo:
Matlab
% MATLAB program to illustrate Classes classdef adder % Attributes of a class are defined % in properties block properties value end % Function/Methods of class are defined % in methods block methods function res = addVal(obj) res = obj.value+obj.value; end end end
Guarde el código anterior como archivo adder.m y acceda a él con comandos desde el símbolo del sistema/otro archivo matlab. Accedamos al código anterior dando algunos comandos de otro archivo matlab y observemos el resultado para entenderlo mejor.
Matlab
% MATLAB program to access the % user defined classes % Initiating the Class temp=testing(); % Assign values to the class attributes temp.value=5; % Calling methods inside the class addVal(temp)
Guarde el código anterior como testing.m. Después de ejecutar el archivo anterior, obtendrá el siguiente resultado.
Objeto
Un Objeto es una entidad lógica que interactúa con la clase definida por el usuario invocando métodos/funciones. Podemos crear tantos objetos como quieras. Cada objeto tendrá dos características, es decir, estado y comportamiento. Estas características varían con cada objeto según la situación. Por ejemplo, perro es un objeto/identidad. Es lealtad , sueño , andar , etc son comportamientos y el tamaño , color , raza , etc viene bajo el estado.
Herencia
El título en sí sugiere que la herencia no es más que heredar/adquirir todas las propiedades, como atributos, métodos, etc., de la clase principal/base. La clase que se deriva de una clase base se llama Subclase / Clase secundaria y hereda todas las propiedades de su clase principal. Superclase es la clase que está siendo heredada por la subclase. La importancia de la herencia es la reutilización del código, como usar los atributos, métodos, etc. de la clase principal. Profundicemos en un ejemplo para comprender mejor el concepto de herencia.
Sintaxis:
classdef subClassName < Superclase
. . . . . . .
final
Súper clase:
Matlab
% MATLAB program to illustrate Super class % and inheritance. classdef Animal methods function eat(self) disp('I am Eating'); end function sleep(self) disp('I am Sleeping'); end end end
Guarde el código anterior como Animal.m y esta es nuestra superclase. Veamos ahora la subclase.
Matlab
% MATLAB program to illustrate % sub class and inheritance classdef Lion < Animal methods function roar(self) disp('Roaring'); end end end
Guarde el código anterior como Lion.m y esta es nuestra subclase. Ahora accedamos a la clase principal usando el objeto de subclase y observemos el resultado.
Producción:
Polimorfismo
El mecanismo de definir una función con el nombre de la función ya existente se conoce como polimorfismo. Simplemente lo llamamos anulación. MATLAB no admite la sobrecarga de una función. Las funciones polimórficas realizan diferentes operaciones con el mismo nombre en función de los argumentos pasados y la lógica definida por el usuario.
Superclase:
Matlab
% An example of polymorphism in MATLAB classdef superClass methods function testing(self) disp('This is superClass'); end end end
Guarde el código anterior como superClass.m y veamos también el código de clase derivado.
Clase derivada:
Matlab
% An example of polymorphism in MATLAB classdef derivedClass < superClass methods % Overriding the superClass method function testing(self) disp('This is derivedClass'); end end end
Guarde el código anterior como clasederivada.m y observemos el resultado.
Producción:
Abstracción
Una clase abstracta representa la funcionalidad realizada por un grupo de clases. Oculta datos importantes o innecesarios y muestra solo los componentes esenciales. Por ejemplo, se puede ver un móvil pero no sus componentes internos. Todos los métodos, atributos que están siendo utilizados por las subclases se declaran en la clase abstracta. Una subclase concreta se deriva de una clase abstracta para usar sus propiedades. Un resumen no puede ser instanciado. Solo se puede heredar. Todos los métodos declarados en la clase abstracta deben redefinirse/anularse en la subclase.
Sintaxis:
classdef (Abstracto) className:
. . . . .
final
Ejemplo:
Matlab
% An example of abstract class in MATLAB classdef (Abstract) superClass % Declaring abstract properties properties (Abstract) value1 end % Declaring abstract methods methods (Abstract) checking(obj) end end
Guarde el código anterior como superClass.m y veamos el código de la clase base.
Matlab
% An example of abstract base class in MATLAB classdef derivedClass < superClass % Redefining abstract properties properties value1 = 0; end % Redefining abstract methods methods function checking(self) disp('This is abstract method of superClass and redefined in the derivedClass'); fprintf('The initial of the property "value1" is %d',self.value1); end end end
Guarde el código anterior como derivadaClass.m y ejecute el código y observe el resultado dando un par de comandos.
Producción:
Encapsulación
Requisito previo: documentación de MATLAB de Value y Handle Classes
La encapsulación es un mecanismo de encerrar los datos y el código juntos en una sola clase/unidad. Proporciona seguridad a los datos al prohibir el límite a otras clases. Uno puede acceder o modificar los datos de una clase solo usando métodos getters y setters . Necesitamos heredar la clase de manejo para implementar la encapsulación en MATLAB, ya que no devuelve objetos duplicados y modificados y también maneja los errores.
MATLAB –
Guarde el código anterior como superClass.m y observemos el resultado dando un par de comandos.
Producción:
Nota:
- En MATLAB, las variables de clase se denominan propiedades.
- En MATLAB, las clases y los métodos se definen en archivos separados.
- Tenemos que guardar los archivos de clase y los archivos de método con sus respectivos nombres.
Publicación traducida automáticamente
Artículo escrito por pavan_rachapudi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA