Está en la página 1de 21

1

4 Programacin orientada a objetos


4.1 Introduccin a OOP.
Crear aplicaciones en software involucra saber cmo representar los datos y cmo
implementar las operaciones realizadas sobre aquellos datos. El procedimiento de los
programas es pasar los datos a funciones, los cuales realizan las operaciones necesarias
sobre los datos. El software orientado a objetos encapsula los datos y operaciones en
objetos que interactan con otros objetos va una interface.
Matlab nos permite crear programas utilizando ambas tcnicas por procedimiento y
orientada a objetos y usar objetos y funciones ordinarias en tus programas.
Diseo de programa por procedimiento: En este caso tu diseo se enfoca sobre los
pasos que debes de ejecutar para lograr el estado deseado. Tpicamente los datos son
representados como variables individuales o campos de una estructura e implementa
operaciones como funciones que toman las variables como argumentos. Los programas
usualmente llaman a una secuencia de funciones, cada una por el cual los datos pasan y
entonces da como resultado el dato modificado. Cada funcin realiza una operacin o tal
vez muchas operaciones sobre los datos.
Diseo de programa orientado a objetos: El diseo de programa orientado a objetos
involucra lo siguiente:

Identificar los componentes del sistema o aplicaciones que quieres construir.


Analizar e identificar patrones para determinar que componentes son usados
repetidamente o comparten caractersticas.
Clasificar las componentes basado sobre similaridades y diferencias.

Despus de realizar este anlisis, se definen las clases que describen a los objetos que
usas en la aplicacin.
Clases y objetos: Una clase describe un conjunto de objetos con caractersticas
comunes. Los objetos son las instancias especficas de una clase o casos particulares de
una clase. Los valores contenidos en las propiedades de los objetos son lo que hacen que
un objeto sea diferente de otras objetos de la misma clase (Un objeto de clase double
podra tener un valor de 5). Las funciones definidas o asociadas a una clase (llamado
mtodos) son los que implementan objetos cuyos comportamientos son comunes a todos
los objetos de una clase (es posible adicionar 2
valores).

doubles

independientemente de sus

4.2 Clases en Matlab.


En Matlab, cada valor es asignado a una clase. Por ejemplo, la creacin de una variable
con una instruccin de asignacin construye una variable de la clase correspondiente:

Comandos bsicos como

whos

muestra la clase de cada valor en el espacio de

trabajo. Esta informacin ayuda a los usuarios de Matlab a reconocer que valores son
caracteres y lo muestran como texto, mientras que otros valores podran ser

double , single , u otros tipos de nmeros. Algunas variables pueden contener diferentes
clases de valores como

cells .

4.3 Clases definidas por usuario.


Es posible crear tus propias clases en Matlab. Por ejemplo, podras definir una clase para
representar polinomios. Esta clase podra definir las operaciones tpicas asociadas a las
clases de Matlab como suma, resta, indexado, mostrar en la ventana de comandos, etc.
Sin embargo estas operaciones podran necesitar realizar el equivalente a una suma,
resta, etc. de polinomios. Por ejemplo cuando sumas dos objetos polinomios:

p1+ p 2
La operacin de suma debera saber cmo sumar objetos polinomios porque la clase
polinomio define esta operacin. Cuando defines una clase, sobrecargas funciones
especiales de Matlab ( plus. m

para la operacin de la suma) que son llamados por el

tiempo de ejecucin de Matlab cuando estas operaciones son aplicadas a un objeto de tu


clase.
4.4 Clases en Matlab Trminos clave.
Las clases en Matlab usan las siguientes palabras para describir las diferentes partes de
una clase y conceptos relacionados.

Definicin de clase Descripcin de lo que es comn para todas las instancias de


una clase (objetos).
Propiedades Almacenamiento de datos para las instancias de una clase.

Mtodos Funciones especiales que implementan operaciones que son


