La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS

Presentaciones similares


Presentación del tema: "INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS"— Transcripción de la presentación:

1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Herencia Dr. Luciano H. Tamargo Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca 2017

2 TEMARIO Paradigma de programación. Herencia.
Caso de estudio: clientes y empleados. Introducción a la Programación Orientada a Objetos IPOO

3 PARADIGMA DE PROGRAMACIÓN
El desarrollo de un sistema de software es un proceso de abstracción a partir del cual se construye un modelo de la solución de un problema y de su solución. En los problemas de mediana y gran escala la construcción del modelo requiere: creatividad, capacidad de abstracción y de un paradigma. Introducción a la Programación Orientada a Objetos IPOO

4 PARADIGMA DE PROGRAMACIÓN
Un paradigma de programación es una guía que orienta el proceso de desarrollo de software y brinda: Un principio que describe propiedades generales que se aplican a todo el proceso de desarrollo. Una metodología que consta de un conjunto integrado de métodos, estrategias y técnicas. Un conjunto de herramientas en particular lenguajes de modelado y el lenguajes de programación. Introducción a la Programación Orientada a Objetos IPOO

5 PARADIGMA PROCEDURAL En el paradigma procedural un sistema de software está conformado por una colección de subprogramas. Cada subprograma resuelve un subproblema de un problema global. Así, la resolución de un problema es atacada aplicando la estrategia dividir para conquistar, durante la etapa de diseño. La división se basa en las acciones, que se agrupan en subprogramas que se comunican a través de parámetros. Introducción a la Programación Orientada a Objetos IPOO

6 PARADIGMA PROCEDURAL El paradigma procedural es adecuado para resolver problemas de pequeña o mediana escala, con requerimientos más o menos estables. Para los problemas que demandan soluciones flexibles, con capacidad para adaptarse rápidamente a los cambios que ocurren en entornos dinámicos, el paradigma procedural y los lenguaje imperativos, no son una buena elección. Introducción a la Programación Orientada a Objetos IPOO

7 PROGRAMACIÓN ORIENTADA A OBJETOS
La programación orientada a objetos propone identificar durante el desarrollo de requerimientos los objetos del problema, caracterizarlos a través de sus principales atributos y agruparlos en clases. En la etapa de diseño del sistema se completa la especificación de las clases modelando el comportamiento de los objetos. El resultado de un diseño orientado a objetos incluye un diagrama de clases escrito en un lenguaje de modelado. El diagrama especifica la colección de clases y sus relaciones. Introducción a la Programación Orientada a Objetos IPOO

8 PROGRAMACIÓN ORIENTADA A OBJETOS
Durante la implementación del sistema se escribe el código de cada clase en un lenguaje de programación, manteniendo las relaciones especificadas en el diagrama de clases. En ejecución cada uno de los objetos del problema quedará asociado a un objeto de software. Cada objeto de software tiene un estado interno y cuando recibe un mensaje actúa de acuerdo al comportamiento definido por su clase. Una clase puede pensarse como un tipo de dato a partir del cual se declaran variables y se crean objetos. Introducción a la Programación Orientada a Objetos IPOO

9 PROBLEMAS Y SOLUCIONES
SOLUCIÓN Proceso de abstracción Principio POO: desarrollar software a partir de las entidades de un modelo de la realidad. Sigue siendo válida la estrategia de Dividir y Conquistar.

10 DISEÑO DE UN SISTEMA: DIVIDIR Y CONQUISTAR
IMPLEMENTACIÓN Subproblema 1 Módulo 1 PROBLEMA PROGRAMA Subproblema 2 Módulo 2 Subproblema 3 Módulo 3 Introducción a la Programación Orientada a Objetos IPOO

11 DISEÑO DE UN SISTEMA: DIVIDIR Y CONQUISTAR EN BASE A LAS ACCIONES
IMPLEMENTACIÓN Internar Internar HOSPITAL SISTEMA HOSPITAL Controlar Signos Vitales Controlar Signos Vitales Operar Operar Introducción a la Programación Orientada a Objetos IPOO

12 DISEÑO DE UN SISTEMA: DIVIDIR Y CONQUISTAR EN BASE A LOS OBJETOS
IMPLEMENTACIÓN Paciente Paciente Médico Médico HOSPITAL SISTEMA HOSPITAL Internación Internación Signos Vitales Signos Vitales

13 TEMARIO Paradigma de programación. Herencia.
Caso de estudio: signos vitales. Caso de estudio: clientes y empleados. Introducción a la Programación Orientada a Objetos IPOO

14 HERENCIA El proceso de clasificación realizado en un diseño orientado a objetos se organiza en niveles. En el primer nivel los objetos se agrupan en clases de acuerdo a sus atributos y comportamientos. En el segundo nivel del proceso de clasificación las clases se estructuran a través de un mecanismo de especialización-generalización llamado herencia. La herencia favorece la reusabilidad y la extensibilidad del software. Introducción a la Programación Orientada a Objetos IPOO

