SlideShare una empresa de Scribd logo
1 de 21
1
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. 2
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.
3
Sobrecarga de operadores
• Los operadores que se pueden sobrecargar
son: +, -, *, /, %, ^, &, |, _, ', =, <, >, <=,
>=, ++, --, <<, >>, ==, %%, ||, +=, -=, *=,
/=, %=, &=, |=, <<=, >>=, [ ], ( ), ->, ->*,
new, delete
• Los operadores que no se pueden
sobrecargar son: ., ::, ?:, sizeof
4
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.
5
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;
} 6
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); 7
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]; }
8
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;
}
}; 9
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.
10
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 { …… };
11
Plantillas
int max(int x, int y) {
return (x < y) ? y : x;
}
float max(float x, float y) {
return (x < y) ? y : x;
}
12
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 13
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(); } 14
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.
15
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.
16
Herencia
//Clase Padre
class punto {
protected:
int x, y
public:
int getX();
int getY();
}; 17
Herencia
//Clase hija
class linea:punto {
private:
int x1, y1;
public:
void dibujar();
};
18
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.
19
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. 20
21
¿Preguntas, dudas y comentarios?

Más contenido relacionado

Similar a Herramientas de polimorfismo y herencia en C

Similar a Herramientas de polimorfismo y herencia en C (20)

Manual de java 2
Manual de java 2Manual de java 2
Manual de java 2
 
MANUAL DE JAVA 3
MANUAL DE JAVA 3MANUAL DE JAVA 3
MANUAL DE JAVA 3
 
Manual de java 3
Manual de java 3Manual de java 3
Manual de java 3
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
El lenguaje C++ (1).ppt
El lenguaje C++ (1).pptEl lenguaje C++ (1).ppt
El lenguaje C++ (1).ppt
 
El lenguaje C++.ppt
El lenguaje C++.pptEl lenguaje C++.ppt
El lenguaje C++.ppt
 
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptxConceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
 
Intro c sharp
Intro c sharpIntro c sharp
Intro c sharp
 
C++ Introducción de elementos del lenguaje
C++ Introducción de elementos del lenguajeC++ Introducción de elementos del lenguaje
C++ Introducción de elementos del lenguaje
 
Sobrecarga de operadores
Sobrecarga de operadoresSobrecarga de operadores
Sobrecarga de operadores
 
Programacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetosProgramacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetos
 
Java
JavaJava
Java
 
Java
JavaJava
Java
 
5 Mecanismos Reuntilizacion Abstraccion
5 Mecanismos Reuntilizacion Abstraccion5 Mecanismos Reuntilizacion Abstraccion
5 Mecanismos Reuntilizacion Abstraccion
 
Por qué java no soporta la sobre carga de operadores
Por qué java no soporta la sobre carga de operadoresPor qué java no soporta la sobre carga de operadores
Por qué java no soporta la sobre carga de operadores
 
Sobrecarga de operadores y funciones.pptx
Sobrecarga de operadores y funciones.pptxSobrecarga de operadores y funciones.pptx
Sobrecarga de operadores y funciones.pptx
 
Uml diagrama claseobjeto
Uml diagrama claseobjetoUml diagrama claseobjeto
Uml diagrama claseobjeto
 
C ++
C ++C ++
C ++
 
Uml diagrama clase objeto
Uml diagrama clase objetoUml diagrama clase objeto
Uml diagrama clase objeto
 
Mule Librerias en Java
Mule Librerias en JavaMule Librerias en Java
Mule Librerias en Java
 

Más de ssuser948499

bases de datos gestion y manejo de ytaba
bases de datos gestion y manejo de ytababases de datos gestion y manejo de ytaba
bases de datos gestion y manejo de ytabassuser948499
 
Presentación1.estudio de casos de usobsb
Presentación1.estudio de casos de usobsbPresentación1.estudio de casos de usobsb
Presentación1.estudio de casos de usobsbssuser948499
 
Data Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosData Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosssuser948499
 
la publicidaden el internetcomo medio ac
la publicidaden el internetcomo medio acla publicidaden el internetcomo medio ac
la publicidaden el internetcomo medio acssuser948499
 
f_ormulas_y_funciones.excel planillas po
f_ormulas_y_funciones.excel planillas pof_ormulas_y_funciones.excel planillas po
f_ormulas_y_funciones.excel planillas possuser948499
 
