Beruflich Dokumente
Kultur Dokumente
Abstracción
Herencia
Encapsulamiento
Polimorfismo
Relaciones
Asociación
Herencia
Multiplicidad
Elementos
Clases
• Atributos
• Propiedades (.Net)
Objetos - Mensajes
Interfaces
Abstracción:
Encapsulación:
Herencia:
Decimos que una gallina es un ave; esto quiere decir que las gallinas
tienen características comunes con otras aves (pico, plumas, etc.), es
decir que la gallina hereda las características comunes de todas las
aves. Pero además, resulta que un ave es un animal, lo que significa
que también comparte características comunes al caballo, el perro, el
hombre (seeee, somos animales) y cualquier otra cosa que pueda ser
clasificada como animal.
La herencia nos permite, entre otras cosas, evitar tener que escribir el
mismo código una y otra vez, puesto que al definir que una categoría
(que en programación llamaremos clase) pertenece a otra,
automáticamente estamos atribuyéndoles las características
generales de la primera, sin tener que definirlas de nuevo.
Polimorfismo
RELACIONES
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.
Herencia
• Es una relación de generalización/especialización del tipo ES-UN(A)
que indica que una clase es una variante de otra clase. Decir que “la
clase B ES-UNA clase A” indica que las principales características de la
clase B se heredan de la clase A.
• Una subclase(derivada) puede heredar la estructura y
comportamiento de su superclase(base).
• Es el mecanismo por el cual una clase de objetos puede ser definida
como un caso especial de otra clase más genérica.
• Los casos especiales de una clase se denominan
Subclases(derivadas).
• La clase más genérica, se conoce como la Superclase(base) de
todos sus casos especiales. Además de los métodos y atributos que
heredan, las Subclases definen sus propios métodos y atributos.
Tambien, pueden redefinir algunos de los heredados (overriding).
• La interface de mensajes definida para una clase base también es
heredada por las clases derivadas. Esto implica que todas las
Subclases de una Superclase estan preparadas para responder
correctamente a los mismos mensajes que la Clase padre. Esta
propiedad es extremadamente útil porque nos permite tratar de la
misma manera a todas las especializaciones de una Clase.
• Al construir una clase lo primero que debemos hacer es rastrear las
clases existentes en bibliotecas de clases.
Si existe una clase que contenga la mayoria de los atributos y
operaciones requeridas debemos heredar de ella, y añadir nuevos
miembros si hace falta. Las características de la clase base pueden
sobrescribirse en la clase derivada. Si no existe, solo entonces
construimos la nueva clase de la nada, esto es no usamos herencia.
Enlaces y asociaciones
Multiplicidad
• La multiplicidad especifica el número de instancias de una clase que
pueden estar relacionadas con una única instancia de una clase
asociada.
ELEMENTOS
ATRIBUTOS
Sobre-escritura:
La sobre-escritura, se aplica a los métodos y esta directamente
relacionada a la herencia y se refiere a la re-definición de los métodos
de la clase base en las subclases, por ejemplo, en la relación de
herencia del ejemplo de las figuras aunque la clase base “Figura”
tiene los métodos “calcularArea” y “calcularPerimetro”, las subclases
“Circulo”, “Cuadrado”, “Triangulo” y “Rectangulo” redefinen estos
métodos ya que el calculo del área y el perímetro de cada uno de
ellos es diferente.
Clases (I)
· Los objetos del mundo real se pueden agrupar en tipos (clases)
personas, coches, ordenadores, lavadoras, aviones, etc) de manera
que los objetos de la misma clase tienen la misma estructura (estado)
y el mismo comportamiento, aunque el estado
de dos objetos puede ser distinto.
· Los objetos software también se pueden agrupar en clases utilizando
un criterio similar: los objetos de la misma clase comparten estado y
comportamiento.
· En terminología orientada a objetos, un objeto concreto de una clase
es una instancia de la clase.
Una clase es un patrón o prototipo que define las variables y los
métodos comunes a todos los objetos de un cierto tipo.
Clases (II)
· Las variables en las que se almacena el estado de un objeto, se
llaman variables de instancia.
· Los métodos que implementan el comportamiento de un objeto se
llaman métodos de instancia.
Clases (III)
· Por ejemplo, la clase Coche declara las variables de instancia
necesarias para almacenar el Nº de marchas, la velocidad actual, y la
marcha actual. La clase también declara y proporciona la
implementación de los métodos de instancia que permiten arrancar,
acelerar, frenar y cambiar de marcha. Después de crear la clase
Coche se pueden crear los objetos de la clase. Cada instancia de la
clase tiene su propia copia de todas las variables de instancia
definidas en la clase.
cambiar de marcha
arrancar
acelerar
frenar
Nº de marchas
velocidad actual
marcha actual
cambiar de
marcha
arrancar
acelerar
frenar
Nº de marchas =5
velocidad actual =80
marcha actual =3
cambiar de
marcha
arrancar
acelerar
frenar
Nº de marchas =4
velocidad actual =120
marcha actual = 4
coche 1 coche 2
Coche
Clases (IV)
· Variables de clase: las clases, además de definir las variables de
instancia, también pueden definir variables de clase, que contienen
información común para todas las instancias de la clase.
Si un objeto modifica el valor de una variable de clase, esta
modificación afecta a todos los objetos de la clase.
· Por ejemplo, en una aplicación de facturación, la clase Factura puede
tener una variable de clase con el IVA que se aplica a las facturas, ya
que este valor es común a todos los objetos de la clase Factura, y no
sería eficiente que cada uno de los objetos de la clase tuviera una
copia.
· Si en una aplicación se quiere contabilizar el número de instancias
que hay de una determinada clase, se puede utilizar una variable de
clase.
Por ejemplo, la clase Ventana de una iterfaz gráfica puede declarar
variables de clase para almacenara el número de ventanas visibles, el
tamaño por omisión y el tamaño máximo de cualquier ventana.
Clases (V)
· Métodos de clase: son métodos que afectan a la clase en sí, y a los
cuales se puede acceder directamente desde la clase en oposición al
acceso a los métodos de instancia, que se realiza siempre a través de
los objetos · Es importante señalar que para invocar un método de
clase no es necesario haber creado ningún objeto que reciba como
mensaje una invocación de ese método.
· Para usar un método de instancia, por el contrario, se necesita
obligatoriamente que se cree un objeto de la clase que reciba el
mensaje de ese método.
· Por ejemplo, en la clase Factura se podrían tener métodos para
consultar y modificar el valor del IVA aplicable a las facturas, ya que
este valor tiene sentido en sí mismo y no está condicionado a la
existencia de objetos de la clase.
Objetos (I)
· Los objetos del mundo real comparten tres características:
· estado o estructura: por ejemplo, en un coche el nº de marchas, la
velocidad actual, la marcha actual, etc...
· comportamiento: por ejemplo, un coche puede arrancar, acelerar,
frenar, cambiar marcha, etc....
· identidad: aquello que distingue a un objeto de todos los demás, por
ejemplo, si la estructura de una persona es su nombre y edad, es
posible que haya dos juanes de 20 años que no son la misma
persona.
· Los objetos software también tienen esas características:
· estado: se almacena en un conjunto de variables.
· comportamiento: se implementa con métodos. Un método es una
función (subrutina, subprograma, procedimiento).
· identidad: garantizada por los sistemas de poo.
Un objeto es una agrupación de variables y métodos distinguible de
todos los demás (identidad propia) desde su creación.
Objetos (II)
· Los objetos software se utilizan para:
· representar objetos del mundo real.
· en un juego de carreras de coches, los coches del mundo real se
podrían
representar mediante objetos software.
· en una aplicación de dibujo, las figuras geométricas (polígonos,
rectas,...)
se podrían representar mediante objetos software.
· en una aplicación de gestión de personal de una empresa, los
trabajadores de la empresa se podrían representar mediante objetos
software.
· representar conceptos abstractos.
· en interfaces gráficas de usuario, es habitual representar con
objetos
(llamados eventos) las acciones realizadas por el usuario (ratón y
teclado).
· en un entorno de simulación e identificación de la estructura
tridimensional de una proteína, las posibles estructuras candidatas
(no se corresponden con ningún objeto real) podrían represantarse
mediante
objetos.
Objetos (III)
· Representación visual de un objeto software.
Variables
(estado) Métodos
(comportamiento)
Mensajes (I)
· Una aplicación orientada a objetos se compone de múltiples
objetos que se comunican mediante mensajes.
· Si un objeto A quiere que un objeto B ejecute uno de sus métodos, el
objeto A le envía un mensaje al objeto B. objeto A objeto B mensaje
· Cada mensaje tiene tres componentes:
· el objeto destinatario del mensaje
· el nombre del método a ejecutar
· los parámetros (si existen) del método
Mensajes (II)
· Por ejemplo, en un juego de ordenador de carreras de coches, cada
piloto se comunica con su coche. piloto coche cambiar marcha (2)
Mensaje con parámetros
piloto coche
arrancar
[1]http://thefricky.wordpress.com/2007/12/28/programacion-
orientada-a-objetos-caracteristicas-de-la-poo/
[2]
http://es.wikipedia.org/wiki/Polimorfismo_(programaci%C3%B3n_orien
tada_a_objetos)
[3] http://www.mastermagazine.info/termino/4880.php
[4] http://www.monografias.com/trabajos/objetos/objetos.shtml
[5]http://www.mentores.net/Default.aspx?type=art&site=81&tabid=1
04&parentid=26
[6]
http://astreo.ii.uam.es/~alfonso/poo_curso_02/conceptos_poo_1.pdf
[7]
http://www.elguille.info/colabora/puntoNET/canchala_FundamentosPO
O.htm
[8] http://apdaza-poo.blogspot.com/2008/04/polimorfismo.html
[9]
http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto.Oct98/1_Intro/1_IntPoo.ht
m
[10]
http://astreo.ii.uam.es/~alfonso/poo_curso_02/conceptos_poo_1.pdf