Download Diapositiva 1 - Docencia FCA-UNAM

Document related concepts

Polimorfismo (informática) wikipedia , lookup

Scala (lenguaje de programación) wikipedia , lookup

Common Lisp Object System wikipedia , lookup

Common Lisp wikipedia , lookup

Objeto inmutable wikipedia , lookup

Transcript
UNIVERSIDAD LATINA (UNILA)
ENCAPSULACION Y HERENCIA
LE, EI, Profesor Ramón Castro Liceaga
Introducción
• La programación orientada a objetos también
nos permite proteger a la información a través
del encapsulamiento
Que es encapsulamiento
• Se denomina encapsulamiento al
ocultamiento del estado, es decir, de los datos
miembro, de un objeto de manera que sólo se
puede cambiar mediante las operaciones
definidas para ese objeto.
Servicios prestados
• Se trata de proteger los datos en una clase. La
encapsulación se basa en la noción de
servicios prestados.
Niveles de encapsulado
• Java proporciona varios niveles de
encapsulado. La granularidad de la protección
es para el método o el atributo. Así, tal
atributo podrá ser protegido, mientras que
otro no lo será.
Protección de variables y métodos: accesos
• Para implementar el encapsulamiento de las clases Java
utilizan:
public Si un método o variable se define así, será
accesible para cualquier otra clase (cualquiera accesarla)
package Solo el que especifique el paquete de clases de
que trate
private Solo son visibles en la propia clase
protected Publico para sus clases derivadas únicamente
Estos son especificadores de acceso preceden a las
definiciones de las clases
Herencia
• La herencia es una de las nociones mas
importantes del diseño y de la programación
orientada a objetos. Es uno de los factores que
permiten la reutilización del código.
Que es la herencia
• Como su nombre lo indica es la capacidad de heredar las
capacidades, funcionalidad y características entre las clases
• La Herencia es el mecanismo por el que se crean nuevos
objetos definidos en términos de objetos ya existentes.
Por ejemplo, si se tiene la clase Ave, se puede crear la subclase
Pato, que es una especialización de Ave.
class Pato extends Ave {
int numero_de_patas;
}
Palabra clave extends (extiende a..)
• La herencia es una relación entre clases
definida por la palabra clave extends. Si se
dice que una clase Hija, hereda de una clase
Madre, quiere decir que éste asimila los
atributos y métodos del Madre y que un
objeto de la clase Hija es también de la clase
Madre. Esto último, no es recíproco, es decir,
un objeto de la clase Madre no lo es de la
clase Hija.
Propósitos de la herencia
La herencia, tiene el propósito de:
• Compatir el código, el cual permite una
economía de compilación, de disco duro....
• Mantenimiento en el código, cualquier
modificación en la clase Madre repercute
automáticamente sobre la clase Hija.
La herencia permite heredar las propiedades y
las características entre clases
Herencia y subclase
• La clase que hereda, llamada también
subclase, retoma los atributos y los métodos
de la superclase.
Pero puede:
· añadirles nuevos atributos y métodos.
· redifinir los métodos.
Herencia y abstracción
La herencia, además, permite capturar nuevas formas
de abstracción, es decir, gracias a ésta, se puede
expresar formalmente ideas que provienen del nivel
de diseño.
Herencia y redefinición de métodos
• Cuando se hace heredar una clase de otra, se
pueden redefinir ciertos métodos con la
intención de modificarlos o mejorarlos. El
método lleva el mismo nombre y la misma
sintaxis, pero sólo se aplica a los objetos de la
subclase o a sus descendientes.
Que entendemos por Herencia Simple
• Si una clase hereda de la otra, lo que hereda
son todos sus atributos y metodos. Ademas de
heredarlos puede sobreescribirlos, tanto los
constructores-destructores como los metodos
convencionales.
• En la herencia simple se pueden heredar estos
comportamientos y características solo de una
superclase
• .
Java y la Herencia Simple
• Un ejemplo de Herencia Simple es la
estructura es el propio lenguaje Java
• Java está completamente orientado a objetos
bajo el concepto de la Herencia.
La superclase de Java
• La clase Object es la superclase de Java
Principales clases de Java
• El paquete Java java.lang contiene clases
fundamentales e interfaces fuertemente
relacionadas con el lenguaje y el sistema
runtime
En resumen
• La Herencia Simple consiste en heredar
comportamientos y características de una
SuperClase en el caso de Java es Object
Que entendemos por Herencia Múltiple
• Herencia múltiple hace referencia a una
característica de los lenguajes de
programación orientada a objetos en la que
una clase puede heredar comportamientos y
características de más de una superclase..
Java y la Herencia Multiple
• En Java no existe la herencia múltiple. El
motivo es que definir una herencia múltiple
presenta numerosos problemas.
Java y la Herencia Multiple
Se presentan los siguientes problemas:
Lenguajes que soportan Herencia Multiple
• Lenguajes que soportan herencia múltiple en
su mayor parte son: C++, Centura SQL
Windows, CLOS, Eiffel, Object REXX, Perl y
Python.
Discusión sobre Herencia Simple y Multiple
• Hay debate sobre si la herencia múltiple
puede ser implementada de forma simple y
sin ambigüedad. Con frecuencia es criticada
por su aumentada complejidad y su
ambigüedad, así como los problemas de
versiones y mantenimiento que puede causar
Conclusión
• La Herencia Multiple consiste en heredar
comportamientos y características de mas de
una SuperClase, esta funcionabilidad no la
tienen todos los lenguajes de programación
orientados a objetos