Programación Orientada a Objetos

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:
Lenguaje de programación Java
Herencia simple y multiple
Arquitectura CLARO-TECNOTREE
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
El proceso de desarrollo de software
El Proceso de desarrollo de software
El proceso de desarrollo de software
Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes.
El proceso de desarrollo de software
La Programación Orientado a Objetos
Tipo de Dato Abstracto Tipos de datos:
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Programación Orientada a Objetos Encapsulamiento.
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
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.
Encapsulamiento y Abstracción
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Programación Orientada a Objetos usando C++
PROGRAMACION ORIENTADA A OBJETOS
Introducción a Java II.
Lic. Rosemary Torrico Bascopé
UNIVERSIDAD TECNOLÓGICA DE HERMOSILLO T.S.U. EN T.I.C., Área: Sistemas Informáticos Ing. José Padilla Duarte y estudiantes de Sistemas Informáticos Hermosillo,
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.
Introducción a la programación Orientada a objetos
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
Fundamentos de Programación
Introducción a la POO • ¿Qué es la programación orientada a objets (POO)? – Un “paradigma” de programación – Una forma de pensar acerca de los problemas.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Material de apoyo Unidad 4 Estructura de datos
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Estructuras.
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.
Introducción a UML DIAGRAMA DE CLASES Departamento de Informática
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Genericidad.
PROGRAMACIÓN ORIENTADA A OBJETOS Unidad 1 GENERICIDAD
Programación orientada a objetos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
DIAGRAMA DE CLASES.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Abstracción.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
ORIENTACIÓN A OBJETOS El paradigma.
Programación Orientada a Objetos: CLASES Y OBJETOS
La Programación Orientado a 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.
Programación Orientada a Objetos Unidad 5. Los objetos son entidades que combinan estado Contiene toda la información denominados atributos REPASO Cada.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
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.
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Transcripción de la presentación:

Programación Orientada a Objetos En los últimos años se ha destinado mucho esfuerzo a desarrollar lenguajes y metodologías que permitan aumentar la calidad y la productividad del software. La productividad implica reducir tiempos y costos en la concepción y construcción de sistemas de software. Uno aspecto importante es mejorar la extensibilidad, es decir la flexibilidad de un sistema de software para adaptarse a cambios en las especificaciones. El otro aspecto clave es la reusabilidad, la posibilidad de aprovechar en la construcción de un nuevo sistema los módulos ya implementados y verificados para otra aplicación. Introducción a la Programación Orientada a Objetos

Programación Orientada a Objetos La programación orientada a objetos propone identificar los objetos relevantes de un problema y caracterizarlos a través de sus atributos y comportamiento. En la etapa de diseño de una aplicación los objetos se agrupan en clases. Los objetos de una misma clase comparten los mismos atributos y comportamiento. En la etapa de implementación de una aplicación el programador escribe el código de un conjunto de clases. Introducción a la Programación Orientada a Objetos

Programación Orientada a Objetos En ejecución cada objeto de software queda asociado a una clase. La clase determina la estructura del estado interno en el cual mantiene los valores de los atributos que lo caracterizan. Cuando un objeto reciba un mensaje brindará un servicio acorde al comportamiento que establece su clase. Introducción a la Programación Orientada a Objetos

Programación Orientada a Objetos La descomposición de un sistema en clases favorece la construcción de software extensible y reusable, pero es insuficiente. Si los cambios en las especificaciones provocan modificaciones en clases ya implementadas y verificadas, va a ser necesario probarlas nuevamente. Dos aplicaciones diferentes difícilmente tengan exactamente los mismos requerimientos. La modificación de una clase que funciona adecuadamente dentro de un sistema, para adaptarla a las necesidades de una nueva aplicación, puede llegar a provocar un efecto no deseado. Introducción a la Programación Orientada a Objetos

Programación Orientada a Objetos Por otra parte la organización de las entidades de un problema en clases también presenta algunas limitaciones. Por lo general cada grupo de objetos relevante en un sistema comparte algunos atributos y comportamiento, pero difiere en otros. Si diseñamos un modelo para todo el grupo de objetos, que incluya a todos los atributos posibles, la caracterización será excesiva y puede no ser significativa. Si en cambio descomponemos el grupo en subgrupos de entidades con exactamente los mismos atributos, tendremos alguna redundancia. Introducción a la Programación Orientada a Objetos

