UNITEC SUR Prof. Ing. José Luis Lozoya Vázquez - 3. Clases y objetos
  *Inicio
  *Metodología Orientada a Objetos
  => Textos relacionados
  => 1. Antecedentes
  => 2. Intro. al Paradigma O.O.
  => 3. Clases y objetos
  => 4. Proceso de desarrollo del software
  => 5. El lenguaje de modelado unificado
  => 6. Metodologías
  => 7. Análisis
  => 8. Diseño
  => 9. Conceptos avanzados
  => Resumen1
  => Resumen2
  *Tipo de Datos Abstracto*
  *Contacto

3.1 Atributos y métodos de instancia.

Una instancia de un programa es creada típicamente por el click de usuario en un icono de una interfaz Gráfica para usuarios GUI o por la entrada de un comando en una interfaz de línea de comandos CLI y presionando la tecla ENTER. Instancias de programas pueden ser creadas por otros programas.

Un ejemplo de Instancia en un lenguaje de programación, sería tomar o arrastrar un objeto de la barra de herramientas o de la lista de librerías y colocarlo en el escritorio o escenario de trabajo (estamos creando una instancia de ese objeto, una copia). En los lenguajes visuales por ejemplo un botón. Si arrastramos 10 botones al entorno visual de trabajo, estamos creando una instancia del botón original, si a cada botón le cambiamos el nombre, tendremos 10 botones que heredan las mismas propiedades y métodos del objeto original. Tenemos como resultado que con un solo botón hicimos 10 y nuestro archivo pesara como si tuviese uno solo.

De esta forma, partiendo de lo que conforma a un objeto original (propiedades y métodos) se reutilizan sus funciones creando una instancia del mismo en distintas partes del programa donde se necesite. Si el objeto original cambia o le es agregado algún nuevo atributo, las instancias lo heredaran puesto que son una copia del objeto original.

 Atributos de instancia:

determina el estado de los objetos
cada objeto reserva memoria para todas las variables de instancia

Declaración:

   [acceso][static][final] tipo nombreAtributo [= valor_inicial];

 

3.2 Atributos y métodos de clase.

Atributos

Los atributos son las características individuales que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades. Los atributos se guardan en variables denominadas de instancia, y cada objeto particular puede tener valores distintos para estas variables.

Las variables de instancia también denominados miembros dato, son declaradas en la clase pero sus valores son fijados y cambiados en el objeto.

Además de las variables de instancia hay variables de clase, las cuales se aplican a la clase y a todas sus instancias. Por ejemplo, el número de ruedas de un automóvil es el mismo cuatro, para todos los automóviles.

Los métodos son las operaciones que pueden realizarse sobre el objeto, que normalmente estarán incorporados en forma de programas (código) que el objeto es capaz de ejecutar y que también pone a disposición de sus descendientes a través de la herencia.

Concepto de Clase
Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan
sobre esos datos. La definición de una clase se realiza en la siguiente forma:
[public] class Classname {
// definición de variables y métodos
...
}
donde la palabra public es opcional: si no se pone, la clase tiene la visibilidad por defecto, esto es,
sólo es visible para las demás clases del package. Todos los métodos y variables deben ser definidos
dentro del bloque {...} de la clase.
Un objeto (en inglés, instance) es un ejemplar concreto de una clase. Las clases son como
tipos de variables, mientras que los objetos son como variables concretas de un tipo determinado.
Classname unObjeto;
Classname otroObjeto;
A continuación se enumeran algunas características importantes de las clases:
1. Todas las variables y funciones de Java deben pertenecer a una clase. No hay variables y
funciones globales.
2. Si una clase deriva de otra (extends), hereda todas sus variables y métodos.
3. Java tiene una jerarquía de clases estándar de la que pueden derivar las clases que crean
los usuarios.
4. Una clase sólo puede heredar de una única clase (en Java no hay herencia múltiple). Si al
definir una clase no se especifica de qué clase deriva, por defecto la clase deriva de
Object. La clase Object es la base de toda la jerarquía de clases de Java.

Metodos ó Comportamiento.