usualmente realizadas solo sobre las instancias de una clase.
Eventos Mensajes que son definidos por las clases y que son difundidos por las
instancias de una clase cuando se produce alguna accin especfica.
Atributos Valores que modifican el comportamiento de las propiedades, mtodos,
eventos y clases.
Oyentes Objetos que responden a un evento especifico mediante la ejecucin de
una funcin callback cuando se emite la notificacin de eventos.
Objetos Instancias de una clase, las cuales contienen valores de datos actuales
almacenados en las propiedades de los objetos.
Sub-clases Clases que son obtenidos desde otras clases y que heredan los
mtodos, propiedades y eventos de aquellas clases (las sub-clases facilitan la
reutilizacin de cdigo definida en la super-clase de los cuales ellas son
derivadas).
Super-clases Clases que son usadas como base para la creacin de ms clases
definidas especficamente (por ejemplo, sub-clases).
Paquetes Carpetas que definen un espacio para la clase y nombres de
funciones.

4.5 Handle vs clases valor.


Hay dos tipos de clase en Matlab la clase Handle y la clase valor.

La clase Handle, crea objetos que hacen referencia a los datos que contiene.
Cuando se copia un objeto handle, Matlab copia el handle pero no los datos
almacenados en la propiedades del objeto. La copia se refiere a los mismos datos
que el handle original. Si cambia un valor de la propiedad en el objeto original, el
objeto copiado refleja el mismo cambio.
La clase valor, realizan copias de los datos cada vez que el objeto se copia o se
pasa a una funcin. Los tipos numricos de Matlab son clase valor.

El uso de los tipos de clase depende del comportamiento deseado de las instancias de
una clase y que caractersticas se quiere usar. Use una clase handle cuando quieres crear
una referencia al dato contenido en un objeto de la clase, y no querer copias del objeto
para hacer copias de los datos del objeto. Por ejemplo, usar una clase handle para
implementar un objeto que contiene informacin para una agenda telefnica. Programas
de mltiples aplicaciones pueden acceder a una agenda digital en particular, pero no
puede haber solo un conjunto de datos fundamentales. El comportamiento de referencia
de handles permite a estas clases soportar caractersticas como eventos, oyentes, y
propiedades dinmicas. Use la clase valor para representar entidades que no necesitan
ser nicos como los valores numricos. Por ejemplo, use una clase valor, para
implementar un tipo de dato polinomial. Es posible copiar un objeto polinomial y entonces
modificar sus coeficientes hacer un polinomio diferente sin afectar al polinomio original.
4.6 Carpetas de una clase.

4
Hay dos caminos bsicos para especificar las clases con respecto a carpetas:

Creando un nico archivo de definicin de clase auto contenida en una carpeta


sobre el camino de Matlab. El nombre del archivo debe coincidir con el nombre de
la clase y debe tener una extensin

. m . La clase es definida enteramente en

este archivo.
Distribuyendo una definicin de clase a mltiples archivos en una carpeta @
dentro del camino. Solo una clase puede ser definida en una carpeta @.
Adems, el paquete de carpetas (el cual siempre comienza con un carcter +) puede
contener mltiples definiciones de clase, paquete de funciones de campos de aplicacin, y
otros paquetes.
Un paquete de carpeta define un nuevo espacio en el cual puedas rehusar los nombres
de la clase.
Use el nombre paquete para referirse a clases y funciones definidas en el paquete
carpetas (por ejemplo, packagefld1, ClassNameA(), packagefld2),
4.7 Bloques de construccin de clase.
Son las componentes bsicas en la definicin de la clase que describen de forma
completa a la clase y especifican aspectos de su definicin.
4.7.1 El bloque
El bloque

classdef

classdef

con la palabra clave

contiene la definicin de clase dentro de un archivo que empieza

classdef

y termina con la palabra clave

end .

classdef className

end
En la lnea

classdef

es donde se especifican:

Atributos de clase:
Los atributos de clase modifican de alguna manera el comportamiento de la clase.
Asignar valores a los atributos de clase solo cuando quieras cambiar sus valores
por defecto. No hay cambios en los valores de los atributos por defecto.

classdef className

