Tema: Funciones Virtuales y Polimorfismo.

Documentos relacionados
Tema: Clases y Objetos en C#. Parte II.

Java Avanzado Facultad de Ingeniería. Escuela de computación.

PROGRAMACION ORIENTADA A OBJETOS EN C++

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

Universidad Salesiana de Bolivia

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

PROGRAMACIÓN EN C#.NET Programación Orientada a Objetos en C# Ing. Bruno López Takeyas

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERÍA PROYECTO CURRICULAR DE INGENIERÍA INDUSTRIAL

HERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Elabore el diagrama de clases en UML y la codificación de un programa para resolver los siguientes problemas:

Programación orientada a objetos. Capítulo 8 Mejora de las estructuras mediante herencia

INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

Programación con Visual C#

Tema: Funciones, Procedimientos y Recursividad en C#.

Aplicaciones de Escritorio

Tema: Punteros a Objetos. Puntero this.

Tema: Entorno a C# y Estructuras Secuenciales.

Programación orientada a objetos en PHP. Lic. Nancy Michelle Torres Villanueva

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

Capítulo 16. Diagrama de Clases UML

Programación Orientada a Objetos

Programación Orientada a Objetos en C#.NET CAPÍTULO 7 POLIMORFISMO. Ing. Bruno López Takeyas, M.C.

Resultado de Aprendizaje:

Guía práctica de estudio 04: Clases y objetos

Computación Avanzada Clase 3. Mauricio Hidalgo Barrientos

Objeto Clase Atributo / Método Encapsulamiento Mensaje Herencia Polimorfismo Encadenamiento Dinámico

Programación Orientada a Objetos (POO)

MASTER PROFESIONAL C# 5 Y ASP.NET MVC 5

Prueba N o 1. Programación II

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Tema: Herramientas UML, Análisis y diseño UML

Programación Orientada a Objetos

Tema: Herramientas UML, Análisis y diseño UML


Diseño Basado en Componentes. Curso 2008 / 09

COLEGIO NACIONAL NICOLAS ESGUERRA EDIFICAMOS FUTURO TEMATICA DE TRABAJO GRADO: DECIMO ASIGNATURA: INFORMATICA PROFESOR: DANILO RODRIGUEZ ACERO

Fundamentos de Programación Orientada a Objetos ( POO ) Parte 2 Desarrollo de Software

20483 Programación en C#

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

Tema 7. El sistema de clases

4. POLIMORFISMO. Figura 6: Funciones virtuales

Polimorfismo. Métodos virtuales

FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4

Índice de contenido. Índice de contenido... i Indice de prácticas...ix Prólogo...xi Cómo utilizar este libro...xv

16. Herencia Definición de herencia. 168 A. García-Beltrán y J.M. Arranz

Formato para prácticas de laboratorio

Conversión entre Tipos

Versatilidad de la estructura de repetición for

Calendario Académico año Introducción a la Programación I

TEMA I PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN N ORIENTADA A OBJETOS OBJETOS (I) OBJETOS (II)

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

PROGRAMA DE CURSO. Escuela de Ingeniería de Sistemas y Computación Universidad del Valle Santiago de Cali, Colombia. Febrero 2007

PROGRAMA INSTRUCCIONAL

UNIVERSIDAD DEL VALLE DE MÉXICO PROGRAMA DE ESTUDIO DE LICENCIATURA PRAXIS MES XXI

FUNDAMENTOS DE INFORMÁTICA

Carrera: IFM Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos.

Desarrollo de aplicaciones I

ESCUELA DE INFORMÁTICA

UNIVERSIDAD DE GUADALAJARA CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIERÍAS SEMINARIO DE SOLUCIÓN DE PROBLEMAS DE PROGRAMACIÓN PROYECTO

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Programación I. Carrera: IFM Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos.

Derechos de Acceso: COMPOSICION

ALGORITMOS, ESTRUCTURAS Y PROGRAMACION

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Tema: Introducción al IDE de Microsoft Visual C#.

MASTER EN MODELIZACIÓN MATEMÁTICA, ESTADÍSTICA Y COMPUTACIÓN Curso: Bases de datos y programación orientada a objetos Parte POO.

Taller #1 (versión del 18 de septiembre de 2009) Programación básica y aproximación al paradigma orientado a objetos