editores de texto.neln sistemas de bases
editores de texto.neln sistemas de baseseditores de texto.neln sistemas de bases
editores de texto.neln sistemas de basesssuser948499
 
introduccionallaprogramacionweb-230123213144-47a8fc90.ppt
introduccionallaprogramacionweb-230123213144-47a8fc90.pptintroduccionallaprogramacionweb-230123213144-47a8fc90.ppt
introduccionallaprogramacionweb-230123213144-47a8fc90.pptssuser948499
 
proyectointegrador-100308005101-phpapp02.pptx
proyectointegrador-100308005101-phpapp02.pptxproyectointegrador-100308005101-phpapp02.pptx
proyectointegrador-100308005101-phpapp02.pptxssuser948499
 
mongodb.base de datis noo relacionles fr
mongodb.base de datis noo relacionles frmongodb.base de datis noo relacionles fr
mongodb.base de datis noo relacionles frssuser948499
 
presentacinorm-150325230016-conversion-gate01.pptx
presentacinorm-150325230016-conversion-gate01.pptxpresentacinorm-150325230016-conversion-gate01.pptx
presentacinorm-150325230016-conversion-gate01.pptxssuser948499
 
Curso_OBS. infromatica basica sistemas a
Curso_OBS. infromatica basica sistemas aCurso_OBS. infromatica basica sistemas a
Curso_OBS. infromatica basica sistemas assuser948499
 
introducion a sistemas de bases de datos
introducion a sistemas de bases de datosintroducion a sistemas de bases de datos
introducion a sistemas de bases de datosssuser948499
 
instalacion de linux ububtu 10.10 gestio
instalacion de linux ububtu 10.10 gestioinstalacion de linux ububtu 10.10 gestio
instalacion de linux ububtu 10.10 gestiossuser948499
 
seguridad de las aplicaciones web en el internet
seguridad de las aplicaciones web en el internetseguridad de las aplicaciones web en el internet
seguridad de las aplicaciones web en el internetssuser948499
 
modulo tres capas redes tecnologia inter
modulo tres capas redes tecnologia intermodulo tres capas redes tecnologia inter
modulo tres capas redes tecnologia interssuser948499
 
Gestion y manejo de bases de datos II 24
Gestion y manejo de bases de datos II 24Gestion y manejo de bases de datos II 24
Gestion y manejo de bases de datos II 24ssuser948499
 
presentacion d actividad opara bases de datos
presentacion d actividad opara bases de datospresentacion d actividad opara bases de datos
presentacion d actividad opara bases de datosssuser948499
 
aplicaciones_web_advantage_multimedia.ppt
aplicaciones_web_advantage_multimedia.pptaplicaciones_web_advantage_multimedia.ppt
aplicaciones_web_advantage_multimedia.pptssuser948499
 
gestión y manejo de bases de datos basic
gestión y manejo de bases de datos basicgestión y manejo de bases de datos basic
gestión y manejo de bases de datos basicssuser948499
 
Plantilla_de_presentación_de_trabajo_remoto.pptx
Plantilla_de_presentación_de_trabajo_remoto.pptxPlantilla_de_presentación_de_trabajo_remoto.pptx
Plantilla_de_presentación_de_trabajo_remoto.pptxssuser948499
 

Más de ssuser948499 (20)

bases de datos gestion y manejo de ytaba
bases de datos gestion y manejo de ytababases de datos gestion y manejo de ytaba
bases de datos gestion y manejo de ytaba
 
Presentación1.estudio de casos de usobsb
Presentación1.estudio de casos de usobsbPresentación1.estudio de casos de usobsb
Presentación1.estudio de casos de usobsb
 
Data Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosData Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datos
 
la publicidaden el internetcomo medio ac
la publicidaden el internetcomo medio acla publicidaden el internetcomo medio ac
la publicidaden el internetcomo medio ac
 
f_ormulas_y_funciones.excel planillas po
f_ormulas_y_funciones.excel planillas pof_ormulas_y_funciones.excel planillas po
f_ormulas_y_funciones.excel planillas po
 
editores de texto.neln sistemas de bases
editores de texto.neln sistemas de baseseditores de texto.neln sistemas de bases
editores de texto.neln sistemas de bases
 
