La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.

Presentaciones similares


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

1 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia Dr. Luciano H. Tamargo http://cs.uns.edu.ar/~lt Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca 2015

2 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 Introducción a la Programación Orientada a Objetos IPOO - 2015 2 TEMARIO Paradigma de programación. Calidad de software. Herencia. Caso de estudio: clientes y empleados.

3 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 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. En los problemas de mediana y gran escala la construcción del modelo requiere creatividad, pero también de un paradigma que guíe, oriente y sistematice cada etapa del proceso. Introducción a la Programación Orientada a Objetos IPOO - 2015 3

4 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 PARADIGMA DE PROGRAMACIÓN Un paradigma de programación 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 lenguajes de programación. Introducción a la Programación Orientada a Objetos IPOO - 2015 4

5 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 PROGRAMACIÓN ORIENTADA A OBJETOS La programación orientada a objetos brinda un principio, una metodología y herramientas que apoyan al proceso de desarrollo de software en todas sus etapas. Las principales herramientas son el lenguaje de modelado y el lenguaje de programación. El objetivo de la programación orientada a objetos es favorecer la calidad y la productividad. Introducción a la Programación Orientada a Objetos IPOO - 2015 5

6 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 Introducción a la Programación Orientada a Objetos IPOO - 2015 6 TEMARIO Paradigma de programación. Calidad de software. Herencia. Caso de estudio: clientes y empleados.

7 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CALIDAD DE SOFTWARE La calidad de un producto de software puede definirse como su capacidad para satisfacer los requisitos establecidos durante el desarrollo de requerimientos. La calidad puede medirse de acuerdo a distintos factores. Algunos de estos factores son percibidos por el usuario o cliente. Otros factores son transparentes para el usuario o cliente, aunque por supuesto lo afectan indirectamente. Introducción a la Programación Orientada a Objetos IPOO - 2015 7

8 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CALIDAD DE SOFTWARE Un producto de software correcto actúa de acuerdo a los requerimientos especificados. Un producto de software es eficiente si tiene una baja demanda de recursos de hardware, en particular tiempo de CPU, espacio de memoria y ancho de banda. Un producto de software es portable si puede ejecutarse sobre diferentes plataformas de hardware y de software. Introducción a la Programación Orientada a Objetos IPOO - 2015 8 Correctitud Eficiencia Portabilidad

9 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CALIDAD DE SOFTWARE Un producto de software es simple si es fácil de usar, su interfaz es amigable y no requiere demasiado entrenamiento ni capacitación por parte del usuario. Un producto de software es robusto si reacciona adecuadamente aun en circunstancias no especificadas en los requerimientos. La legibilidad está fuertemente ligada a modularización y la estructura del código. La legibilidad impacta en la reusabilidad y la extensibilidad. 9 Simplicidad Robustez Legibilidad

10 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 PRODUCTIVIDAD DE SOFTWARE Un producto de software es extensible si es fácil adaptarlo a cambios en la especificación de requerimientos. El primer requerimiento para la extensibilidad es la legibilidad. Un módulo de software es reusable si puede utilizarse para la construcción de diferentes aplicaciones. 10 Extensibilidad Reusabilidad La POO favorece la productividad a través de los conceptos de abstracción de datos, herencia y polimorfismo.

11 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 Introducción a la Programación Orientada a Objetos IPOO - 2015 11 TEMARIO Paradigma de programación. Calidad de software. Herencia. Caso de estudio: clientes y empleados.

12 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 HERENCIA 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 IPOO - 2015 12

13 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 Introducción a la Programación Orientada a Objetos IPOO - 2015 13 TEMARIO Paradigma de programación. Calidad de software. Herencia. Caso de estudio: clientes y empleados.

14 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 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 - 2015 14

15 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 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 - 2015 15

16 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 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 IPOO - 2015 16

17 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 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 - 2015 17

18 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS Si agrupamos a empleados y clientes en una única clase, por ejemplo, Persona, los atributos podrían ser: 18 Persona > nombre … calleNro telefono email ciudad fechaIngreso salarioBasico cantHijos saldo cuit cateIva

19 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS Si definimos un modelo para cada grupo de entidades: 19 Empleado > nombre … calleNro telefono email fechaIngreso salarioBasico cantHijos Cliente > nombre … calleNro telefono email ciudad saldo cuit cateIva

20 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 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 - 2015 20

21 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 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. Introducción a la Programación Orientada a Objetos IPOO - 2015 21 Persona Cliente Empleado

22 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 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 IPOO - 2015 22

23 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS Introducción a la Programación Orientada a Objetos IPOO - 2015 23 Persona > nombre: String calleNro: String telefono: String email: String > Persona() Persona(nom: String) Persona(nom: String, cn: String, t: String,e: String) Inicializa todos los atributos con cadenas nulas

24 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS Introducción a la Programación Orientada a Objetos IPOO - 2015 24 Persona > nombre: String calleNro: String telefono: String email: String > … > establecerCalleNro(d: String)… > obtenerCalleNro(): String

25 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS Introducción a la Programación Orientada a Objetos IPOO - 2015 25 Cliente > saldo : real ciudad : String CUIT : String cateIVA :char > 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”

26 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS Introducción a la Programación Orientada a Objetos IPOO - 2015 26 Cliente > saldo : real ciudad : String CUIT : String cateIVA :char > … > registrarVenta(m: real) registrarCobro(m: real) > obtenerSaldo(): real

27 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS Introducción a la Programación Orientada a Objetos IPOO - 2015 27 Empleado > basico: real cantHijos: entero fechaIngreso: Fecha > 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

28 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 CASO DE ESTUDIO: CLIENTES Y EMPLEADOS 28 Empleado > basico: real cantHijos: entero fechaIngreso: Fecha > … > establecerBasico(sb: real ) aumentarBasico(a: real) … > 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. Retorna verdadero si el empleado que recibe el mensaje es más antiguo que el argumento

29 29 Persona > … > … > establecerCalleNro (d: String) … > obtenerCalleNro () : String Cliente > saldo : real ciudad : String CUIT : String cateIVA :char > registrarVenta ( m : real) registrarCobro (m:real) > obtenerSaldo () : real Empleado > basico : real cantHijos : entero fechaIngreso : Fecha >… > establecerBasico (real sb) aumentarBasico (real a)… > masAntiguo(Empleado e) : booleano obtenerBasico () : real sueldoNeto (mh : entero) : real diasVacaciones () : entero

30 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 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 IPOO - 2015 30

31 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 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 IPOO - 2015 31


Descargar ppt "0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 11 1 0 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia."

Presentaciones similares


Anuncios Google