end
Uno o ms valores de atributos asignados:

classdef ( attribute 1=value , ) className

end

Superclases
Para definir una clase en trminos de una o ms clases es importante especificar
la superclases sobre la lnea

classdef :

classdef classname < supeerclass 1namesuperclass 2name>

end
Una clase handle hereda de la clase handle (por ejemplo, la clase handle como
superclase)

name
classdef handle handle

end
El bloque

classdef

contiene las propiedades, mtodos y sub-bloques de

eventos.
4.7.2 El bloque propiedades.
El bloque propiedades (uno para cada conjunto nico de especificaciones de atributos)
contiene definiciones de propiedades, incluyendo valores iniciales opcional. El bloque
propiedades empieza con la palabra clave

end .

classdef classname
properties

properties

y termina con la palabra clave

end

end

Es posible controlar aspectos de la definicin de propiedades de la siguiente manera:

Especificando un valor por defecto para cada propiedad individualmente.


Asignando valores de atributos en funcin de cada bloque base.
Definiendo mtodos que se ejecuten cuando la propiedad es establecida o
consultada.

Hay dos aproximaciones bsicas para inicializar los valores de las propiedades:

En la definicin de propiedad Matlab evala la expresin solamente una vez y


asigna el mismo valor a la propiedad de cada instancia.

classdef classname
properties
PropertyName No default Value assigned

PropertyName= some text ;


PropertyName=sin( pi /12) ; Expression returns default value

end
end
La evaluacin de los valores por defecto de propiedad ocurre solamente cuando el valor
es primero necesario, y solamente una vez cuando Matlab primero inicializa la clase.
Matlab no reevala la expresin cada vez que se crea una instancia de clase.
En el constructor de la clase Matlab evala la expresin de asignacin para
cada instancia, el cual asegura que cada instancia tiene un nico valor.
Para asignar valores a una propiedad dentro del constructor de la clase, se hace
referencia al objeto que el constructor retorna (la variable de salida

classdef Myclass
properties

PropertyOne

obj ):

end

methods
function obj=Myclass (intval)

obj . PropertyOne=intval ;
end

end
end
Todas las propiedades tienen atributos que modifican ciertos aspectos del
comportamiento de las propiedades. Los atributos especificados se aplican a todas las
propiedades en un bloque de propiedades en particular. Por ejemplo:

classdef classname
properties
PropertyName No default value assigned

PropertyName=sin( pi/12); Expresion retorna el valor por defecto


end

properties(setAccess= private ,GetAccess= private)


Stress

Strain
end

end
En este caso, solo los mtodos en la misma definicin de clase puede modificar y
consultar las propiedades

Stress

Strain . Esta restriccin existe porque la clase

define estas propiedades en un bloque de propiedades con los atributos

GetAccess configurado como privado.

SetAccess

8
Es posible definir mtodos que Matlab llama cada vez que se establece o se consulta un

set access

valor de la propiedad. Defina la propiedad

o los mtodos

get access

en

los bloques de mtodos que no especifican atributos y tienen la siguiente sintaxis.

methods

function value=get . PropertyName (object )

end
function obj=set . PropertyName(obj, value)

end

end

Matlab no llama al mtodo de la propiedad

set access

cuando se asigna el valor por

defecto especificado en el bloque de definicin de la propiedad. Si una clase handle


define la propiedad, el mtodo

set access

no necesita retornar el objeto modificado.

4.7.3 El bloque de mtodos.


El bloque de mtodos (uno para cada conjunto nico de especificaciones de atributos)
contiene las definiciones de funcin para los mtodos de clase. El bloque de mtodos
empieza con la palabra clave

classdef className

methods

end

end

methods

y termina con la palabra clave

end .

