La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación Orientada a Objetos

Presentaciones similares


Presentación del tema: "Programación Orientada a Objetos"— Transcripción de la presentación:

1 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

2 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

3 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

4 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

5 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

6 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

7 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

8 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

9 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

10 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

11 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 ciudad fechaIngreso salarioBasico cantHijos saldo cuit cateIva Introducción a la Programación Orientada a Objetos

12 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 fechaIngreso salarioBasico cantHijos <<atributos de instancia>> nombre … calleNro telefono ciudad saldo cuit cateIva Introducción a la Programación Orientada a Objetos

13 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

14 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

15 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

16 Caso de Estudio: Clientes y Empleados
Persona <<atributos de instancia>> nombre : String calleNro : String telefono : String 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

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

18 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

19 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

20 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

21 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

22 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

23 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

24 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

25 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 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

26 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

27 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 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

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

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

30 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

31 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

32 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

33 Caso de Estudio: Clientes y Empleados
class Persona { public String toString (){ return nombre+” “+calleNro+” “+ telefono+” “+ ; } class Empleado extends Persona { public String toString (){ return nombre+” “+calleNro+” “+ telefono+” “+ +” “+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

34 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

35 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


Descargar ppt "Programación Orientada a Objetos"

Presentaciones similares


Anuncios Google