introduccionallaprogramacionweb-230123213144-47a8fc90.ppt
introduccionallaprogramacionweb-230123213144-47a8fc90.pptintroduccionallaprogramacionweb-230123213144-47a8fc90.ppt
introduccionallaprogramacionweb-230123213144-47a8fc90.ppt
 
proyectointegrador-100308005101-phpapp02.pptx
proyectointegrador-100308005101-phpapp02.pptxproyectointegrador-100308005101-phpapp02.pptx
proyectointegrador-100308005101-phpapp02.pptx
 
mongodb.base de datis noo relacionles fr
mongodb.base de datis noo relacionles frmongodb.base de datis noo relacionles fr
mongodb.base de datis noo relacionles fr
 
presentacinorm-150325230016-conversion-gate01.pptx
presentacinorm-150325230016-conversion-gate01.pptxpresentacinorm-150325230016-conversion-gate01.pptx
presentacinorm-150325230016-conversion-gate01.pptx
 
Curso_OBS. infromatica basica sistemas a
Curso_OBS. infromatica basica sistemas aCurso_OBS. infromatica basica sistemas a
Curso_OBS. infromatica basica sistemas a
 
introducion a sistemas de bases de datos
introducion a sistemas de bases de datosintroducion a sistemas de bases de datos
introducion a sistemas de bases de datos
 
instalacion de linux ububtu 10.10 gestio
instalacion de linux ububtu 10.10 gestioinstalacion de linux ububtu 10.10 gestio
instalacion de linux ububtu 10.10 gestio
 
seguridad de las aplicaciones web en el internet
seguridad de las aplicaciones web en el internetseguridad de las aplicaciones web en el internet
seguridad de las aplicaciones web en el internet
 
modulo tres capas redes tecnologia inter
modulo tres capas redes tecnologia intermodulo tres capas redes tecnologia inter
modulo tres capas redes tecnologia inter
 
Gestion y manejo de bases de datos II 24
Gestion y manejo de bases de datos II 24Gestion y manejo de bases de datos II 24
Gestion y manejo de bases de datos II 24
 
presentacion d actividad opara bases de datos
presentacion d actividad opara bases de datospresentacion d actividad opara bases de datos
presentacion d actividad opara bases de datos
 
aplicaciones_web_advantage_multimedia.ppt
aplicaciones_web_advantage_multimedia.pptaplicaciones_web_advantage_multimedia.ppt
aplicaciones_web_advantage_multimedia.ppt
 
gestión y manejo de bases de datos basic
gestión y manejo de bases de datos basicgestión y manejo de bases de datos basic
gestión y manejo de bases de datos basic
 
Plantilla_de_presentación_de_trabajo_remoto.pptx
Plantilla_de_presentación_de_trabajo_remoto.pptxPlantilla_de_presentación_de_trabajo_remoto.pptx
Plantilla_de_presentación_de_trabajo_remoto.pptx
 

Último

origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIIsauraImbrondone
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática5    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática5    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdfenelcielosiempre
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoJosDanielEstradaHern
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICAÁngel Encinas
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Alejandrino Halire Ccahuana
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 

Último (20)

origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática5    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática5    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° grado
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 

Herramientas de polimorfismo y herencia en C

  • 1. 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. 2
  • 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. 3
  • 4. Sobrecarga de operadores • Los operadores que se pueden sobrecargar son: +, -, *, /, %, ^, &, |, _, ', =, <, >, <=, >=, ++, --, <<, >>, ==, %%, ||, +=, -=, *=, /=, %=, &=, |=, <<=, >>=, [ ], ( ), ->, ->*, new, delete • Los operadores que no se pueden sobrecargar son: ., ::, ?:, sizeof 4
  • 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. 5
  • 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; } 6
  • 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); 7
  • 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]; } 8
  • 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; } }; 9
  • 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. 10
  • 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 { …… }; 11
  • 12. Plantillas int max(int x, int y) { return (x < y) ? y : x; } float max(float x, float y) { return (x < y) ? y : x; } 12
  • 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 13
  • 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(); } 14
  • 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. 15
  • 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. 16
  • 17. Herencia //Clase Padre class punto { protected: int x, y public: int getX(); int getY(); }; 17
  • 18. Herencia //Clase hija class linea:punto { private: int x1, y1; public: void dibujar(); }; 18
  • 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. 19
  • 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. 20
  • 21. 21 ¿Preguntas, dudas y comentarios?