15 TEMARIO Paradigma de programación. Herencia.
Caso de estudio: signos vitales. Caso de estudio: clientes y empleados. Introducción a la Programación Orientada a Objetos IPOO

16 CASO DE ESTUDIO: Signos Vitales Diabetes
El control de signos vitales de un paciente con diabetes requiere controlar el nivel del glucosa y alertar acerca de estados de hipoglucemia o hiperglucemia. Un paciente con diagnóstico de diabetes está en alerta si hay alerta en los signos vitales como cualquier paciente o hay alerta de hipoglucemia o de hiperglucemia. Se consideran valores normales entre 70 y 110 mg/dl, por debajo de 70 es necesario considerar un cuadro de hipoglucemia. Por encima de 110 hay riesgo de hiperglucemia. El modelo puede extenderse agregando una clase SignosVitalesDiabetes que especialice a la clase SignosVitales. Introducción a la Programación Orientada a Objetos IPOO

17 CASO DE ESTUDIO: Signos Vitales Diabetes
<<Atributos de clase>> umbralMin, umbralMax: real <<Atributos de instancia>> glucemia: real <<Constructor>> SignosVitalesDiabetes(t: real, p: PresionArterial,g: real) <<Consultas>> obtenerGlucemia(): real alarmaHipo(): boolean alarmaHiper(): boolean alarma(): boolean SignosVitales <<Atributos de clase>> umbralTemp: real <<Atributos de instancia>> temperatura: real presion: PresionArterial <<Constructor>> SignosVitales(t: real,p: PresionArterial) <<Consultas>> obtenerTemperatura(): real obtenerPresion(): PresionArterial alarma(): boolean Requiere temperatura > 0, expresada en grados.

18 CASO DE ESTUDIO: Signos Vitales Diabetes
PresionArterial SignosVitales SignosVitalesDiabetes

19 TEMARIO Paradigma de programación. Herencia.
Caso de estudio: signos vitales. Caso de estudio: clientes y empleados. Introducción a la Programación Orientada a Objetos IPOO

20 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 IPOO

21 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 IPOO

22 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. Todos los empleados viven en la misma ciudad, de modo que no es necesario representarla como una variable de instancia. Introducción a la Programación Orientada a Objetos IPOO

23 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 IPOO

24 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

25 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
Si definimos un modelo para cada grupo de entidades: Empleado <<atributos de instancia>> nombre … calleNro telefono fechaIngreso salarioBasico cantHijos Cliente <<atributos de instancia>> nombre … calleNro telefono ciudad saldo cuit cateIva Introducción a la Programación Orientada a Objetos IPOO

26 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 IPOO

27 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
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. Persona Cliente Empleado Introducción a la Programación Orientada a Objetos IPOO

28 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
Las clases Cliente y Empleado se vinculan con la clase Persona a través de un relación de herencia. La organización es jerárquica, la clase Persona es más general y las clases Cliente y Empleado son más específicas. La colección de clases se dibuja como un árbol, las clases generales ocupan los niveles superiores y las clases más específicas ocupan los niveles inferiores. En Java la clase más general es Object. Todas las clases que implementamos heredan implícitamente de Object. Introducción a la Programación Orientada a Objetos IPOO

29 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 IPOO

30 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 IPOO

31 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 IPOO

32 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 IPOO

33 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 5000, cantHijos en 0 y fechaIngreso en 1/1/2005 Introducción a la Programación Orientada a Objetos IPOO

34 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
<<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 Retorna verdadero si el empleado que recibe el mensaje es más antiguo que el argumento 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 $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.

35 Persona Cliente Empleado <<atributos de instancia>> …
<<Constructores>> <<Comandos>> establecerCalleNro (d: String) <<Consultas>> obtenerCalleNro () : String Cliente Empleado <<atributos de instancia>> saldo : real ciudad : String CUIT : String cateIVA :char <<Constructores>> <<Comandos>> registrarVenta ( m : real) registrarCobro (m:real) <<Consultas>> obtenerSaldo () : real <<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

36 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
Las clases Cliente y Empleado especializan a la clase Persona. Alternativamente podemos decir que Persona generaliza a las clases Cliente y Empleado. Cliente y Empleado son subclases o clase derivadas de la superclase o clase base Persona. 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 IPOO

37 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
class Persona { //Atributos de instancia protected String nombre; protected String calleNro; protected String telefono; protected String ; … } Las clases derivadas de la clase Persona acceden a sus constructores usando el comando super(). Si un constructor usa el constructor de la clase base, la instrucción super() debe ser la primera del bloque.

38 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(); } Introducción a la Programación Orientada a Objetos IPOO

39 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
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 IPOO

40 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 IPOO

41 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
//Constructores public Empleado(){ super(); basico = 5000; cantHijos = 0; fechaIngreso = new Fecha(1,1,2005);} 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 IPOO