Programación Orientada a Objetos La herencia es un mecanismo que permite organizar una colección de clases a través de una relación de generalización-especialización. Consideremos dos o más clases que comparten algunos atributos y servicios y difieren en otros. Es posible definir una clase base, con los atributos y servicios compartidos y luego extender esa clase base en dos o más clases derivadas. La definición de las clases derivadas incluye solo los atributos y comportamiento específicos, que distinguen a una clase de otra. Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados Una empresa mantiene información referida a sus empleados y clientes, en el primer caso con el objetivo fundamental de liquidar sueldos y en el segundo para mantener el saldo en cuenta corriente que se actualiza a partir de ventas y cobros. El sueldo de un empleado se calcula a partir de su antigüedad en la empresa, su salario básico y la cantidad de hijos. Esto es, al salario básico se le suma $1000 si tiene entre 10 y 15 años de antigüedad y $2000 si tiene más de 15 años de antigüedad. A este valor se le suma un valor dado por cada hijo. Los días de vacaciones se calculan a partir de la antigüedad. Una semana cuando cumple 1 año, 2 semanas cuando cumple 5 años y 3 semanas cuando su antigüedad es mayor a 10 años. Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados Cada empleado tiene un nombre y algunos datos postales como calle, número, teléfono y dirección de correo electrónico, una fecha de ingreso a la empresa, un salario básico y una cantidad de hijos. Durante su permanencia en la empresa pueden modificarse los datos postales, el salario o la cantidad de hijos. Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados Cada cliente tiene un nombre y algunos datos postales como calle, número, teléfono y dirección de correo electrónico, una ciudad, un saldo adeudado, un número de CUIT y una categoría de IVA. El saldo aumenta cada vez que se registra una operación de venta y disminuye con los cobros. Los clientes también pueden tener hijos pero esta información no es relevante para la empresa. Del mismo modo aunque los empleados también viven en una ciudad, todos viven en la misma, de modo que no es necesario representarla como una variable de instancia. Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados El cliente efectúa compras y pagos de facturas. Ninguno de estos servicios tiene significado para un Empleado, así como no tiene sentido calcular el sueldo de un Cliente. En realidad podría darse el caso que un Empleado de la empresa en ocasiones sea Cliente de la misma. En ese caso una misma entidad del problema está cumpliendo dos roles, pertenece a dos clases. El modelo es entonces un poco más complejo, por el momento no nos ocuparemos de este tipo de situaciones. Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados Si agrupamos a empleados y clientes en una única clase, por ejemplo, Persona, los atributos podrían ser: Persona <<atributos de instancia>> nombre … calleNro telefono email ciudad fechaIngreso salarioBasico cantHijos saldo cuit cateIva Introducción a la Programación Orientada a Objetos