Por ejemplo, considerando la jerarquía de herencia de Figuras Geométricas de la siguiente figura, es posible hacer uso del concepto de polimorfismo.

La Herencia: Teoría (1)

Tema: Algoritmos para la ruta más corta en un Grafo.

TÉCNICO SUPERIOR UNIVERSITARIO EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

Elabore la codificación de un programa para:

INTRODUCCION A LA PROGRAMACIÓN ORIENTADA A OBJETOS

Prof. Dr. Paul Bustamante

Definición. Mónica E. García García Feb 07

MANUAL DE USUARIO. Sistema CLASS Profesores

TALLER FINAL DE ALGORITMO Y PROGRAMACIÓN ORIENTADA A OBJETOS I (POOI) PRESENTADO POR ENDRIS JUDITH CABALLERO CARO KEYLA JAKELINE JIMENEZ CUADROS

OOP y C++ Indice. 0.1 Análisis orientado a objetos(1/4) Análisis orientado a objetos(2/4) 0.- OOP 1.- INTRODUCCIÓN.

TALLER FINAL DE ALGORITMO Y PROGRAMACION ORIENTADA A OBJETOS I (POOI) PRESENTADO POR: GUSTAVO ENRRIQUE SINNING FUENTES. VIRTOR FABIAN RIZO.

Tema: Repaso sobre el uso del IDE de Microsoft Visual C#.

Conceptos de Programación Orientada a Objetos

MS_20483 Programming in C#

Las clases están compuestas por un conjunto de miembros. (datos y funciones) también se conocen como (atributos y métodos)

UNIVERSIDAD DEL CARIBE UNICARIBE. Escuela de Informática. Programa de Asignatura

MANUAL DE USUARIO. Sistema CLASS Profesores

Modulo 11. Clases y Objetos en Java

Programa Oficial de Asignatura. Ficha Técnica. Presentación. Competencias y/o resultados del aprendizaje. Contenidos Didácticos

Lenguaje de programación con JAVA

Clases en C++ Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Algoritmos y Programación II. Enero de 2005

Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes:

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

GUIA DE EJERCICIOS N 1 LENGUAJE C# Página 1 de 5. Instructor: Ing. Néstor Raúl Suarez Perpiñan

Principios de Computadoras II

Clase 3: Repaso POO. DSIW1:Ing. Tomás Eduardo Urbina 1

PERSISTENCIA DE OBJETOS EN BASE DE DATOS RELACIONALES FRANCISCO LEÓN NAJERA CÓDIGO: CEDULA:

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Transcripción:

POO104. Guía No. 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación Orientada a Objetos Tema: Funciones Virtuales y Polimorfismo. Materiales y Equipo Computadora con el software C # de Visual Studio 2015 o posterior. Guía Número 10. Introducción Teórica Funciones Virtuales. Una función virtual es una función miembro pública o protegida de una clase base que puede ser redefinida en cada una de las clases derivadas de esta, y una vez redefinida puede ser accedida mediante una referencia a la clase base. Esta se declara colocando la palabra clave virtual antes de la declaración de la función miembro perteneciente a la clase base, así: virtual <tipo de dato> <nombre de la función> (lista de parámetros); Polimorfismo. La utilización de clases derivadas y funciones virtuales es frecuentemente denominada programación orientada a objetos. Además, la facultad de llamar a una variedad de funciones utilizando exactamente el mismo medio de acceso, proporcionada por funciones virtuales, es a veces denominada polimorfismo. Polimorfismo significa la facultad de asumir muchas formas, refiriéndose a la facultad de llamar a muchas funciones diferentes con una sola sentencia. En un lenguaje orientado a objetos, el polimorfismo es la propiedad por la que un mensaje puede significar cosas diferentes dependiendo del objeto que lo recibe. La razón por la que el polimorfismo es útil se debe a que proporciona la capacidad de manipular instancias de clases derivadas a través de un conjunto de operaciones definidas en su clase base. Cada clase derivada puede implementar las operaciones definidas en la clase base. El polimorfismo adquiere su máxima potencia cuando se utiliza en unión con la herencia.