9
Los mtodos son funciones que implementan las operaciones realizadas sobre los objetos
de una clase. Los mtodos, junto con otros miembros de la clase soportan el concepto de
encapsulacin las instancias de clase contienen datos en propiedades y mtodos de
clase operan sobre aquellos datos. Esto permite el funcionamiento interno de las clases
que se ocultan del cdigo fuera de la clase, permitiendo de esta manera la
implementacin de la clase cambiar sin afectar el cdigo que es externo a la clase. Los
Mtodos tienen acceso a miembros privados de sus clases incluyendo otros mtodos y
propiedades.
Esto nos permite esconder data y crear interfaces especiales que deben ser usados para
acceder a los datos almacenados en objetos.
Hay tipos especializados de mtodos que realizan ciertas funciones o se comporta de una
manera particular:

Mtodos ordinarios: son funciones que actan con uno o ms objetos y retornan
algn nuevo objeto o algn valor calculado. Estos mtodos son como las
funciones ordinarias de Matlab que no se puede modificar los argumentos de
entrada. Los mtodos ordinarios permite clases para implementar operaciones
aritmticas y funciones computacionales. Estos mtodos requieren de un objeto
de la clase sobre el cual operar.
Mtodos constructores son mtodos especializados que crean objetos de la clase.
Un mtodo constructor debe tener el mismo nombre como la clase y tpicamente
inicializa los valores de propiedad con datos obtenidos desde los argumentos de
entrada. La clase mtodo constructor debe retornar el objeto que crea.
Mtodos destructor son llamados automticamente cuando el objeto es destruido,
por ejemplo, si llamas

delete

(objeto) o si no hay referencias al objeto.

Mtodos de acceso a propiedad permiten una clase para definir cdigo para
ejecutar si un valor de propiedad es consultado o establecido.
Mtodos estticos son funciones que son asociados con una clase, pero no
necesariamente operan sobre objetos de clase. Estos mtodos no requieren una
instancia de la clase para ser referenciado durante la invocacin del mtodo, pero
tpicamente realiza operaciones en una forma especfica a la clase.
Mtodos de conversin, son mtodos constructor sobrecargados de otras clases
que permiten a la clase convertir sus propios objetos a la clase constructor
sobrecargado. Por ejemplo, si tu clase implementa un mtodo
entonces este mtodo es llamado en lugar de la clase constructor
convertir tu objeto de clase a un objeto

double ,

double

para

double de Matlab.

Mtodos abstracto, sirven para definir una clase que no puede crear instancias,
sin embargo sirve como un camino para definir una interface comn usada por un
numero de subclases. Las clases que contienen mtodos abstractos son con
frecuencia referenciados como interfaces.

10
El mtodo constructor tiene el mismo nombre como la clase y retorna un objeto. Es
posible asignar valores a las propiedades en la clase constructor. Terminar todas las
funciones mtodo con una sentencia

end .

classdef ClassName

methods
functions obj=ClassName( arg1, arg 2, )

obj .1=arg1 ;

end
function normalmethod (obj , arg 1,)

end

end
methods (Static =true)

function static method (arg 1, )

end
end

end

Matlab difiere de lenguajes como C++ y java en que no hay una instancia de clase
escondida especial (p.e. el objeto

this ) pasado a todos los mtodos. Debes pasar

un objeto de la clase explcitamente al mtodo. El argumento de ms a la izquierda no


necesita ser la instancia de clase, y la lista de argumentos puede tener mltiples
objetos.
Es posible definir mtodos de clase en archivos que estn separados del archivo de
definicin de clase. Para usar mltiples archivos para una difusin de clase, colocar
los archivos en una carpeta que tiene un nombre que comienza con el carcter

11
seguido por el nombre de la clase. Estar seguro que la carpeta padre de la carpeta

@ est en la ruta de Matlab.


Para definir un mtodo en un archivo separado en la carpeta de la clase @ , crea la
funcin en un archivo separado, pero no uses un bloque de mtodo en aquel archivo.
Nombre el archivo con el nombre de la funcin como cualquier funcin.
Debes de colocar los siguientes mtodos en el archivo

classdef , no en archivos

separados:

Constructor de clase

Mtodo

Todas las funciones que usen puntos en sus nombres, incluyendo:


