Beruflich Dokumente
Kultur Dokumente
2
Introducción a AJAX
Clases y Objetos
El paradigma OO se basa en el concepto de objeto. Un objeto es aquello que
tiene estado (propiedades más valores), comportamiento (acciones y
reacciones a mensajes) e identidad (propiedad que lo distingue de los demás
objetos). La estructura y comportamiento de objetos similares están definidos
en su clase común; los términos instancia y objeto son intercambiables. Una
clase es un conjunto de objetos que comparten una estructura y
comportamiento común.
La diferencia entre un objeto y una clase es que un objeto es una entidad
concreta que existe en tiempo y espacio, mientras que una clase representa
una abstracción, la "esencia" de un objeto, tal como son. De aquí que un objeto
no es una clase, sin embargo, una clase puede ser un objeto.
En el mundo real existen objetos que se encuentran en el vocabulario del
dominio del problema. Cada objeto, elemento del mundo real:
• Tiene unas características o propiedades: color, forma, tamaño,
temperatura, etc.
• Se utiliza para una cosa, esto es, tiene un comportamiento claro.
• Interacciona con otros objetos. Y como resultado de esa interacción los
objetos pueden cambiar de estado.
Objeto
Concepto, abstracción o cosa con límites bien definidos y con significado a
efectos del problema que se tenga entre manos.(Rumbaugh)
Unidad básica para la construcción del software.
Es un elemento autónomo de información que proporciona una serie de
servicios sobre la estructura interna que implementa
Un objeto tiene estado, comportamiento e identidad. (Booch)
Clase
Es la definición de un conjunto de objetos que comparten una estructura
común y un comportamiento común.
Conceptos que permiten agrupar objetos semejantes.
Todos los objetos son ejemplares o instancias de una clase.
Al proceso de crear objetos concretos a partir de una clase se denomina
instanciación
3
Introducción a AJAX
Abstracción
La definición, según la Real Academia de la Lengua (RAE), es:
Abstraer. Separar por medio de una operación intelectual las cualidades
de un objeto para considerarlas aisladamente o para considerar el
mismo objeto en su pura esencia o noción.
Una abstracción denota las características esenciales de un objeto que lo
distinguen de todos los demás tipos de objeto y proporciona así fronteras
conceptuales nítidamente definidas respecto a la perspectiva del observador.
[Booch 1986]
El proceso de abstracción consiste en definir los objetos (comportamiento
visible) sin preocuparse de los detalles concretos de la parte interna del objeto
(estado interno): como son las estructuras y tipos de datos que utiliza y cómo
se implementa la funcionalidad. El objeto se ve como un elemento (caja negra)
que hace lo que tiene que hacer sin preocuparnos cómo lo hace. En su
momento ya nos preocuparemos de ello o se ocuparán otros.
En una Persona tenemos, por ejemplo, la función de hablar, que es una
abstracción de una serie de procesos eléctricos cerebrales, movimientos
musculares y modulación del aire; entonces, si creara un objeto Persona y
quisiera hacerla hablar, abstraería todas las cosas que hacen que una persona
hable en un solo método y llamaría a dicho método cuando lo necesite,
pasándole como parámetro lo que quiero que diga. También podría hacer que
esa persona dijera su nombre si asigno al objeto Persona la propiedad Nombre
y solicito su valor al pedirle que hable, sin preocuparme de cómo va a
almacenar dicha información: mediante interconexión de neuronas,
tatuándoselo en el brazo, con un post-it, ….
En conclusión; abstracción es aislar todos los complejos métodos y
propiedades de un objeto; tratando de hacerlos más simples y modulares cada
vez.
Características de la Encapsulación
El encapsulamiento es el proceso de almacenar en un mismo compartimento
los elementos de una abstracción que constituyen su estructura y su
comportamiento; sirve para separar el interfaz contractual de una abstracción y
su implantación. [Booch 1986]
Su objetivo es garantizar que todas las interacciones del objeto tengan lugar a
través de un sistema de mensajería predefinido con el que sea capaz de
entenderse. No existe ninguna otra manera con la que un objeto externo pueda
acceder a los atributos y métodos escondidos dentro de la interfaz de mensajes
de otro objeto.
Hay muchos datos que no tiene porqué conocer a aquel que esté usando la
clase Persona; ya que son inherentes al objeto y solo controlan su
4
Introducción a AJAX
Clases e Instancias
Una clase es la definición de un conjunto de objetos que comparten una
estructura común y un comportamiento común.
Una Instancia es un objeto concreto de una clase. Se le llama instancia a cada
variable que tenga dentro de si un objeto de una clase específica; solo son
consideradas instancias después de que se les asigna memoria.
Habitualmente se toman como sinónimos los conceptos de objeto e instancia,
aunque estrictamente esto no es correcto dado que las clases son objetos en si
mismas.
Podemos asemejar una clase con el plano utilizado para construir los objetos.
El plano en si, es a vez un objeto, podemos anotar cosas encima de el, tiene
comportamiento (se puede borrar o quemar).
Redefiniendo el término de objeto, cuando en tiempo de diseño hablamos de
objetos normalmente estamos hablando de clases (diseñamos clases), si es en
tiempo de ejecución, los objetos de los que estamos hablando normalmente
son instancias (usamos instancias creadas a partir de la clase).
Por ejemplo, tenemos el plano para construir coches, seria la clase. Dicho
plano lo utilizamos para construir coches, las instancias serán cada uno de los
coches con su correspondiente color, que circula en diferentes direcciones, etc.
5
Introducción a AJAX
Atributos y su Inicialización
Como ya hemos visto, los atributos son las características observables de un
objeto. Los atributos se reconocen porque describen un aspecto del objeto que
podemos medir con una escala establecida previamente.
Nos podemos hacer a la idea de que las propiedades son algo así como
variables donde almacenamos datos relacionados con los objetos.
Los atributos del objeto guardan los valores del objeto, su estado. Todo objeto
debe contar con un estado inicial, sus atributos deben estar inicializados a un
valor de tal forma que una vez creado el objeto se encuentre listo para
funcionar correctamente. El estado inicial del objeto se consigue mediante unos
métodos especiales denominados constructores que reciben una serie de
parámetros con los valores iniciales de los atributos.
Es responsabilidad del desarrollador de la clase el que ésta funcione siempre.
Para ello debe tener control sobre los valores de sus atributos y que dichos
valores sean predecibles. Así mismo, en determinadas ocasiones se deseará
cambiar la estructuras de datos por una más adecuada sin que afecte a los que
utilizan a la clase. Para poder conseguirlo es necesario que los atributos
siempre sean privados a la clase, no sean accesibles directamente desde
fuera de ella. Se suministrará un conjunto de métodos que habiliten la entrada y
salida de la información, con las correspondientes validaciones y conversiones
que sean necesarias.
Aunque muchas veces se utilizan los términos atributos y propiedades como
sinónimos, en realidad son cosas distintas aunque no todos los lenguajes OO
lo soportan.
Como vimos anteriormente, los atributos deberían ser siempre privados, por lo
tanto si queremos consultar o modificar la información contenida en los
atributos, necesitamos un par de métodos:
• La función DameAtributo, que devuelve el valor del atributo.
• El procedimiento PonAtributo que recibe como parámetro el valor a
introducir en el atributo.
Las propiedades son miembros que ofrecen un mecanismo flexible para leer,
escribir o calcular los valores de atributos privados. Se pueden utilizar las
propiedades como si fuesen atributos públicos, aunque en realidad son
métodos especiales denominados descriptores de acceso. De este modo, se
puede tener acceso a los datos con facilidad, a la vez que proporciona la
seguridad y flexibilidad de los métodos.
Las propiedades combinan aspectos de los atributos y de los métodos. Para el
usuario de un objeto, una propiedad es similar a un atributo, el acceso a la
propiedad requiere exactamente la misma sintaxis. En realidad, una propiedad
son dos bloques de código que representan un descriptor de acceso
DameAtributo (get) y PonAtributo (set). El bloque get se ejecuta cuando se lee
la propiedad; el bloque set se ejecuta cuando se asigna un nuevo valor a la
propiedad.
6
Introducción a AJAX
Métodos
Anteriormente definimos los métodos como un conjunto de acciones que un
objeto puede realizar para conseguir un propósito.
Los métodos representan la parte funcional de un objeto, se emplean
habitualmente para modificar las propiedades del objeto y realizan las
actividades asignadas al objeto. Al modificar cualquiera de las propiedades del
objeto se altera su apariencia y se genera un cambio que el usuario de la
aplicación puede percibir.
Los lenguajes OO, normalmente, son fuertemente tipados, es decir, realizan
una comprobación estricta de tipos. Esto permite la sobrecarga en los métodos,
podemos tener varias versiones del mismo método (varios métodos que se
llamen igual en el mismo objeto) pero cada versión tiene que tener una firma
única (lista de parámetros diferente).
Cuando se manda el mensaje al objeto (invocación del método), el sistema
resuelve cual de las diferentes versiones se quiere ejecutar consultando el
número y tipo de parámetros pasados y cotejándolo con las firmas disponibles.
Hay que pensar en términos de reutilización y tener en cuenta que la clase se
implementa una vez pero se utiliza muchas veces, a la larga, invertir algo más
de esfuerzo en la clase ahorra mucho tiempo.
Disponemos de dos tipos de métodos especiales que dirigen la inicialización y
finalización de los objetos: Constructores y Destructores
Constructores
Los constructores son métodos o funciones que existen dentro de todos los
objetos, y que se activan solamente en el momento de la creación del objeto.
Los constructores sirven para definir los valores iniciales de las propiedades del
objeto. También se dice que un constructor es una operación que crea un
objeto e inicializa su estado.
Los constructores solo se pueden invocar cuando se realiza la instanciación del
objeto, pueden recibir parámetros por lo que acepta la sobrecarga.
Destructor
El destructor es un método que se activa cuando el objeto desaparece. El
destructor es único y sirve para que un objeto ejecute una acción o conjunto de
acciones antes de terminar su ciclo vital. Normalmente los objetos dejan de
existir cuando salen de su ámbito (entorno) en donde fueron creados. Los
destructores son importantes porque se activan automáticamente, y se delega
en ellos la tarea de liberar los recursos utilizados por el objeto, ya que
normalmente esta es la tarea ejecutada por el destructor.
7
Introducción a AJAX
Herencia de Clases
El objeto Persona es un objeto muy genérico, sus funciones básicas son las
mismas en todos los seres humanos, con diferencias puntuales, así que
podemos crear dos objetos Hombre y Mujer, que hereden todas sus
características genéricas como respirar, hablar, nombre, etc., del objeto
Persona, y será en la implementación de cada objeto donde empiecen las
diferencias.
Si lo hago así, sabré que tanto mis instancias del objeto Hombre como las del
objeto Mujer tendrán el método respirar, hablar, etc; y la propiedad nombre,
color de piel, color de cabello; etc. Pero, por ejemplo, solo el objeto Mujer
tendrá el método "dar a luz" si yo se lo programo y solo el objeto Hombre
tendrá el método "Fecundar".
Todo esto es posible gracias a que el objeto Hombre y el objeto Mujer
heredaron del objeto Persona todas sus propiedades y métodos.
La Herencia es una relación entre clases, en la que una clase comparte la
estructura y/o el comportamiento definido en una (herencia simple) o más
clases (herencia múltiple).
La clase de la que otras heredan se denomina: superclase, clase base o clase
padre.
La clase que hereda de otra clase se denomina: subclase, clase derivada o
clase hija.
Existen dos tipos de herencia:
• Simple: En esta jerarquía cada clase tiene como máximo una sola
superclase. La herencia simple permite que una clase herede las
propiedades y métodos de su superclase en una cadena jerárquica.
• Múltiple: Una malla o retícula consta de clases, cada una de las cuales
pueden tener una o más superclases inmediatas. Una herencia múltiple
es aquella en la que cada clase puede heredar las propiedades y
métodos de cualquier número de clases.
8
Introducción a AJAX
Clases Abstractas
Anteriormente veíamos el objeto Persona, es un objeto muy genérico y limitado
en si, así que se puede considerar como un objeto abstracto ya que por sí
mismo no puede crear una persona completa, sin embargo, sus funciones
básicas son las mismas en todos los seres humanos. Así posteriormente
podemos crear los objetos Hombre y Mujer, que hereden todas sus
características genéricas.
Así llegamos a otro concepto: las clases Abstractas. Una clase abstracta es
una clase de la que no se pueden instanciar objetos (no queremos), solamente
se puede heredar de ellas.
El propósito de una clase abstracta es proporcionar una definición común de
una clase base que múltiples clases derivadas pueden compartir. Existen como
parte del árbol de herencia.
En determinados casos, como el visto en el ejemplo de Personas, la clase es
muy genérica, representan conceptos en el proceso de modelización por lo que
9
Introducción a AJAX
10