42 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 IPOO

43 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
La clase Empleado hereda de la clase Persona todas las variables de clase, de instancia y métodos. Un objeto de clase Empleado tiene todos los atributos de una Persona más los específicos de su clase. nombre calleNro telefono basico cantHijos fechaingreso Introducción a la Programación Orientada a Objetos IPOO

44 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
class gestionEmpresa{ Empleado e; e = new Empleado (…); String nom = e.obtenerNombre(); float bas= e.obtenerBasico(); } 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 IPOO

45 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
La clase Cliente hereda de la clase Persona todas las variables de clase, de instancia y métodos. Un objeto de clase Cliente tiene todos los atributos de una Persona más los específicos de su clase. nombre calleNro telefono saldo ciudad CUIT cateIva Introducción a la Programación Orientada a Objetos IPOO

46 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
class gestionEmpresa{ Cliente c; c = new Cliente (…); String nom = c.obtenerNombre(); float s = c.obtenerSaldo(); } Un objeto de clase Cliente 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 IPOO

47 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
La 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 servicios definidos en la clase, pero además hereda los atributos y servicios de la clase Persona. Análogamente entre la clase Empleado y la clase Persona existe una relación de tipo es-un. Una objeto de clase Empleado está caracterizado por todos los atributos definidos en su clase , pero además hereda los atributos y servicios de la clase Persona. Un objeto de clase Persona no puede recibir mensajes que correspondan a servicios provistos por las clases derivadas.

48 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
La empresa decide establecer un monto por productividad y un presupuesto para cada ejecutivo y un monto diario para viáticos común para todos los ejecutivos. Además, se decide que todos los ejecutivos tengan 20 días de vacaciones. Cada ejecutivo recibe un premio anual equivalente al 3% de su productividad.

49 La mitad de un sueldo básico más p
Ejecutivo <<atributos de clase>> viaticos = 1200 <<atributos de instancia>> productividad: real presupuesto: real <<Constructores>> Ejecutivo(nom: String, cn: String, t: String, e: String, b: real, ch: entero, fi: Fecha, pre: real) <<Comandos>> establecerPresupuesto(p: real ) aumentarPresupuesto(a: real )… <<Consultas>> obtenerPresupuesto(): real diasVacaciones(): entero premioAnual(p: real): real 20 días La mitad de un sueldo básico más p

50 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
Persona Cliente Empleado Ejecutivo La clase Ejecutivo especializa a la clase Persona. Todo objeto de clase Ejecutivo es también instancia de las clases Empleado y Persona.

51 <<atributos de instancia>> <<Constructores>>
Persona <<atributos de instancia>> <<Constructores>> <<Comandos>> <<Consultas>> Empleado <<atributos de instancia>> <<Constructores>> <<Comandos>> <<Consultas>> Ejecutivo <<atributos de instancia>> <<Constructores>> <<Comandos>> <<Consultas>>

52 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
class Persona { //Atributos de instancia protected String nombre; protected String calleNro; protected String telefono; protected String ; … } Las clases derivadas de la clase Persona acceden a sus constructores usando el comando super(). Si un constructor usa el constructor de la clase base, la instrucción super() debe ser la primera del bloque.

53 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 IPOO

54 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
class Ejecutivo extends Empleado { //Atributos de clase protected float viaticos = 1200; //Atributos de instancia protected float presupuesto; protected float productividad; … } Introducción a la Programación Orientada a Objetos IPOO

55 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
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 IPOO

56 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 IPOO

57 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
public Ejecutivo (String nom, String cn, String te, String em, float sb, int ch, Fecha f, float pres ){ super(nom,cn,te,em,sb,ch,f); productividad = 0; presupuesto = pres; } Introducción a la Programación Orientada a Objetos IPOO

58 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
<<Consultas>> diasVacaciones () : real Ejecutivo <<Consultas>> diasVacaciones () : real Introducción a la Programación Orientada a Objetos IPOO

59 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
class Empleado extends Persona{ … public int diasVacaciones() { /*Una semana cuando cumple 1 año, 2 semanas cuando cumple 5 años y 3 semanas cuando es mayor a 10 años*/ int ant = fechaIng.difHoy(); int vac = 0; if (ant > 10) vac = 3; else if (ant >= 5) vac = 2; else if (ant > 0) vac = 1; return vac; } 1

60 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
class Ejecutivo extends Empleado{ … public int diasVacaciones() { //20 días return 20; } 2

61 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS
Empleado emp = new Empleado(e1,e2,e3,e4,e5,e6,e7); Ejecutivo eje=new Ejecutivo(j1,j2,j3,j4,j5,j6,j7,j8); 1 System.out.println(emp.diasVacaciones()); System.out.println(eje.diasVacaciones()); 2 System.out.println(emp.obtenerPres()); System.out.println(eje.obtenerPres());


Descargar ppt "INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS"

Presentaciones similares


Anuncios Google