:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Curso de Java Capitulo 7: Continuación Poo Profesor:
POLIMORFISMO UNIDAD 4.
Herencia en C#.
Fundamentos de la programación orientada a objetos
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Arquitectura CLARO-TECNOTREE
La Programación Orientado a Objetos
Aplicación del paradigma orientado a objetos
Diseño y programación de
PROGRAMACION ORIENTADA A OBJETOS
ORIENTADO A OBJETOS ESTUDIANTE JESSICA LORENA LEAL MEDINA INGENIERIA DE SOFTWARE PROGRAMA INGENIERIA DE SISTEMAS UNIVERSIDA COOPERATIVA DE COLOMBIA NEIVA-HUILA.
DIAGRAMA DE CLASE.
HERENCIA.
Herencia e Interfaces.
Medio de tele-comunicación
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Introducción a Java II.
Lic. Rosemary Torrico Bascopé
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA DOS ORIENTACION A OBJETOS.
Herencia en POO Eliseo Melgarejo Desarrollo de sistemas Udec.
Módulo 7: Programación Orientada a Objetos en Visual Basic 2005.
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2008.
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Programación Orientada a Objetos
Detalles Generales sobre Java
Programación orientada a objetos
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Herencia y Clases Abstractas
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Programación orientada a objetos Capítulo 9 Algo mas sobre herencias.
Análisis y Diseño de Aplicaciones 3º Educación Media Tecnológica
Programación Orientada a Objetos: CLASES Y OBJETOS
Clases “ Es una Abstracción de un elemento del mundo real ”
Herencias Conceptos básicos i
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Prof. Manuel B. Sánchez. La parte ingenieril de un proceso de desarrollo de software, comprende realizar un diseño del sistema antes de empezar a escribir.
II.- ECUACION PATRIMONIAL y ESTADOS FINANCIEROS. INTRODUCCION ¿Cuál es la situación financiera de la compañía en un momento dado?¿Cuál es la situación.
Unidad 6 Polimorfismo.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
 En Java, como en otros lenguajes de programación orientados a objetos, las clases pueden derivar desde otras clases. La clase derivada (la clase que.
Diagrama de clases Silvia Herzovich Rodrigo Aronas Matias Silversteyn.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos.
Clase II Estructuras dinámicas (TAD) Listas Enlazadas. ¿A que llamamos estructuras dinámicas? ¿Por qué son necesarias? Ventajas y Desventajas que tendremos.
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
RELACIONES ENTRE CLASES M.C. YOLANDA MOYAO MARTINEZ.
Herencia y Clases Abstractas Reutilización de código y código genérico ELO329: Diseño y Programación Orientados a Objetos.
Prof. Manuel B. Sánchez.  El origen del término polimorfismo es simple: proviene de las palabras griegas poly (muchos) y morphos (forma) multiforme.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Prof. Manuel B. Sánchez. Es un mecanismo y uno de los pilares de la POO que permite definir nuevas clases a partir de otras preexistentes. La Herencia.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos Fundamentos de Programación Departamento.
Transcripción de la presentación:

:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación

Clases Abstractas Programación I Las clases abstractas se utilizan como superclases en situaciones de herencia, por eso son llamadas superclases abstractas. La finalidad de una clase abstracta es proveer una superclase apropiada de la cual otras clases puedan heredar una interfaz o una implementación.

Clases Abstractas Programación I Hacemos abstracta una clase declarándola con la palabra reservada abstract Para que una clase sea declarada abstracta debe contener al menos un método sin implementación relativa a la clase, esto es, un método sin código. Éstos son llamados métodos abstractos. La implementación de éstos métodos se realiza en las subclases.

Clases Abstractas Programación I Las clases abstractas pueden tener atributos, métodos concretos y constructores, además de métodos abstractos. Es recomendable declarar los atributos y métodos de estas clases protected o private en vez de public porque sólo podrán ser accedidos o invocados por las subclases de la clase abstracta.

Clases Abstractas Programación I public abstract class figura { protected double x; protected double y; public figura(double i, double j) { x = i; y = j; } public abstract void mostrar_area(); } public class triangulo extends figura { public void mostrar_area() { System.out.println(“Area de triangulo=”+(x*y*0.5)); } } public class rectangulo extends figura { public void mostrar_area() { System.out.println(“Area de rectangulo=”+(x*y)); } }

Clases Abstractas Programación I No todos los métodos de una clase abstracta tienen que estar sin implementación, pero con que solamente exista un método abstracto, la clase debe declararse abstracta. public abstract class Figura { public Figura() { } public double area() { return 0.0; } public double volumen() { return 0.0; } public abstract String devolverNombre(); }

Clases Abstractas Programación I Las clases abstractas tienen una característica importante: No se permite instanciar objetos de una clase abstracta. Figura x = new Figura(); //Error La única forma de utilizar una clase abstracta es creando clases hijas que hereden de ella y éstas se encarguen de implementar sus métodos abstractos.

Clases Abstractas Programación I Las subclases de una clase abstracta deben: No se pueden definir constructores abstractos o métodos estáticos abstractos. Sobreescribir todos los métodos abstractos de la superclase, o bien Ser declaradas como clases abstractas

Clases Abstractas Programación I Como ejemplo de este concepto plantearemos el siguiente ejercicio: Un banco requiere un sistema que permita llevar el control de las cuentas abiertas a los clientes. Existen dos tipos de cuenta que pueden ser: Cuenta corriente o Cuenta de ahorros. El sistema debe contar con las siguientes opciones: 1. Crear Cuenta 2. Consultar Cuenta 3. Realizar Transacción 4. Salir Este ejercicio es una modificación del ejercicio de Banco visto como práctica

Clases Abstractas Programación I Este diagrama resuelve los requerimientos del banco pero no establece distinción entre una Cuenta Corriente y una Cuenta de Ahorros. Suponga que el banco tiene un nuevo requerimiento, en el cual exige que cada cuenta lleve el registro de sus transacciones y que además en la Cuenta Corriente solo se permitan las transacciones Depósito y Cobro de Cheque y en la de ahorros se permita únicamente Depósito y Retiro El siguiente diagrama resuelve el problema pero sigue teniendo fallas En primer lugar, el método realizarTransaccion debe hacer un condicional para poder aplicar las restricciones dependiendo del tipo de cuenta. Lo siguiente, es que el método getMonto debe hacer un condicional, ya que para Retiro o Cobro de cheque el monto es negativo y para Deposito el monto es positivo. La situación se agrava si se agregan nuevos tipos de cuenta y/o de transacciones. Lo cual implicaría modificar gran parte del código del sistema. Usando herencia y polimorfismo se logra un modelo más flexible a las modificaciones. Este método en cursiva indica que es abstracto, lo que significa que será implementado en las clases hijas. El nombre de la clase en cursiva indica que es abstracta. Como cada clase “concreta” implementa el método abstracto heredado de la clase base, aplicará sólo las restricciones correspondientes a los objetos de su clase, flexibilizando así el modelo. Se llama clase “concreta” a aquellas clases que no son abstractas Si se agrega un nuevo tipo de Cuenta y/o Transacción, habrá que modificar muy pocas partes del sistema

Ejercicio 17 Programación I 1.Abra en BlueJ el proyecto Banco. 2.Cree un objeto de tipo cuenta de ahorros y otro de tipo Cuenta Corriente. 3.Agregue transacciones de depósito y retiro a ambas cuentas. Observe el resultado. 4.¿Cuáles son las clases concretas del proyecto? 5.¿Qué métodos abstractos tiene la clase Transacción? 6.¿Qué métodos reescribe la clase Cuenta Corriente? 7.Cree un objeto de tipo transacción. ¿Cuál es el resultado?

Ejercicio 17 Programación I 8.Elimine la palabra “abstract” de la definición de la clase Transacción, compile. ¿Porqué cree que se produce ese error? Deshaga los cambios realizados en la clase. 9.Elimine la palabra “abstract” de la definición del método getMonto(), compile. ¿Por qué se produce ese error? Deshaga los cambios realizado en la clase. 10.Invoque el método “main” en la clase Principal y realice varias pruebas en el programa.

Clases Abstractas Programación I El concepto de clase abstracta está ligado completamente al concepto de polimorfismo, de tal forma que si su programa no necesita polimorfismo tampoco necesitará una clase abstracta. Una clase abstracta permite definir acciones comunes para un conjunto de clases, pero las reacciones finales de las clases a cada una de las acciones es diferente. Cuando una clase se define abstracta, no es posible crear instancias de ella, pero puede guardar referencias a los hijos. Un ejemplo de ello es que en todas las Cuentas se realizan Transacciones, pero las restricciones de esas transacciones dependen del tipo de cuenta.

Clases Abstractas Programación I Los métodos que cambian el comportamiento en las clases hijas deben ser declarados como abstractos, y en la mayor parte de los casos no llevan código. La clase abstracta puede tener métodos que no sean abstractos, es decir, su comportamiento es el mismo para las clases heredadas. Una clase abstracta puede tener constructores, que serán llamados desde los constructores de las clases hijas

Ejercicio 18 Programación I 1.Examine el código de las clase del proyecto Banco. 2.El banco desea agregar un tipo de cuenta que registre los pagos de cuotas efectuados por los clientes que tienen préstamo. Cada vez que un cliente desea solicitar un préstamo, el operador del sistema abre una cuenta para el préstamo cuyo saldo inicial es el monto del mismo. Cuando el cliente desea cancelar una cuota, se registra una nueva transacción en la cuenta del préstamo de tipo "pago de cuota". La cuenta de préstamo solo acepta este tipo de transacción. Modifique el programa Banco para agregar esta nueva característica al mismo.

:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Finalización