o Mtodos convertidor, que convierten a las clases contenidas en
paquetes, los cuales deben usar el nombre del paquete como parte del
nombre de la clase.
o

delete

Propiedad

set

y mtodos de acceso

get .

Si especificas los atributos del mtodo para un mtodo que defines en un archivo
separado, incluya la firma del mtodo en un bloque de mtodos en el bloque

classdef .

Por ejemplo, el siguiente cdigo muestra un mtodo con Access set a privado en el bloque
de mtodos. La implementacin del mtodo reside en un archivo separado. No incluya la
funcin o palabra clave

end

en el bloque de mtodos, solo la firma de la funcin

mostrando los argumentos de entrada y salida.

classdef ClassName

a method block , set the method attributes


add the function signature

methods ( Access= private)


output=myFunc (obj , arg1, arg 2)

end
end

En un archivo llamado

myFunc . m , en la carpeta @ClassName , define la funcin:

12

function output=myFunc (obj , arg 1, arg2)

end
4.7.4 El bloque eventos.
El bloque eventos (uno para cada conjunto nico de especificaciones de atributos)
contiene los nombres de eventos que esta clase declara. El bloque de eventos empieza
con la palabra clave

events

y termina con la palabra clave

end .

classdef ClassName
events

end

end
Para definir un evento, declaras un nombre para el evento en el bloque de eventos.
Entonces uno de los mtodos de clase desencadena el evento usando el mtodo de
notificacin, el cual es un mtodo heredado de la clase
derivadas de la clase

handle pueden definir eventos. Por ejemplo, la siguiente clase:


StateChange .

Defina un evento llamado

Desencadene el evento usando el mtodo

classdef classname < handle Subclass handle


events Define an event called StateChange
StateChange

end

methods

handle . Solamente las clases

notify

heredado.

13

function upDateGUI ( obj)

Broadcast notice that StateChange event has ocurred

Notify (obj , StateChange ) ;


end
end

end
Cualquier nmero de objetos puede ser escuchado por el evento

notify

para ocurrir. Cuando

callbacks

se ejecuta, Matlab llama a todos los oyentes

handle

registrados y pasa el

del objeto generando el evento y una

estructura de evento a estas funciones. Para registrar un oyente


el mtodo

addlistener

StateChange

de la clase

callback , use

handle .

addlistener (event obj , StateChange , @myCallback )


4.7.5 Especificando atributos.
Los atributos modifican el comportamiento de la clase y componentes de la clase
(propiedades, mtodos y eventos). Los atributos permiten definir comportamientos
tiles sin necesidad de escribir cdigo complicado. Por ejemplo, puedes crear una
propiedad de solo lectura por estableciendo su atributo
y establecer su atributo

GetAcess a

SetAcess

private ,

public (por defecto):

properties(SetAccess= private)
ScreenSize =getScreenSize ;

end
Todos

los

bloques

de

definicin

de

clase

classdef , properties , methods , y events ) soportan atributos especficos y todos


los atributos tienen valores por defecto. Especifique los valores de atributos solo
en casos en los que desea cambiar el valor predeterminado a otro valor
predefinido.

14
Posibles atributos para las clases son:

Hidden , InferiorClasses ,ConstructOnLoad , Sealed .


Posibles atributos para las propiedades son:

AbortSet , Abstract , Access , Constant , Dependent , GetAccess , GetObservable ,


Hidden , SetAccess , SetObservable ,Transient .
Posibles atributos para los mtodos son:

Abstract , Access , Hidden , Sealed , Static .

Posibles atributos para los eventos:

Hidden , ListenAccess , NotifyAccess .

4.8 Ejemplo: Una clase polinomial.


Este ejemplo implementa una clase para representar polinomios en el lenguaje
Matlab. Una clase valor se utiliza debido a que el comportamiento de un objeto
polinomio dentro del entorno de Matlab debe seguir la semntica de copia de
otras variables de Matlab. En contraste al ejemplo presentado en la
documentacin oficial del Matlab, este ejemplo solo implementa las
funcionalidades bsicas para la clase polinomio.
Esta clase sobrecarga un numero de funciones de Matlab, tales como

