Documentos de Académico
Documentos de Profesional
Documentos de Cultura
JoenglisMolero Reto4 434206 272
JoenglisMolero Reto4 434206 272
Presentado a:
Entregado por:
Jonathan Echavarria
Código:
Grupo:
Cali
-Herencia y Polimorfismo
La herencia es un mecanismo que sirve para reutilizar clases, se utiliza cuando existen clases
que comparten muchas de sus características, se extiende la funcionalidad de clases más genérica
Como podemos ver este ejemplo tenemos la superclase persona y abajo dos clases que son
cliente y empleado (subclases), por un lado la clase cliente y empleado tenían propiedades que
eran comunes lo cual eran nombres, apellidos, documentos, tipo para que de esta manera la clase
persona van a heredar todas estas propiedades tanto la clase cliente como la clase empleado,
como pueden evidenciar la clase persona no tiene ningún método, si lo tuviera, estos métodos
van hacer heredados por la clase cliente como por la clase empleado.
La herencia es una técnica de abstracción que nos permite agrupar objetos con características
comunes. Todas las aplicaciones Java usan herencia, aunque no lo hagan de forma explícita. Esto
es así porque cuando creamos una clase sin ninguna referencia a una superclase, el propio
compilador inserta en la clase creada una relación de herencia directa con la la clase
java.lang.Object. Por este motivo todos los objetos, sean de la clase que sean, pueden invocar
Polimorfismo
clases diferentes que tienen métodos o atributos denominados de forma idéntica, pero que se
como a tipos de datos. Así nacen los conceptos de funciones polimórficas y tipos polimórficos.
Las primeras son aquellas funciones que pueden evaluarse o ser aplicadas a diferentes tipos de
datos de forma indistinta; los tipos polimórficos, por su parte, son aquellos tipos de datos que
Polimorfismo de sobrecarga
El polimorfismo de sobrecarga ocurre cuando las funciones del mismo nombre existen, con
funcionalidad similar, en clases que son completamente independientes una de otra (éstas no
tienen que ser clases secundarias de la clase objeto). Por ejemplo, la clase complex, la clase
image y la clase link pueden todas tener la función "display". Esto significa que no necesitamos
preocuparnos sobre el tipo de objeto con el que estamos trabajando si todo lo que deseamos es
verlo en la pantalla.
comportamientos varían de acuerdo a los parámetros que se les aplican. Así es posible, por
ejemplo, agregar el operador + y hacer que se comporte de manera distinta cuando está haciendo
referencia a una operación entre dos números enteros (suma) o bien cuando se encuentra entre
misma llamada.
En cambio, todos son animales y pos tanto podrían heredar el método mover de dicha clase,
gracias al polimorfismo, cada objeto concreto realizaría la operación mover como corresponda.
Polimorfismo quiere decir "un objeto y muchas formas". Esta propiedad permite que un
objeto presente diferentes comportamientos en función del contexto en que se encuentre. Por
que recibe, recibir diferentes números de parámetros para realizar una misma operación, y
realizar diferentes acciones dependiendo del nivel de abstracción en que sea llamado.
Los objetos de distintas clases pertenecientes a una misma jerarquía o que implementan una
misma interface pueden tratarse de una forma general e individualizada, al mismo tiempo.
El poder utilizar nombres de una super-clase o de una interface permite tratar de un modo
unificado objetos distintos, aunque pertenecientes a distintas sub-clases o bien a clases que
El polimorfismo permite a los programadores separar las cosas que cambian de las que no
los programas.
e interfaces.
El polimorfismo está basado en utilizar referencias de un tipo más “amplio” que los objetos a
los que apuntan. Las ventajas del polimorfismo son evidentes, pero hay una importante
limitación: el tipo de la referencia (clase abstracta, clase base o interface) limita los métodos que
HERENCIA MÚLTIPLE
orientada a objetos en la que una clase puede heredar comportamientos y características de más
de una superclase. Esto contrasta con la herencia simple, donde una clase sólo puede heredar de
una superclase.
Lenguajes que soportan herencia múltiple en su mayor parte son: C++, Centura SQL
a una clase llamada MusicoEstudiante heredar de una clase llamada Persona, una clase llamada
Músico, y una clase llamada Trabajador. Esto puede ser abreviado como MusicoEstudiante :
La herencia simple es la más típica, la que se puede encontrar en cualquier lenguaje moderno
La herencia simple es una relación entre una clase padre (clase base) y una clase hija (clase
derivada) llamada "es un tipo de", que muchas veces se abrevia como isA.
La herencia es simple cuando la clase derivada que estamos considerando sólo tiene una clase
base.
Herencia Simple
La herencia simple se apoya en el uso de clases base para compartir sus atributos y
comportamientos con otras clases derivadas como los siguientes ejemplos el objeto Supervisor y
el objeto Obrero.
La herencia simple consiste en cuando una clase, hereda a una clase hijo, y a solo una le
hereda sus atributos, es igual al concepto general de herencia, con la limitante de solo poder
heredar de una clase padre a una clase hijo, y solo a una clase hijo
Herencia de Interfaz
Sólo se hereda la interfaz, no hay implementación a nivel de clase base (interfaces en Java,
Entre las interfaces existe una jerarquía (independiente de la de las clases) que permite
herencia simple y múltiple. Cuando una interface deriva de otra, incluye todas sus constantes y
declaraciones de métodos.
Una interface puede derivar de varias interfaces. Para la herencia de interfaces se utiliza así
mismo la palabra extends, seguida por el nombre de las interfaces de las que deriva, separadas
por comas.
Una interface puede ocultar una constante definida en una super-interface definiendo otra
constante con el mismo nombre. De la misma forma puede ocultar, re-declarándolo de nuevo, la
Las interfaces no deberían ser modificadas más que en caso de extrema necesidad. Si se
modifican, por ejemplo añadiendo alguna nueva declaración de un método, las clases que hayan
implementado dicha interface dejarán de funcionar, a menos que implementen el nuevo método.
Herencia de implementación
Habilidad para que una clase herede parte o toda su implementación de otra lase, debe
Esta tensión está en la base de su poder, y también de los problemas asociados con su
uso.
En general, la redefinición de métodos sólo debería usarse para hacer las propiedades
más específicas
Constreñir restricciones
Extender funcionalidad
Especialización
no modifica nada
Especificación
No todo lo de la clase base sirve a la derivada, hay que redefinir ciertos métodos para eliminar
no puede volar)
Generalización
• Se extiende el comportamiento de la clase base para obtener un tipo de objeto más general.
INCORRECTA!!!!
objetos de una clase de responder al mismo mensaje o evento en función de los parámetros
utilizados durante su invocación. Un objeto polimórfico es una entidad que puede contener
parámetros’ ya que las características de los objetos permiten aceptar distintos parámetros para
Function suma(int numero1,int numero2) ‘ este método devuelve la suma de los 3 parámetros
Function suma(int numero1,int numero2, int numero3) ‘ este método devuelve la concatenación
Sobrecarga
la sobrecarga se refiere a la posibilidad de tener dos o más funciones con el mismo nombre
pero funcionalidad diferente. Es decir, dos o más funciones con el mismo nombre realizan
acciones diferentes. El compilador usará una u otra dependiendo de los parámetros usados. A
También existe la sobrecarga de operadores que al igual que con la sobrecarga de funciones se
parámetros.
Sobrecarga de métodos
Algunos métodos en una clase pueden tener el mismo nombre. Estos métodos deben contar
con diferentes argumentos. El compilador decide qué método invocar comparando los
argumentos. Se generara un error si los métodos tienen definidos los mismos parámetros.
Ejemplo:
Sobrecarga de Operadores.
En otras palabras, permite asignar una o más funciones adicionales a un operador estándar,
con el fin de que ésta sea llamada según el contexto en el cual se utilice el operador.
especial operador.
Una función operador es una función cuyo nombre consta de la palabra reservada operator
parámetros)
Donde:
tipo de dato: indica el tipo de dato que produce el operador sobrecargado, por lo general
es la referencia del objeto y es lo que se retornará.
operator: es una palabra reservada utilizada para realizar la sobrecarga.
Operador a sobrecargar: operador que estamos sobrecargando.
Lista de parámetros: es la lista de objetos (en referencia) o variables que se procesarán en
la sobrecarga.
Polimorfismo en jerarquías de herencia
coincidencia más cercana en ese ámbito será la seleccionada para resolver la llamada.
class Padre{
};
int main(){
Hija h;
h.ejemplo(3); // OK en Java
return (0);
En la clase base si los dos métodos tienen el mismo nombre, la misma signatura de tipos y
enlace dinámico.
Variables Polimórficas
Una variable polimórfica es aquélla que puede referenciar más de un tipo de objeto
Figura2D img; // Puntero a clase base polimórfica que en realidad apuntará a objetos de
clases derivadas (Circulos, Cuadrados,...)
Variables receptoras: this y super
En un método, hacen referencia al receptor del mensaje.
En cada clase representan un objeto de un tipo distinto.
(en otros lenguajes recibe otros nombres, como ‘self’)
Downcasting (polimorfismo inverso):
Downcasting dinámico
// Downcasting no seguro
y.g();
class MiClase {}
https://www.youtube.com/watch?v=Z0yLerU0g-Q
diagrama de herencia
public Modelo_persona() {
String tipo_documento, String num_documento, String direccion, String telefono, String email) {
this.idpersona = idpersona;
this.nombre = nombre;
this.apaterno = apaterno;
this.amaterno = amaterno;
this.tipo_documento = tipo_documento;
this.num_documento = num_documento;
this.direccion = direccion;
this.telefono = telefono;
this.email = email;
return idpersona;
this.idpersona = idpersona;
return nombre;
this.nombre = nombre;
}
return apaterno;
this.apaterno = apaterno;
return amaterno;
this.amaterno = amaterno;
return tipo_documento;
this.tipo_documento = tipo_documento;
}
return num_documento;
this.num_documento = num_documento;
return direccion;
this.direccion = direccion;
return telefono;
this.telefono = telefono;
}
return email;
this.email = email;
SUBCLASE - VIGILANTE
public Modelo_vigilante() {
this.codigo_vigilante = codigo_vigilante;
this.codigo_vigilante = codigo_vigilante;
SUBCLASE – USUARIO
String acceso;
String login;
String password;
String estado;
public Modelo_usuario() {
//Creamos el constructor
public Modelo_usuario(String acceso, String login, String password, String estado) {
this.acceso = acceso;
this.login = login;
this.password = password;
this.estado = estado;
return acceso;
this.acceso = acceso;
this.login = login;
return password;
this.password = password;
return estado;
this.estado = estado;
}
PATRÓN DE DISEÑO MVS (MODELO VISTA CONTROLADOR)
Para este proyecto se utilizó el patrón de diseño MVC lo cual consta de 3 capas
Modelo Vista Controlador (MVC) es un estilo de arquitectura de software que separa los
distintos.
Se trata de un modelo muy maduro y que ha demostrado su validez a lo largo de los años en
El Modelo que contiene una representación de los datos que maneja el sistema, su lógica de
El Controlador, que actúa como intermediario entre el Modelo y la Vista, gestionando el flujo
de información entre ellos y las transformaciones para adaptar los datos a las necesidades de
cada uno.
Define las reglas de negocio (la funcionalidad del sistema). Un ejemplo de regla puede ser:
"Si la mercancía pedida no está en el almacén, consultar el tiempo de entrega estándar del
proveedor".
Si estamos ante un modelo activo, notificará a las vistas los cambios que en los datos pueda
producir un agente externo (por ejemplo, un fichero por lotes que actualiza los datos, un
Recibe los eventos de entrada (un clic, un cambio en un campo de texto, etc.).
Contiene reglas de gestión de eventos, del tipo "SI Evento Z, entonces Acción W". Estas
acciones pueden suponer peticiones al modelo o a las vistas. Una de estas peticiones a las vistas
puede ser una llamada al método "Actualizar ()". Una petición al modelo puede ser
Pueden dar el servicio de "Actualización ()", para que sea invocado por el controlador o por el
modelo (cuando es un modelo activo que informa de los cambios en los datos producidos por
otros agentes).
El flujo que sigue el control generalmente es el siguiente:
Este patrón es uno de los más usados, en la actualidad se puede encontrar tanto en pequeños
más pronto posible, para que en un futuro con sistemas más complejos no tengas ningún
inconveniente.