Herramientas de polimorfismo y herencia en C++

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Definición de Clases y Variables de referencia.
POLIMORFISMO UNIDAD 4.
Lenguaje de programación Java
Arquitectura CLARO-TECNOTREE
Orientación a Objetos con Java SE
Polimorfismo Unidad 4.
Aplicación del paradigma orientado a objetos
Encapsulamiento y Abstracción
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Programación Orientada a Objetos en Java
Marzo 2007 Lenguajes Visuales Clase III.
Herramientas para el acceso directo a memoria en C++
Lenguaje de Programación Java Profesor: Mauricio Martínez P. Análisis y Diseño Orientado a Objetos UML: Lenguaje de Modelamiento Unificado Toma de Requerimientos.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Herencia e Interfaces.
Modificadores.
Estructura de Datos En C++
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Introducción a Java II.
Lic. Rosemary Torrico Bascopé
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Conceptos Objeto Clase Atributo / Método Encapsulamiento Mensaje
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Variables polimórficas (plantillas): definición, uso y aplicación
Técnicas avanzadas de programación Interfaces
SCJP Sun Certified Programmer for Java 6
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
CS-432: Ingeniería Moderna de Software Semana 3
FACULTAD DE ESTUDIOS SUPERIORES ARAGON
Dinamismo y Contenedores Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires (C++ Avanzado) Depto. de Computación Algoritmos y Estructuras.
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
Herencia y tipos ● Cuanta memoria se debe asignar a un objeto cuando se asigna en la pila ● La asignación debe hacerse antes de que se conozca la cantida.
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2008.
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Programación Procedural y Recursiva en C++
Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS.
Unidad I Java y C++ : Similitudes y diferencias
Unidad II Aplicaciones con Arreglos en Java y C++
Presentado por: PABLO ANDRES DIAZ SAIN HASSAM CAICEDO
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Detalles Generales sobre Java
Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
Metodología de Programación Clase 1 Leonel Lagos V
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
El lenguaje C++ Isidro González Caballero (Universidad de Oviedo) Técnicas de Comp. en Física Santander, 13/12/
Ing. Esp. Ricardo Cujar. Programación Orientada a Objetos  Modelo de desarrollo de software.  Modo de pensar del hombre y no de la máquina.  Abstracción.
1 Unidad II Aplicaciones con Arreglos en Java y C++ M.C. Juan Carlos Olivares Rojas.
6. Clases y Métodos..  6.1 Structs  6.2 Funciones  6.3 Namespaces  6.4 Clases.
M.C. Pedro Bello López 1 IMPLEMENTACIÓN. M.C. Pedro Bello López2.
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
Herencias Conceptos básicos i
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Programación Orientada a Objetos Unidad 5. Los objetos son entidades que combinan estado Contiene toda la información denominados atributos REPASO Cada.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
RELACIONES ENTRE CLASES M.C. YOLANDA MOYAO MARTINEZ.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
Prof. Manuel B. Sánchez. Es un mecanismo y uno de los pilares de la POO que permite definir nuevas clases a partir de otras preexistentes. La Herencia.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

Herramientas de polimorfismo y herencia en C++ M.C. Juan Carlos Olivares Rojas

Agenda Sobrecarga de operadores en C++. Uso de plantillas (templates) en C++. Manejo congruente de parámetros con objetos dinámicos y atributos dinámicos. Herencia en C++: Definición, clases abstractas y métodos virtuales.

Sobrecarga de operadores en C++ La sobrecarga de operadores es una forma más de polimorfismo. La sobrecarga de operadores permite definir para una clase un método especial, por ejemplo la clase string sobre carga el operador + para concatenar cadenas.

Sobrecarga de operadores Los operadores que se pueden sobrecargar son: +, -, *, /, %, ^, &, |, _, ', =, <, >, <=, >=, ++, --, <<, >>, ==, %%, ||, +=, -=, *=, /=, %=, &=, |=, <<=, >>=, [ ], ( ), ->, ->*, new, delete Los operadores que no se pueden sobrecargar son: ., ::, ?:, sizeof

Sobrecarga de Operadores Existen algunos operadores como el = que ya se encuentran sobrecargados de manera nativa. En el caso del = compara objetos en base a sus referencias. Antes de ver la sobrecarga de operadores se verá la sobrecarga de funciones para entender el concepto.

Sobrecarga de funciones Un método o función se dice que está sobrecargado cuando para el mismo identificador se pueden realizar dos o más funciones. Por ejemplo: int suma(int a, int b) { return a+b; }

Sobrecarga de funciones double suma(double a, double b) { return a+b; } Se puede invocar la función suma de dos formas distintas: int c = suma(10, 3); double d = suma(10.3, 5.1);

Sobrecarga de operadores La única restricción de la sobrecarga de operadores es que no se puede cambiar la aridad de los operadores; es decir, si el + es binario, se sigue manejando de la misma forma. Complex& Complex::operator[](unsigned int i) { return data[i]; }

Sobrecarga de operadores class Vector { public: float x, y; Vector operator+ (Vector v) { Vector resultado; resultado.x = x + v.x; resultado.y = y + v.y; return resultado; } };

Sobrecarga de operadores en Java Java no soporta sobrecarga de operadores. Los únicos casos de operadores sobrecargados con una operación especial (definido por el sistema no por los programadores) son el operador = para copia, para == igualdad de referencias y + para la concatenación de cadenas o elementos.

Uso de plantillas (templates) en C++ Las plantillas nos permite hacer genéricos los tipos de datos abstractos; es decir, nos permiten definir una clase que funcione con cualquier tipo de datos, por ejemplo una lista puede ser de cualquier cosa. template <class tipo_dato> class clase { …… };

Plantillas int max(int x, int y) { return (x < y) ? y : x; } float max(float x, float y) {

Plantillas template <typename T> T max(T x, T y) { return (x < y) ? y : x; } Cuando se trata de funciones no hay diferencia entre los atributos typename y class

Plantillas Los objetos parametrizados se crean con: una_clase<int> x; Java permite genericidad pero es mucho más básica que en C++. public interface Iterator<E> { E next(); boolean hasNext(); }

Manejo congruente de parámetros con objetos dinámicos y atributos dinámicos Se debe tener mucho cuidado al momento de crear objetos de manera dinámica que a su vez reciba como argumentos atributos también dinámicos. Se debe limpiar de la memoria todos los objetos que no se necesiten.

Herencia en C++: Definición, clases abstractas y métodos virtuales La herencia es un mecanismo que permite la reutilización de componentes. Se basa en el principio de que los objetos en la vida real heredan ciertos atributos y comportamientos de sus padres. La herencia en C++ puede ser múltiple.

Herencia //Clase Padre class punto { protected: int x, y public: int getX(); int getY(); };

Herencia //Clase hija class linea:punto { private: int x1, y1; public: void dibujar(); };

Clases Abstractas Son aquellas clases que sólo sirven para hacer generalización; es decir, sirven de clase base más no se instancian objetos de dicha clase. Las clases abstractas son el equivalente a las interfaces en Java.

Métodos Virtuales Son los métodos que se definen en las clases abstractas y que se implementan en cada clase hija. Los métodos virtuales se caracterizan por que se ligan en memoria; es decir, se mandan llamar desde un puntero a la clase abstracta y de manera dinámica se ejecuta el método que corresponde al objeto actual.

¿Preguntas, dudas y comentarios?