polyval , diff y

roots ,

plot , de modo que estas funciones pueden ser usado con

el nuevo objeto polinomio.


4.8.1 Creando la carpeta y archivo necesario.
Para usar la clase hay que crear una carpeta llamada
guardar

DocPolinomio . m

esta

carpeta.

La

@ DocPolinomio
carpeta

padre

y
de

@ DocPolinomio debe estar sobre la ruta de Matlab.


4.8.2 Usando la clase

DocPolinomio .

Los siguientes ejemplos ilustran el uso bsico de la clase


Crear los objetos

DocPolinomio

DocPolinomio .

para representar los siguientes polinomios.

Note que el argumento para la funcin constructor contiene los coeficientes del
polinomio

f ( x )=x 32 x5 y f ( x )=2 x 4 +3 x 2+2 x7.

P1=DocPolinomio([1 025])

P1=

15
3

X 2x5
P2=DocPolinomio([20 3 27 ])

P2=
2x 4 +3x 2 +2x7
El mtodo

disp

del

DocPolinomio

muestra el polinomio en sitaxis de

Matlab. Encontrar las races del polinomio usando el mtodo de sobrecarga

roots .
roots( p 1)
ans=

2.0946
1.0473+1.1359 i

1.04731.1359i
Sumar los dos polinomios p1 y p2.
El tiempo de ejecucin de Matlab llama al mtodo plus definido por la clase

DocPolinomio cuando sumas dos objetos

DocPolinomio .

p1+ p 2
ans=

2x 4 + x 3 +3x 212
Las siguientes secciones describen la implementacin de los mtodos ilustrados
aqu tan bien como su implementacin en detalle.
4.8.3 El mtodo constructor

DocPolinomio .

La siguiente funcin es el constructor de clase


encuentra en el archivo

DocPolinomio , el cual se

@ DocPolinomio /DocPolinomio . m :

16

Los coeficientes son almacenados en la propiedad

coef

de la clase

DocPolinomio :
classdef DocPolinomio
properties

coef
end

methods
function obj=DocPolinomio(c)

Construct a DocPolinomio object usingthe coefficients supplied

Sintaxis de la llamada del constructor


Es posible llamar al mtodo constructor con dos argumentos diferentes:
- Cuando el argumento es un objeto polinomio si llamas a la funcin
constructor con un argumento de entrada que es un objeto polinomio, el
constructor retorna un nuevo objeto polinomio con los mismos coeficientes
como argumentos de entrada. La funcin
-

isa chequea esta situacin.

Cuando el argumento de entrada es un vector de coeficientes si el


argumento de entrada no es un objeto

DocPolinomio , el constructor

pretende reformar los valores dentro de un vector y asignarlos a la propiedad

coef .

El mtodo

coef property set

restringe los valores de propiedad a double.

Remover coeficientes Irrelevantes


Matlab representa a los polinomios como vectores fila que contiene coeficientes
ordenados por orden de potencia descendente. Los ceros en el vector coeficientes

17
representan trminos que no estn presentes en el polinomio. Los ceros a la izquierda
pueden ser ignorados cuando se forma el polinomio.
Algunos mtodos de la clase

DocPolinomio

usan la longitud del vector de coeficientes

para determinar el grado del polinomio. Es til, por lo tanto remover los ceros de la
izquierda del vector de los coeficientes de modo que su longitud representa el valor
verdadero.
La clase

DocPolinomio

almacena los coeficientes del vector en una propiedad que

usa un mtodo set para remover los ceros a la izquierda desde los coeficientes
especificados antes de establecer el valor de propiedad.

Un ejemplo del constructor es lo siguiente:

P=DocPolinomio ([1 025])

P=x 3 2x 5

Este ejemplo crea un ejemplo de la clase

DocPolinomio

con los coeficientes

especificados en el argumento de la funcin. Note como los mtodos de la clase muestran