El comportamiento de los objetos de una clase se implementa mediante funciones miembro o métodos. Un método es un conjunto de instrucciones que realizan una determinada tarea y son similares a las funciones de los lenguajes estructurados.

Del mismo modo que hay variables de instancia y de clase, también hay métodos de instancia y de clase. En el primer caso, un objeto llama a un método para realizar una determinada tarea, en el segundo, el método se llama desde la propia clase.


3.3 Relaciones entre clases.

Asociación

Las asociaciones son conexiones conceptuales entre clases. Por ejemplo la asociación, entre trabajador y empresa.

“Un trabajador labora en una empresa” la asociación conectara con una línea a trabajador y empresa, si vemos los roles de cada uno podemos decir que el trabajador es un empleado y la empresa es la empleadora.

“Labora en” es el nombre de la asociación y la colocamos sobre la linea, mientras que los roles (empleado, empleador) los colocamos bajo la línea a cada lado según corresponda. Así nuestra relación “Un trabajador labora en una empresa” en UML se vería así:

Asociación

Las asociaciones pueden funcionar en ambos sentidos. Si vemos el ejemplo anterior desde la perspectiva de la empresa, la asociación sería “Una empresa emplea trabajadores”

Asociación viceversa

Notemos que para comprender el sentido de la asociación añadimos una flecha.

Las asociaciones no se limitan conectar una clase con otra, pueden conectarse varias clases con una.

Asociación multiple

Cuando necesitamos especificar mas detalles en las asociaciones como restricciones podemos especificarlas encerrándolas entre llaves. Por ejemplo un cajero atiende a un cliente, pero cada cliente es atendido en el orden de su llegada.

Asociación con restriccion

La restricción del tipo “O” se la representa con una línea entrecortada que una las 2 relaciones. Por ejemplo un estudiante de educación media superior puede elegir entre un curso académico o uno comercial.

Asociación O

Multiplicidad

La multiplicidad indica la cantidad de objetos de una clase que se relacionan con otro objeto en particular de la clase asociada.

En el ejemplo de la relación “Un trabajador labora en una empresa”, aplicando la multiplicidad sería “Uno o varios empleados trabajan en una empresa”. Y el diagrama se vería asi:

Asociacion con multiplicidad

Notemos que usamos * como comodín para indicar la palabra “varios”

Asociaciones calificadas

Cuando la multiplicidad de una asociación es de uno a muchos, en ocaciones se requiere seleccionar un objeto específico para cumplir la asociación. Para seleccionar el objeto se necesita un identificador que permita diferenciarlo del resto de objetos a este se le llama calificador. Por ejemplo, cuando se realiza una reservacion en un hotel, el hotel le asigna un numero de confirmación. Si se requiere hacer preguntas respecto a la reservacion, se deberá proporcionar el número de confirmacion que en este caso actua como identificador.

En UML esto se representa con un rectángulo adjunto a la clase que usará el calificador.

Asociacion calificativa

Asociaciones reflexivas

Esta se da cuando una clase se asocia consigo mismo. Por ejemplo en la clase empleado, un empleado puede actuar como jefe o subalterno.

Asociacion reflexiva

Herencia y generalización

La herencia y generalización son sinónimos dentro de UML.

La generalización permite que una clase “hija” herede todos los atributos y propiedades de la clase “madre”. Por ejemplo las clases vertebrados e invertebrados pueden heredar de animal.

Herencia

La representacion de herencia en UML es a través de una línea que termina con un triángulo sin relleno.

Dependencias

Se define cuando una clase utiliza a otra como parámetro de una de sus operaciones.

Por ejemplo imaginemos que tenemos 2 clase una sistema y otra formulario. Una de las operaciones de sistema es mostrarFormulario(), la cual tiene como parámetro la clase formulario, esto se representa en UML así:

Dependencia

Agregación

Una agregación es una acumulación de clases. Es decir una clase esta formada por otras.

Por ejemplo un auto esta formado por su motor, chasis, corrocería entre otras cosas. En UML esto se representaría asi:

Agregación

Composición

