Professional Documents
Culture Documents
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
whos
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 .
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
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:
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
classdef
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:
end
Superclases
Para definir una clase en trminos de una o ms clases es importante especificar
la superclases sobre la lnea
classdef :
end
Una clase handle hereda de la clase handle (por ejemplo, la clase handle como
superclase)
name
classdef handle handle
end
El bloque
classdef
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
end
end
Hay dos aproximaciones bsicas para inicializar los valores de las propiedades:
classdef classname
properties
PropertyName No default Value assigned
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
Strain
end
end
En este caso, solo los mtodos en la misma definicin de clase puede modificar y
consultar las propiedades
Stress
SetAccess
8
Es posible definir mtodos que Matlab llama cada vez que se establece o se consulta un
set access
o los mtodos
get access
en
methods
end
function obj=set . PropertyName(obj, value)
end
end
set access
set access
classdef className
methods
end
end
methods
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
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)
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
11
seguido por el nombre de la clase. Estar seguro que la carpeta padre de la carpeta
classdef , no en archivos
separados:
Constructor de clase
Mtodo
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
classdef ClassName
end
end
En un archivo llamado
12
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
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
end
methods
notify
heredado.
13
end
Cualquier nmero de objetos puede ser escuchado por el evento
notify
callbacks
handle
registrados y pasa el
addlistener
StateChange
de la clase
callback , use
handle .
GetAcess a
SetAcess
private ,
properties(SetAccess= private)
ScreenSize =getScreenSize ;
end
Todos
los
bloques
de
definicin
de
clase
14
Posibles atributos para las clases son:
polyval , diff y
roots ,
DocPolinomio . m
esta
carpeta.
La
@ DocPolinomio
carpeta
padre
y
de
DocPolinomio .
DocPolinomio
DocPolinomio .
Note que el argumento para la funcin constructor contiene los coeficientes del
polinomio
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
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 .
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 .
DocPolinomio , el cual se
@ DocPolinomio /DocPolinomio . m :
16
coef
de la clase
DocPolinomio :
classdef DocPolinomio
properties
coef
end
methods
function obj=DocPolinomio(c)
DocPolinomio , el constructor
coef .
El mtodo
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
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
usa un mtodo set para remover los ceros a la izquierda desde los coeficientes
especificados antes de establecer el valor de propiedad.
P=x 3 2x 5
DocPolinomio
disp
DocPolinomio
char .
lo
18
La clase
DocPolinomio
DocPolinomio
a otras clases:
double
char
DocPolinomio
a la clase
double .
Para el objeto
DocPolinomio p:
double
19
DocPolinomo
Convertir de la clase
char
char
cell
disp
usa
char
char
DocPolinomio se comporte
4.8.5 Mtodo
disp
de la clase
char .
DocPolinomio .
disp
disp
en la definicin de la clase.
se basa en el mtodo
char
20
DocPolinomio , la expresin
p+q
Genera una llamada a la funcin
@ DocPolinomio / plus
DocPolinomio :
DocPolinomio
de
P+1
Llamar al constructor
DocPolinomio
roots y
DocPolinomio .
Es posible cargar funciones del Matlab y hacerlas trabajas en forma conjunta con la nueva
clase
21
simplemente pueden aplicar la funcin original de Matlab a los coeficientes (por ejemplo,
los valores obtenidos de la propiedad
coef ).
roots
DocPolinomio
de la clase
mtodo
DocPolinomio
polyval
polyval
la propiedad
coef
potencias de
x :
polyval .
de la clase
DocPolinomio
roots .
p=x 22x5
para
x=2:0.1 : 2
y dibuja