el polinomio equivalente usando la sintaxis de Matlab. La clase
implementa usando los mtodos de clase
4.8.4 Convirtiendo objetos de la clase

disp

DocPolinomio

char .

DocPolinomio a otros tipos de clases.

lo

18

La clase

DocPolinomio

DocPolinomio

define dos mtodos para convertir objetos de la clase

a otras clases:

double

Convierte al tipo numrico estndar de Matlab, de modo que se

pueda realizar operaciones matemticas con los coeficientes.

char

Convierte a cadena de caracteres; usado como formato de salida para

mostrar en la ventana de comandos.


Convertir la clase

DocPolinomio

a la clase

double , el mtodo de conversin

simplemente consiste en retornar un vector de coeficientes el cual es por definicin del


tipo

double .

Para el objeto

DocPolinomio p:

El cual tiene la clase

double

19

DocPolinomo

Convertir de la clase

a la clase de caracteres El mtodo

char

produce una cadena de caracteres, que representan los polinomios


mostrados como
potencia de una variable independiente. Por lo tanto, despus de que se especific un
valor para x, se retorna la cadena de caractersticas es una expresin sintcticamente de
Matlab, el cual se puede evaluar
El mtodo

char

usa un array del tipo

cell

para coleccionar las componentes de la

cadena de caracteres que componen el polinomio mostrado.


El mtodo

disp

usa

char

para formatear el objeto DocPolinomio con la finalidad de

mostrarlo. Los usuarios de la clase directamente no llaman a los mtodos

disp , sin embargo estos mtodos permiten que la clase

char

DocPolinomio se comporte

como clase de datos en Matlab.


A continuacin se muestra el mtodo

4.8.5 Mtodo

disp

de la clase

char .

DocPolinomio .

Para proporcionar una visualizacin ms til del objeto


considera al mtodo
El mtodo

disp

disp

DocPolinomio , esta clase

en la definicin de la clase.

se basa en el mtodo

char

para producir una representacin de

cadena de caracteres del polinomio, como se muestra a continuacin.

20

4.9 Definiendo el operador


Si

p y q son objetos de la clase

DocPolinomio , la expresin

p+q
Genera una llamada a la funcin

@ DocPolinomio / plus

La siguiente funcin redefine el operados ms ( + ) para la clase

DocPolinomio :

La funcin trabaja de la siguiente manera:

Asegurar que ambos argumentos de entrada son objetos

DocPolinomio

de

modo que la expresin tal como

P+1

Que invoca a la clase

DocPolinomio y double , esto trabaja correctamente.

Acceder a los dos vectores de coeficientes y si es necesario llenar a uno de ellos


con ceros que hacerlos de la misma longitud. El resultado de la suma es
simplemente un vector suma de dos vectores coeficientes.

Llamar al constructor

4.10 Funciones de Matlab

DocPolinomio
roots y

para crear un resultado apropiado.

polyval para la clase

DocPolinomio .

Es posible cargar funciones del Matlab y hacerlas trabajas en forma conjunta con la nueva
clase

DocPolinomio . En el caso de objetos

DocPolinomio , los mtodos de carga

21
simplemente pueden aplicar la funcin original de Matlab a los coeficientes (por ejemplo,
los valores obtenidos de la propiedad

coef ).

Esta seccin muestra cmo implementar las siguientes funciones de Matlab.


4.10.1 Definiendo la funcin
El mtodo

roots

DocPolinomio

de la clase

mtodo

DocPolinomio

polyval

polyval

la propiedad

coef

potencias de

x :

roots cargada de Matlab.

polyval .

de Matlab evala un polinomio en un conjunto de puntos dado. El

de la clase

DocPolinomio

simplemente extrae los coeficientes de

y entonces llama a la funcin

El siguiente cdigo evala el polinomio


el resultado.

encuentra las races de los objetos

por pasando los coeficientes a la funcin

4.10.2 Definiendo la funcin


La funcin

roots .

polyval de Matlab para calcular las

p=x 22x5

para

x=2:0.1 : 2

y dibuja