Si definimos un modelo para cada grupo de entidades: Caso de Estudio: Clientes y Empleados Si definimos un modelo para cada grupo de entidades: Empleado Cliente <<atributos de instancia>> nombre … calleNro telefono email fechaIngreso salarioBasico cantHijos <<atributos de instancia>> nombre … calleNro telefono email ciudad saldo cuit cateIva Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados La primera alternativa no es adecuada porque el modelo incluye más atributos y comportamiento que el que realmente caracteriza a un empleado o cliente específico. La segunda alternativa tiene redundancia, parte de los atributos y del comportamiento se repite en las dos clases. Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados Persona Cliente Empleado Un modelo más adecuado consistiría en factorizar los atributos y comportamiento compartidos de Cliente y Empleado en una clase general y retener los atributos y comportamientos específicos en clases especializadas. Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados La programación orientada a objetos permite relacionar clases usando el mecanismo de herencia. La organización es jerárquica, las clases de los niveles superiores son más generales y las de los niveles inferiores más específicas. Una instancia de Cliente es también un objeto de la clase Persona. Un objeto de la clase Cliente está caracterizada por los atributos y servicios de cualquier objeto de clase Persona pero además tiene otros atributos y/o servicios específicos. Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados Persona <<atributos de instancia>> nombre : String calleNro : String telefono : String email : String <<Constructores>> Persona() Persona(nom : String) Persona(nom:String,cn:String, t:String,e:String) Inicializa todos los atributos con cadenas nulas Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados Persona <<atributos de instancia>> nombre : String calleNro : String telefono : String email : String <<Constructores>> … <<Comandos>> establecerCalleNro (d: String)… <<Consultas>> obtenerCalleNro () : String Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados <<atributos de instancia>> saldo : real ciudad : String CUIT : String cateIVA :char <<Constructores>> Cliente() Cliente (nom : String) Cliente(nom:String,cn:String, t:String,e:String, s:real,c:String, cu:String,ci:char) Inicializa saldo en 0, ciudad con “Bahía Blanca” CUIT con 12 espacios y categoría de IVA con“I” Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados <<atributos de instancia>> saldo : real ciudad : String CUIT : String cateIVA :char <<Constructores>> … <<Comandos>> registrarVenta ( m : real) registrarCobro (m:real) <<Consultas>> obtenerSaldo () : real Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados <<atributos de instancia>> basico : real cantHijos : entero fechaIngreso : Fecha <<Constructores>> Empleado() Empleado(nom : String) Empleado(nom:String,cn:String, t:String,e:String, b: real,ch:entero, fi : Fecha) Inicializa básico en 1000, cantHijos en 0 y fechaIngreso en 1/1/2005 Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados Retorna verdadero si el empleado que recibe el mensaje es más antiguo que el argumento <<atributos de instancia>> basico : real cantHijos : entero fechaIngreso : Fecha <<Constructores>>… <<Comandos>> establecerBasico (sb :real ) aumentarBasico (a: real )… <<Consultas>> masAntiguo(e :Empleado ) : booleano obtenerBasico () : real sueldoNeto (mh: real) : real diasVacaciones () : entero Al salario básico se le suma $5000 si tiene entre 10 y 15 años de antigüedad y $2000 si tiene más de 15 años de antigüedad. A este valor se le suma $h por cada hijo. Una semana cuando cumple 1 año, 2 semanas cuando cumple 5 años y 3 semanas cuando su antigüedad es mayor a 10 años. Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados Persona <<atributos de instancia>> … <<Constructores>> <<Comandos>> establecerCalleNro (d: String) <<Consultas>> obtenerCalleNro () : String Cliente Empleado <<atributos de instancia>> basico : real cantHijos : entero fechaIngreso : Fecha <<Constructores>>… <<Comandos>> establecerBasico (real sb) aumentarBasico (real a)… <<Consultas>> masAntiguo(Empleado e) : booleano obtenerBasico () : real sueldoNeto (mh : entero) : real diasVacaciones () : entero <<atributos de instancia>> saldo : real ciudad : String CUIT : String cateIVA :char <<Constructores>> <<Comandos>> registrarVenta ( m : real) registrarCobro (m:real) <<Consultas>> obtenerSaldo () : real Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados La clase Cliente está vinculada a la clase Persona por una relación de herencia. La relación de herencia establece una relación de tipo es-un (isa) ya que todo objeto de clase Cliente es también un objeto de clase Persona. Un objeto de clase Cliente estará caracterizado por todos los atributos y el comportamiento propio de la clase, pero además por todos los atributos y el comportamiento de la clase Persona. Análogamente entre la clase Empleado y la clase Persona existe una relación de tipo es-un. Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados Las clases Cliente y Empleado especializan a la clase Persona. Cliente y Empleado son subclases o clase derivadas de la superclase o clase base Persona. Las instancias de una clase Empleado son también instancias de la clase Persona, de modo que heredan sus atributos y métodos. El acceso a los atributos y servicios de una clase desde sus clases derivadas depende del nivel de encapsulamiento. Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados La clase Empleado hereda de la clase Persona todas las variables de clase, de instancia y métodos. nombre calleNro telefono email basico cantHijos fechaingreso Un objeto de clase Empleado tiene todos los atributos de una Persona más los específicos de su clase. Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados class gestionEmpresa{ Empleado e; e = new Empleado (…); String nom = e.obtenerNombre(); int c = e.obtenerCantHijos(); } Un objeto de clase Empleado puede recibir todos los mensajes válidos para los objetos de clase Persona más los específicos de su clase. Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados La clase Cliente hereda de la clase Persona todas las variables de clase, de instancia y métodos. nombre calleNro telefono email saldo ciudad CUIT cateIva Un objeto de clase Cliente tiene todos los atributos de una Persona más los específicos de su clase. Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados class Persona { //Atributos de instancia protected String nombre; protected String calleNro; protected String telefono; protected String email; … } Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados //Constructores public Persona(){ nombre = new String(); calleNro = new String(); telefono = new String(); email = new String(); } public Persona (String nom){ nombre = nom; calleNro = new String(); telefono = new String(); email = new String(); } public Persona (String nom, String cn, String tel, String em){ nombre = nom; calleNro = cn; telefono = tel; email = em; } Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados class Empleado extends Persona { //Atributos de instancia protected float basico; protected Fecha fechaIng; protected int hijos; … } Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados //Constructores public Empleado(){ super(); basico = 5000; cantHijos = 0; fechaIngreso = new Fecha(1,1,2005); } //Constructores public Empleado(String nom){ super(nom); basico = 5000; cantHijos = 0; fechaIngreso = new Fecha(1,1,2005); } Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados public Empleado(String nom, String cn, String te, String em, float sb, int ch, Fecha f ){ super(nom,cn,te,em); basico = sb; cantHijos = ch; fechaIngreso = f; } Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados class Persona { public String toString (){ return nombre+” “+calleNro+” “+ telefono+” “+email; } class Empleado extends Persona { public String toString (){ return nombre+” “+calleNro+” “+ telefono+” “+email+” “+basico+ ” “ + cantHijos+fechaIngreso.toString(); } El método toString() de la clase Empleado redefine al método toString() de la clase persona, Introducción a la Programación Orientada a Objetos

Caso de Estudio: Clientes y Empleados class Empleado extends Persona { public String toString (){ String cad = super.toString(); return cad+” “+ basico+” “+cantHijos+” “+ fechaIngreso.toString(); } El método más específico puede invocar al más general usando super. Si la clase Persona se modifica para agregar un atributo DNI, el cambio no requiere modificar el método toString() en Empleado. Introducción a la Programación Orientada a Objetos

Java: An Introduction to Problem Solving & Programming Walter Savitch Bibliografía Java: An Introduction to Problem Solving & Programming Walter Savitch Fourth Edition Capítulo 7 Fifth Edition Chapter 8 Introducción a la Programación Orientada a Objetos