2 POO104. Guía No. 10 Reglas para utilizar Polimorfismo. 1. Crear una jerarquía de clases con las operaciones importantes definidas por las funciones miembros declaradas como virtuales en la clase base. 2. Las implementaciones específicas de las funciones virtuales se deben hacer en las clases derivadas. Cada clase derivada puede tener su propia versión de las funciones. 3. Si se omite la implementación del método en la clase derivada asumirá la instrucción dada por la clase base. Clases Abstractas. Una clase abstracta es una clase que se define con el propósito de establecer bases conceptuales sobre las cuales se definirán otras clases, mismas que podrán ser clases concretas. Es decir, una clase abstracta no se usará directamente en la solución de un problema, sino que formará parte del diseño conceptual de la solución. Por lo tanto, en el programa no se crearán instancias (objetos) de las clases abstractas. Sin embargo, cabe destacar que las clases derivadas sí heredan sus miembros. En una clase abstracta pueden incluirse métodos virtuales que requieren ser especificados en las clases derivadas. Es decir, métodos a los que se les asignará el contenido en cada clase derivada. Procedimiento Ejemplo 1 Funciones Virtuales. El siguiente ejemplo utiliza una clase llamada Figuras como Clase base y se implementan dos clases derivadas Rectángulo y Triangulo, como se muestra en la siguiente jerarquía de herencia: Figuras Triángulo Rectángulo

CLASE FIGURAS POO104. Guía No. 10 3 CLASE RECTÁNGULO Override: permite a las clases derivadas sobreescribir las instrucciones del método que fueron definidas en la clase base. Con ello podrá realizar su propia instrucción pero manteniendo el mismo nombre.

4 POO104. Guía No. 10 CLASE TRIÁNGULO CLASE PROGRAM

POO104. Guía No. 10 5 Ejemplo 2 Polimorfismo. El siguiente ejemplo utiliza un arreglo de objetos para poder definir el concepto de polimorfismo. Utilizaremos el ejemplo No. 1. Modificar el main de la clase Program del programa anterior por el siguiente código: Desarrollo de Habilidades Ejercicio 1: Agregar una nueva derivación de Figuras con la clase Rombo, las propiedades que tendrá el rombo son diagonal mayor y diagonal menor, el área del rombo es: Área Rombo = (Diagonal Mayor * Diagonal Menor) / 2 Realice las modificaciones necesarias al ejemplo No. 1, de tal manera que se construya una solución para la jerarquía de clases mostrada en la siguiente figura: Figuras Triángulo Rectángulo Rombo

6 POO104. Guía No. 10 Ejercicio 2: Considere la siguiente jerarquía de herencias: Vehículo Moto Carro Bus Definir las clases. Considerar todas las propiedades y funciones necesarias para una implementación completa haciendo uso de funciones virtuales y polimorfismo. Decidir que atributos y métodos incluir en cada clase de tal manera que su programa pueda a través de un menú realizar como mínimo las siguientes acciones: a) Crear objetos de cualquier tipo, a excepción de la clase base que NO debe tener objetos (asegúrese de ello), solicitando los datos al usuario. b) Visualizar un objeto en particular, con todos sus atributos. c) Salir de la aplicación. Ser creativos con la solución, es decir, agregar más opciones al menú. El menú deberá estar siempre activo, en la misma posición en pantalla, hasta que el usuario seleccione la opción salir. El programa debe estar debidamente comentado. Investigación Complementaria Considere la siguiente jerarquía de herencias: Deportista Futbolista Patinador Delantero Portero Artístico

POO104. Guía No. 10 7 A continuación se muestra la declaración de la Clase Deportista class Deportista { public Deportista ( ) { } // Constructor por defecto virtual float CalcularSueldo( ) { } virtual float CalcularHorasEntrenoSemana( ) { } }; La clase Deportista se usará como clase base para declarar las clases derivadas: Futbolista, Patinador y Artístico. La clase base es una clase abstracta. Diseñar una implementación que simule la jerarquía mostrada. Considerar los atributos y métodos necesarios en cada clase de tal manera que su programa pueda a través de un menú realizar como mínimo las siguientes acciones: a) Crear objetos de cualquier tipo, solicitando los datos al usuario. b) Calcular el sueldo de cualquier objeto seleccionado por el usuario. c) Calcular las horas de entreno de cualquier objeto seleccionado por el usuario. d) Salir de la aplicación. El menú deberá estar siempre activo, en la misma posición en pantalla, hasta que el usuario seleccione la opción salir. El programa debe estar debidamente comentado.