La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Herramientas de polimorfismo y herencia en C++

Presentaciones similares


Presentación del tema: "Herramientas de polimorfismo y herencia en C++"— Transcripción de la presentación:

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

2 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.

3 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.

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

5 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.

6 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; }

7 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);

8 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]; }

9 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; } };

10 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.

11 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 { …… };

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

13 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

14 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(); }

15 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.

16 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.

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

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

19 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.

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

21 ¿Preguntas, dudas y comentarios?


Descargar ppt "Herramientas de polimorfismo y herencia en C++"

Presentaciones similares


Anuncios Google