Desarrollo de Software

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Advertisements

Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
Lenguaje de programación Java
HERENCIA.
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
Herencias Conceptos básicos i
Diagrama de Clases SPI 2016.
Lenguaje de programación: Lua Fundamentos de lenguaje de programación. Iván Cardemil Patricio Tudela Camilo Rojas Llosect Moscoso.
2012-BM5A. Introducción Todos los lenguajes de programación son distintos entre si. Sin embargo, pueden ser agrupados según la forma de pensar y estructurar.
PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento y constructores.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Nombre José Francisco Luna Jurado Matricula Asignatura
Herencia Multiple en Java
Unidad Didáctica 11 Reutilización Versión 1.0.0
Ingreso , proceso y salida de datos
Clases y Objetos.
PROGRAMACIÓN ORIENTADA A OBJETOS
Ingeniería Directa. Generar código a través de modelos se le conoce como ingeniería directa.
Programación Avanzada
Clases y Objetos.
Herencia y Clases Abstractas
Diseño y Programación Orientada a Objetos
Programación 1 Curso: 5to. I TT
Herencia Implementación en Java.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Programación Orientada a Objetos
“POLIMORFISMO PARAMETRICO”
ECLIPSE.
U.T. 11: Introducción A Las Bases De Datos
Figura Rectangulo Elipse Cuadrado Circulo area (): double
Fundamentos de la programación orientada a objetos
REUTILIZACION DE CODIGO
Programación Avanzada
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Introducción a programación web Martin Esses
FUNCIONES EN EXCEL 2007.
Introducción a programación web Martin Esses
Programación orientada a objetos
TUTORIAL PSeint.
Polimorfismo y Métodos Virtuales
Tema 3. Lenguaje unificado de modelado UML
Programación Orientada a Objetos I Unidad 4 Relaciones entre clases: herencia.
Herencia Agustín J. González ELO329.
Herencia en C#.
HERENCIA.
Unidad 3. Introducción a la programación
Programación Orientada a Objetos
Ingeniero en Computación José Alfredo Cobián Campos
APLICACIONES II ° Patrones De Diseño ° Esteban Omar Mora Delgado
Universidad Nacional de Colombia - Leguajes de Programación
Customización en ADempiere
ANALISIS DE SISTEMAS ANALISIS ORIENTADO A OBJETOS.
CURSO PROGRAMACIÓN BÁSICA SEMANA 3 ¿Qué es un programa?
Programación orientada a objetos en Visual Basic .NET
Programacion Orientada a Objetos
Herencia en C++ Agustín J. González ELO329.
Diagrama de Clases Un diagrama de clases esta compuesto por los siguientes elementos: Clase: atributos, métodos y visibilidad. Relaciones: Herencia, Composición,
Herencia en C++ Agustín J. González ELO329.
MATRICES. ¿QUÉ ES UNA MATRIZ? Una matriz es un espacio bidimensional que se genera en la memoria del computador. Las matrices deben tener un nombre que.
Capítulo 7 USO DE BASES DE DATOS OBJETO- RELACIONALES.
PROGRAMACIÓN ORIENTADA A OBJETOS ING. HEMERSON VILLACORTA M.
Herencia en C++ Agustín J. González ELO329.
PRESENTACION DE INGENIERIA ORIENTADA A OBJETOS. INTRODUCCION. ¿ Qué es UML ?. UML, por sus siglas en Ingles, Unified Modeling Languaje.(Lenguaje Unificado.
Herencia en C++ Agustín J. González ELO329.
Tema 5 H erencia. La herencia es una forma de reutilización de software en la que las clases se crean incorporando los datos (atributos) y el comportamiento.
Herencia Agustín J. González ELO329.
Herencia en C++ Agustín J. González ELO329.
Clases abstractas e interfaces
Transcripción de la presentación:

Desarrollo de Software DSY2101

Unidad N° 2: arreglos, colecciones y herencia Compartir la Herencia Experiencia N° 7

Introducción La herencia permite que una clase puede heredar sus atributos y métodos a varias clase derivadas, de esta forma podemos realizar procesos entre clases y reutilizar código. La interface contiene métodos abstractos y son los que se implementan en otras clases

¿qué es la herencia?

Es crear una clase nueva a partir de una clase existente. Herencia Es crear una clase nueva a partir de una clase existente. La clase base (súper clase) hereda a la subclase (clase derivada) los atributos y métodos. La subclase también puede crear sus propios atributos y métodos

La clase hija pasa a ser clase padre Herencia La clase hija pasa a ser clase padre

Características Herencia Es uno de los pilares de la Programación Orientada a Objeto Permite la Reutilización del código Utiliza la Extensibilidad entre clase padre e hija extends es la palabra responsable de compartir el código entre clase padre e hija Permite que todas las clases estén clasificadas en una jerarquía estricta. Es transitiva, dado que hereda los atributos y métodos de varios niveles en la jerarquía Se ahorra código y tiempo Los objetos pueden ser construidos a partir de otros similares. Toda clase pueden servir como clase base para crear otras

Tipos de Herencia Herencia Simple Una clase sólo puede tener un clase padre Lenguajes: Java, C# Herencia Múltiple Una clase puede tener más de una clase padre Lenguajes: C#

Representación de clases Herencia Simple Java sólo soporta que cada clase tenga una clase base e incorpore a otra en su declaración. La palabra reservada extend, indica a la clase hija cual va a ser su clase padre. Representación de clases Declaración - Código

Herencia Simple La clase que están en la parte inferior (clase hija) en la jerarquía hereda de la clase que está en la parte superior. Esto facilita extender la funcionalidad de una clase.

Estructura de la clase Padre Herencia Simple Estructura de la clase Padre public class Clase_Padre { //cuerpo de la clase_Padre }

Estructura de la subclase Herencia Simple Estructura de la subclase public class Clase_Hija extends Clase_Padre { //cuerpo de la subclase }

Ejemplo de Estructura de clases Herencia Simple Ejemplo de Estructura de clases Public class Animal { //cuerpo de clase base } public class Pajaro extends Animal //cuerpo de la subclase public class Perro extends Animal

Herencia Ejemplo código Ingresar al software Netbeans y crear un nuevo proyecto con las siguientes clases

Herencia Código de clase padre Herencia Se declaran atributos Se declaran método que muestra la información del triángulo

Herencia Se declara el atributo Código de clase hija Triángulo Se declara método que calcula área del triángulo y retorna resultado Se declara método que muestra la información del tipo de triángulo

Código de clase Principal Herencia Código de clase Principal Se declaran y crean los objetos Se asignan valores a los atributos Se realizan las llamadas a los métodos, para entregar la información solicitada

Herencia Resultado: Ejecutar la clase principal

analogía

Analogía Nuestra ciudad en la actualidad cuenta con variados medios de transporte público, los que facilitan el traslado de un lugar a otro, entre ellos se considera el auto y la bicicleta. Ambos vehículos poseen características comunes, como marca, modelo, entre otras, sin embargo una de las diferencias es la capacidad de personas que puede trasladar. Crear diagrama de clases para el caso mencionado. Aplicar el concepto de herencia compartir atributos y métodos.

Características: auto Solución Propuesta Características: auto

Características: Bicicleta Solución Propuesta Características: Bicicleta

Solución Propuesta Clase padre Clases Hijas

Atributos métodos Solución Propuesta Clase Vehículo Clase Auto Clase Bicicleta

Atributos Solución Propuesta VEHICULO Código Propietario Marca Color Programa los métodos VEHICULO Código Propietario Marca Color mostrarDatos(): Mostrar los datos de la bicicleta datosAuto(): Mostrar marca, cilindrada y kilometraje del auto. AUTO N° Motor Cilindrada Kilometraje BICICLETA Aro Tipo Pedal N° Rayos

Trabajando con la herencia

Constructores Cada clase cuenta con sus propios constructores. La superclase no conoce a los elementos de la subclase y por ende no tiene acceso a ellos, en tanto una subclase si puede tener acceso al constructor de la superclase.

Características Constructores El nombre del constructor debe siempre coincidir con el nombre de la clase. El constructor no debe tener tipo de retorno El constructor por defecto es SIEMPRE un constructor sin argumentos Cada constructor tiene en su primera sentencia, una llamada a un constructor sobrecargado “this()” o una llamada a su constructor de la superclase “super()”

super.atributo; super.método(); Instrucción Súper Una subclase para llamar a un constructor que está definido en la clase padre, utiliza la instrucción Super super(lista-parámetros); Por lo tanto, para acceder a sus métodos o atributos, sería de la siguiente forma super.atributo; super.método();

Instrucción Súper La lista-parámetros, se refiere a cualquier parámetro que el constructor de la superclase necesita. super() debe ser siempre la primera instrucción que se ejecute dentro de un constructor de subclase

Instanciar objetos Al crear un objeto en la subclase, se llaman a los correspondientes constructores comenzando desde la clase padre hasta el descendiente actual, es decir, siguiendo el orden de derivación:

Constructores en Super Clase y Sub Clase En la superclase Sin parámetro Con parámetro En la subclase Sin parámetro Con parámetro

Ejemplo

Ejemplo Se inicia ejecución del programa Crea objeto Alumno con parámetros Clase Alumno, se declaran los atributos propios de la clase Clase constructor e invoca al constructor de la clase Padre Persona, enviando los parámetros

Ejemplo Se declaran los atributos comunes al programa Se declara Constructor sin parámetros Se declara Constructor con parámetros

Sobreescritura Para sobreescribir un método se debe utilizar el mismo: Nombre del método en la subclase Tipo de retorno Listado de argumentos de llamada En tanto, en el cuerpo de ese método que se encuentra en la subclase debe proponer un nuevo código

De protected pasa a public Sobreescritura En ocasiones al heredar el comportamiento de métodos de la clase Padre, no siempre es lo que se requiere, por tanto el método de la subclase se sobreescribe Reglas Cuando una subclase se sobre escribe, debe mantener el mismo formato de la superclase El método sobre escrito puede tener un modificador menos restrictivo que el de la superclase De protected pasa a public

Ejemplo Se crea un proyecto con las clases descritas

Programando las clases Se crea objeto hija relacionada a clase Hija Se invoca el método mover que se encuentra en la clase Hija

Clase Hija se extiende a clase Padre Se crea atributo mama de tipo String Se crea método mover Se invoca a método mover de la clase Padre

Clase padre y se declaran los atributos comunes Se crea método mover en clase Padre Contiene un mensaje

Sobrecarga Es la creación de varios métodos con el mismo nombre pero con diferentes parámetros. En base a estos parámetros se puede definir que método se ejecuta.  Se debe considerar la sobrecarga de constructores: Cuando en una clase existen constructores múltiples, se dice que hay sobrecarga de constructores.

Sobrecarga Reglas Los métodos sobrecargados deben cambiar la lista de parámetros. Pueden cambiar el tipo de retorno. Un método puede ser sobrecargado en la misma clase o en una subclase Pueden cambiar el modificador de acceso.

Ejemplo Trabajando con Herencia Se tiene el siguiente diagrama de clases: La clase Padre Operación con cuatro atributos y un método comunes, los que serán heredados a las clases hijas (Suma, Resta, Multiplicación y División)

Comencemos a programar en Netbeans y Eclipse Herencia Comencemos a programar en Netbeans y Eclipse Creamos la clase operación que es la clase Padre Esta clase contendrá todos los atributos y métodos comunes entre sus clases hijas Los métodos Get, Set y Constructores

Importante Para crear código de los métodos constructores, get y set, sólo debe presionar botón derecho del mouse y seleccionar la opción Insert Code (Netbeans) Aparecerá el siguiente recuadro Aplique nuevamente para los constructores

Herencia – Clase Operacion

Herencia – Clase Operacion Chequeando Código de clase Operacion Declaración de atributos comunes Declaración de Constructor

Herencia – Clase Operacion Métodos GET y SET de cada atributo Métodos que muestra resultado de la operación matemática

Herencia – Clase Sumar

Herencia – Clase Sumar Chequeando Código de clase Sumar La clase Sumar se extiende a la clase Padre Se declara atributo suma, que guardará el resultado de la sumatoria

Herencia – Clase Sumar Constructor Sumar con parámetros Super: Invoca constructor del padre y envía parámetros con valores. Siempre en la primera línea de código This.suma envía sumatoria de n1 y n2 Envía suma al método setRes

Las clases Restar, Multiplicar y Dividir, se programan de la misma forma que la clase Sumar Inténtalo

Herencia – Clase main

Herencia – Clase main Chequeando Código de clase main Declaración de atributos y se asignan valores Se crea objeto para enviar parámetros al constructor de la clase hija Restar Luego se invoca el método mostrarResultado

Clases y Métodos Abstractos Clases y Métodos finales

Clases y Métodos Abstractos y Finales Clase abstracta Una clase es abstracta cuando se establece que se incluirá al menos un método sin su implementación, es decir un método abstracto sintaxis

Clases y Métodos Abstractos y Finales Clase abstracta Una clase es abstracta cuando se quiere obligar a crear subclases de ella, sin que sea necesario que tenga métodos abstractos

Clases y Métodos Abstractos y Finales Características Puede contener o no un método abstracto Puede contener métodos no-abstractos Una clase abstracta no se puede instanciar pero si se puede heredar y las clases hijas serán las encargadas de agregar la funcionalidad a los métodos abstractos. De no ser a sí, las clases hijas deben ser también abstractas.

Clases y Métodos Abstractos y Finales ejemplo

Clases y Métodos Abstractos y Finales Método abstracto Es un método declarado pero no implementado, es decir, sólo se escribe su nombre, parámetros y tipo devuelto pero no su código. Sintaxis [modificador] abstract tipoDevuelto nombreMetodo([parámetros]); Ejemplo No considera: llaves { } Punto y coma ; al final de la declaración. public abstract void nombre_metodo();

Clases y Métodos Abstractos y Finales Características Un método se declara abstracto, dado que no se conoce su implementación en esa clase. Al incluir el método abstracto en la clase base se obliga a que todas las clases hijas lo sobrescriban con el mismo formato utilizado en la declaración. Si una clase contiene un método abstracto se convierte en clase abstracta y debe ser declarada como tal.

Clases y Métodos Abstractos y Finales La palabra final corresponde a constante, cuando se trata de atributos, es decir que no se modifica Clase final El uso de final en una clase, implica que esa clase no puede tener clases hijas, es decir no se utiliza la herencia. Sintaxis public final class nombre_clase Ejemplo

Clases y Métodos Abstractos y Finales método final El uso de final en un método, significa que ese método no podrá ser sobrescrito por una clase hija Sintaxis final <modificador de acceso> tipo_dato_devuelto nombre_metodo(parámetros) Ejemplo

analogía

Analogía Hoy en día existen diversos tipos de transporte, entre ellos aéreo, terrestre y marítimo, por tanto las personas que deseen viajar o trasladarse de un lugar a otro tienen la opción de elegir. Para realizar la selección de un medio de trasporte es relevante conocer las características que ellos presentan. Se pide: Seleccione el medio de transporte que vaya acorde al costo de viaje que usted puede cancelar y características de comodidad y tiempo que involucra el traslado. Sobreescriba el método obtener número de pasajeros es la clase bicicleta considerando que tiene un asiento. Sobrecargar el método obtener potencia en la clase avión incrementando a la potencia un valor que viene por parámetro. Desde una clase que contenga el método main crear objetos de la jerarquía de clases

Solución Propuesta

¿Cómo resultará el código de cada clase? Solución Propuesta ¿Cómo resultará el código de cada clase?

Utilizando interface

Definición Finalidad Sintaxis interface Definición Es una colección de métodos abstractos, es decir no poseen implementación y de valores tipo constantes Finalidad Define el formato que deben tener ciertos métodos y que se implementarán en las otras clases Sintaxis

Representación gráfica interface ejemplo Métodos Abstractos Representación gráfica Código

características interface 1. La interface se representa con un rectángulo, dónde debe ir el nombre “Interface” o con una línea con un círculo en el extremo y el nombre de la interface 2. Una interface puede participar en las relaciones de: Generalización Asociación Dependencia

características interface 3. Cuando se requiere desde otra clase, ésta debe utilizar la palabra reservada implements 4. Todos los métodos declarados son públicos y abstractos 5. Sólo pueden contener métodos abstractos (sin código) y constantes

ejemplo interface Nombre Interface Nombre Clase que llama a interface Método que se implementa

analogía

Analogía Las familias chilenas generalmente asisten al supermercado para abastecerse de diversos productos una vez al mes, entre los productos se consideran verduras, frutas, carnes blancas y rojas, útiles de aseo, lácteos, abarrotes. Al asistir a estos supermercados acceden a los diferentes descuentos, por lo que la cuenta final a pagar es menor a lo considerado. Considere las siguientes ofertas por kilo: Carnes, 7% para los días lunes Frutas, 5% para los días miércoles Se pide: Calcule el monto que se cancelará al comprar 3 kilos de carne y 5 kilos de frutas.

De compras en el supermercado Seleccionar Productos Posible Solución De compras en el supermercado Seleccionar Productos Considerar ofertas

Diagrama de Clases Posible Solución ¿qué comprar? ¿Cuánto comprar? ¿cuánto cancelar?

Conclusión Compartir atributos y métodos comunes entre clases, permite reutilizar el código de programación y evitar la duplicidad de información, entregando resultados fidedignos solicitados por la organización

Bibliografía http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=651:concepto-o-definicion-de-herencia-en-java-programacion-orientada-a-objetos-ique-es-ejemplos-cu00684b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188 http://es.ccm.net/contents/411-poo-herencia https://desarrolloweb.com/articulos/herencia-en-programacion-orientada-objetos.html https://sekthdroid.wordpress.com/2012/12/03/constructores-e-instanciacion-en-java/ http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/herencia/final.htm http://analisis-uml.blogspot.cl/2012/03/pilares-de-la-poo.html#!/2012/03/pilares-de-la-poo.html

Glosario Polimorfismo: Permite programar objetos con características comunes y que comparten la misma superclase Clase final: Implica que esa clase no puede tener clases hijas. Método Final: significa que ese método no podrá ser sobrescrito por una clase hija Clase Abstracta: Es una clase que no se puede instanciar y se usa únicamente para definir subclases. Método Abstracto: Método declarado pero no implementado Extends: Se utiliza para heredar atributos y métodos de otra clase

Glosario Implements: Implementa las interfaces Super: Palabra reservada que permite invocar un método del padre This: Hace referencia a los miembros de la propia clase en el objeto actual Interface: Contiene métodos abstractos y constantes

Desarrollo de Software DSY2101