Una composición es un tipo de agregación, la cual determina una restricción. Cada componente de una agregacion puede pertenecer tan solo a un todo.

Esto se representa de igual forma que una agragacíon, con la diferencia de que el rombo esta rellenado

Realización

Una realización es la relación entre una clase y una interfaz.

Una interfaz define las capacidades o habilidades de un objeto.

Veamos un ejemplo. El teclado de la computadora esta basada en la presión de las teclas de igual forma que el teclado una máquina de escribir. La operación básica (teclazo) es comun para ambos tipos de teclado, sin embargo el teclado de computadora tiene otras opreaciones como ctrl, alt, etc.

Podríamos decir que el teclado de la máquina de escribir es una interfaz del teclado de computadora pues define al habilidad de teclazo. Esto en UML se representaría así:

Realización


3.4 Relaciones entre objetos.

Las relaciones entre objetos son, precisamente, los enlaces que permiten a un objeto relacionarse con aquellos que forman parte de la misma organización.

Las hay de dos tipos fundamentales:

-Relaciones jerárquicas. Son esenciales para la existencia misma de la aplicación porque la construyen. Son bidireccionales, es decir, un objeto es padre de otro cuando el primer objeto se encuentra situado inmediatamente encima del segundo en la organización en la que ambos forman parte; asimismo, si un objeto es padre de otro, el segundo es hijo del primero (en la fig. 2, B es padre de D,E y F, es decir, D,E y F son hijos de B; en la fig. 3, los objetos B y C son padres de F, que a su vez es hijo de ambos).

Una organización jerárquica simple puede definirse como aquella en la que un objeto puede tener un solo padre, mientras que en una organizacion jerárquica compleja un hijo puede tener varios padres).

-Relaciones semánticas. Se refieren a las relaciones que no tienen nada que ver con la organización de la que forman parte los objetos que las establecen. Sus propiedades y consecuencia solo dependen de los objetos en sí mismos (de su significado) y no de su posición en la organización.

Se puede ver mejor con un ejemplo: supongamos que vamos a construir un diccionario informatizado que permita al usuario obtener la definición de una palabra cualquiera. Supongamos que, en dicho diccionario, las palabras son objetos y que la organización jerárquica es la que proviene de forma natural de la estructura de nuestros conocimientos sobre el mundo.

La raíz del diccionario podría llamarse TEMAS. De éste término genérico descenderán tres grandes ramas de objetos llamadas VIDA, MUNDO y HOMBRE. El primero (vida) comprenderá las ciencias biológicas: Biología y Medicina. El segundo (mundo), las ciencias de la naturaleza inerte: las Matemáticas, la Física, la Química y la Geología. El tercero (hombre) comprenderá las ciencias humanas: la Geografía, la Historia, etc.

Veamos un ejemplo: estableceremos la relación trabajo entre los objetos NEWTON y OPTICA y la interpretaremos diciendo que significa que Newton trabajó en óptica (véase la fig. 4). La relación es, evidentemente, semántica, pués no establece ninguna connotación jerárquica entre NEWTON y OPTICA y su interpretación depende exclusivamente del significado de ambos objetos.

La existencia de esta relación nos permitirá responder a preguntas como:

¿Quién trabajó en óptica?

¿En qué trabajó Newton?

¿Quien trabajó en Física?

Las dos primeras se deducen inmediatamente de la existencia de la relación trabajo. Para la tercera observamos que si Newton trabajó en óptica automáticamente sabemos que trabajó en Física, por ser óptica una rama de la Física (en nuestro diccionario, el objeto OPTICA es hijo del objeto FISICA). Entonces gracias a la OOP podemos responder a la tercera pregunta sin necesidad de establecer una relación entre NEWTON y FISICA, apoyandonos sólo en la relación definida entre NEWTON y OPTICA y en que OPTICA es hijo de FISICA. De este modo se elimina toda redundancia innecesaria y la cantidad de información que tendremos que definir para todo el diccionario será mínima.
Hoy habia 5 visitantes (7 clics a subpáginas) ¡Aqui en esta página!
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis