Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf ·...
Transcript of Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf ·...
![Page 1: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/1.jpg)
3.1 Tipos de datos primitivos
3.2 Declaración de clases y subclases
3.3 Declaración de herencia e interfaces
3.4 Relaciones entre clases
3.5 Clases y métodos genéricos
Lenguaje de Programación Orientado a Objetos
![Page 2: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/2.jpg)
3.1 Tipos de datos primitivos
![Page 3: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/3.jpg)
Aspectos básico de C++
![Page 4: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/4.jpg)
OPERADORES DE ASIGNACIÓN
![Page 5: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/5.jpg)
En el caso de los post-incrementos y post-decrementos pasa lo contrario: se
utilizará el valor actual del operando y luego se efectuará la operación de
incremento o decremento”
![Page 6: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/6.jpg)
también existen operadores para los punteros, sin embargo estos solo aplican
para aquellos apuntadores a matrices, arreglos o listas de elementos, y aunque se
muestran a continuación, se explicaran de una mejor forma en el material de
apuntadores o punteros en c++
![Page 7: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/7.jpg)
OPERADORES RELACIONALES
“Los operadores relacionales, también denominados operadores binarios lógicos
y de comparación, se utilizan para comprobar la veracidad o falsedad de
determinadas propuestas de relación (en realidad se trata respuestas a
preguntas). Las expresiones que los contienen se denominan expresiones
relacionales. Aceptan diversos tipos de argumentos, y el resultado, que es la
respuesta a la pregunta, es siempre del tipo cierto/falso, es decir, producen un
resultado booleano.
Si la propuesta es cierta, el resultado es true (un valor distinto de cero), si es falsa
será false (cero). C++ dispone de los siguientes operadores relacionales:
![Page 8: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/8.jpg)
![Page 9: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/9.jpg)
OPERADORES LÓGICOS
“Los operadores lógicos producen un resultado booleano, y sus operandos
son también valores lógicos o asimilables a ellos (los valores numéricos son
asimilados a cierto o falso según su valor sea cero o distinto de cero). Por el
contrario, las operaciones entre bits producen valores arbitrarios. Los operadores
lógicos son tres, dos de ellos son binarios y el último (negación) es unario:
![Page 10: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/10.jpg)
Si el resultado del operando izquierdo es cierto, se continúa con la evaluación de
la expresión de la derecha, que también es convertida a bool. Si el nuevo
resultado es true, entonces el resultado del operador es true. En caso contrario
el resultado es false.
![Page 11: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/11.jpg)
OPERADORES DE BITS
“Los operadores de movimiento son operadores a nivel de bits, y lo que hacen es
convertir una determinada cantidad a su equivalente en bits para posteriormente
realizar un desplazamiento de dicho valor. Estos operadores son:
![Page 12: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/12.jpg)
OPERADORES DE DIRECCIÓN
Además de los operadores aritméticos, de los que existen versiones para los
tipos numéricos y para los punteros, C++ dispone de dos operadores
específicos para estos últimos (punteros de cualquier tipo): la indirección “*” y la
referencia “&” . Además existen dos operadores específicos para punteros-a-
clases
![Page 13: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/13.jpg)
la clase cmath
![Page 14: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/14.jpg)
Palabras clave
![Page 15: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/15.jpg)
![Page 16: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/16.jpg)
![Page 17: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/17.jpg)
![Page 18: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/18.jpg)
![Page 19: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/19.jpg)
![Page 20: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/20.jpg)
![Page 21: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/21.jpg)
![Page 22: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/22.jpg)
![Page 23: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/23.jpg)
Sentencias de selección
La sentencia if
if (expresión booleana)
{
<sentencias>
}
else
{
<sentencias>
}
![Page 24: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/24.jpg)
Ejercicio de clases
Implemente un programa en C++ que rellene un arreglounidimensional de 20 elementos y que escriba el contenido de losíndice impares y posteriormente los contenido del los índices pares
![Page 25: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/25.jpg)
Entrada y salida estandar
#include <iostream> incluye definiciones y declaraciones para lasclases que definen E/S en C++ (iostream, istream y ostream)
#include <stdio.h> contiene las definiciones y declaraciones para lafunción estándar de E/S de C
![Page 26: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/26.jpg)
Salida estándar
#include <iostream>
/* comentario1 */
// comentario2
using namespace std;
Void main()
{
count <<“hola mundo "\n“;
}
![Page 27: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/27.jpg)
Salida con formato
![Page 28: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/28.jpg)
Entrada estándar
#include <iostream>
/* comentario1 */
// comentario2
using namespace std;
Void main()
{ int cantidad
cin>>cantidad;
}
![Page 29: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/29.jpg)
Operador de resolución del ámbito (::)
Permite acceder a una variable global cuya visibilidad ha sido ocultada por una variable global, también esusada para indicar a que clase pertenece una determinada función miembro
![Page 30: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/30.jpg)
Ejemplo estructuras repetitivas
![Page 31: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/31.jpg)
Do-while
![Page 32: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/32.jpg)
for
![Page 33: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/33.jpg)
SOBRECARGA DE FUNCIONES
![Page 34: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/34.jpg)
Otro ejemplo
![Page 35: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/35.jpg)
Primer practica c++
![Page 36: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/36.jpg)
3.2 Declaración de clases y subclases
![Page 37: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/37.jpg)
Definición de clases en C++
![Page 38: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/38.jpg)
Ejemplo
![Page 39: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/39.jpg)
Complex
-int real
-int img
+Complex()
+Read(…)
+Write()
+suma()
![Page 40: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/40.jpg)
![Page 41: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/41.jpg)
![Page 42: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/42.jpg)
![Page 43: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/43.jpg)
![Page 44: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/44.jpg)
Agenda versión Windows y dev c++
![Page 45: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/45.jpg)
Ejemplo 2
![Page 46: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/46.jpg)
![Page 47: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/47.jpg)
Ejercicio de clase
Implemente un programa de vectores, dicho vector tendrá 4componentes, use paradigma orientado a objetos y como lenguajec++, y sus métodos serán los siguientes:
Lectura del vectorEscritura de un vectorNorma de un vectorMultiplicación del vector por un escalar
![Page 48: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/48.jpg)
![Page 49: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/49.jpg)
Destructores
![Page 50: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/50.jpg)
Constructores
Es normal que una parte de un objeto necesite una inicialización antes de poder usarse.Un constructor no es más que una función miembro de la clase que aglutinará unconjunto de instrucciones que permiten inicializar memoria asociada a los objetos de laclase. Normalmente se utilizan para iniciar el objeto cuando éste se crea. Suscaracterísticas son:
Tiene en mismo nombre que la clase. Puede definirse inline o fuera de la declaración de la clase. Pueden aceptar parámetros, los cuales puede definirse con valores por defecto. ƒ Puede estar sobrecargado. Se puede declarar más de un constructor para una misma
clase si todos ellos tienen diferente lista de argumentos. Esto es útil si se quiere iniciar los objetos de varias formas diferentes.
No devuelven valores. No se puede especificar un valor de retorno cuando se declara un constructor, ni siquiera void. En consecuencia, un constructor no puede tener ninguna sentencia return.
El constructor se ejecuta automáticamente cuando se crea un objeto de tipo clase. No se invoca nunca de forma explícita.
ƒEl constructor se suele declarar en la sección pública. Si se hiciera en la sección privada sólo podría ser utilizado por los objetos que se creasen en las funciones miembro y en las funciones amigas
![Page 51: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/51.jpg)
Se denomina constructor por defecto de la clase al constructor que no tiene argumentos.No es obligatorio definir constructores cuando se define una clase, pero es una buenatécnica de programación hacerlo. Si no se define ninguno, el compilador de formaautomática genera un constructor que no tiene ningún parámetro, un constructor pordefecto, que no hace nada, no inicia los datos miembro.
![Page 52: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/52.jpg)
Destructores
Los destructores son funciones miembro especiales que sirven para eliminar un objeto deuna determinada clase. El destructor realizará procesos necesarios cuando un objetotermine su ámbito temporal, por ejemplo liberando la memoria dinámica utilizada por dichoobjeto o liberando recursos usados, como ficheros, dispositivos, etc.Al igual que los constructores, los destructores también tienen algunas característicasespeciales:
También tienen el mismo nombre que la clase a la que pertenecen, pero tienen el símbolo ˜ delante.
No tienen tipo de retorno, y por lo tanto no retornan ningún valor. No tienen parámetros. No pueden ser heredados. Deben ser públicos, no tendría ningún sentido declarar un destructor como privado, ya
que siempre se usan desde el exterior de la clase, ni tampoco como protegido, ya que no puede ser heredado.
No pueden ser sobrecargados, lo cual es lógico, puesto que no tienen valor de retorno ni parámetros, no hay posibilidad de sobrecarga.
![Page 53: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/53.jpg)
Constructores sobrecargados
![Page 54: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/54.jpg)
![Page 55: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/55.jpg)
![Page 56: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/56.jpg)
3.3 Declaración de herencia e interfaces
Interface
![Page 57: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/57.jpg)
Concepto de herencia Jerarquía de clases
La jerarquía de clases conectadas mediante relaciones de herencia formaestructuras de apariencia arborescente. Una clase puede heredar datos yfunciones miembros de una o más clases base, aquí sólo consideraremos laherencia simple (heredar de una única clase base) y no la múltiple.
![Page 58: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/58.jpg)
La relación de herencia entre clases puede ser: pública (public), privada (private) óprotegida (protected). La relación que se utiliza con mayor frecuencia es la pública.Dependiendo del número de clases y de cómo se relacionen, la herencia puede ser: a)Simple. b) Múltiple.
Tipos de Herencia.
Cuando sólo se tiene una clase base de la cual hereda la clase derivada, se dice quehay herencia simple(figura a). Sin embargo, la herencia simple no excluye laposibilidad de que de una misma clase base se pueda derivar más de una subclase oclase derivada (figura b)
Herencia Simple.
![Page 59: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/59.jpg)
Person
a
-nombre
-dirección
-ciudad
+leer()
+visualizar()
Paciente
-id
-tel
-fecha_nac;
+leer_paciente()
+visualizar_paciente()
+enviar_fact()
Empleado
-id
-horas_extra
-tel
+leer_empleado()
+visualizar_emplea
do()
+enviar _sal();
Proveedor
-cod_vendedor
-saldo
-fax
-tel
-descuento
+leer_provedor()
+visualizar_provedor()
+pagar_fact()
Persona
-nombre
-dirección
-ciudad
+leer()
+visualizar()
Empleado
-id
-horas_extra
-tel
+leer_empleado()
+visualizar_emplea
do()
+enviar _sal();
Figura a) Figura b)
![Page 60: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/60.jpg)
Ejemplo
![Page 61: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/61.jpg)
![Page 62: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/62.jpg)
Examen
2) Construir una clase Factura que descienda de la clase Precio y que incluya dosatributos específicos llamados emisor y cliente y, al menos, un método llamadoimprimirFactura.
1)
![Page 63: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/63.jpg)
3) Escribe un programa para una biblioteca que contenga libros y revistas.
![Page 64: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/64.jpg)
![Page 65: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/65.jpg)
4) Ejemplo de una jerarquía de herencia de distintos tipos de cuenta
Cuenta
Cuenta corrienteCuenta ahorros
Cuenta ahorradores Estudiante
![Page 66: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/66.jpg)
En el tipo de herencia múltiple se usan dos o más clases base paraderivar una clase. Es decir, la clase derivada comparte los atributos ylos métodos de más de una clase (Figura c).
Herencia Múltiple.
Nota: Java no permite herencia múltiple que ocurre cuando
una clase se deriva de dos o más clases en C++ esto si es
valido
![Page 67: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/67.jpg)
Figura
Círculo Triángulo Cuadrado
es un
Ejercicio de clases(herencia simple)
+ lado+Int l1,l2,l3,b,h+int r;
-Circulo()-Area()-Perimetro()
-Triangulo()-Area()-Perímetro()
-Cuadrado()-Area()-Perimetro()
+String nombre+String color
-Figura ()-write()
![Page 68: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/68.jpg)
Java
Paciente_empleado
…………………..
……………………..
Persona
-nombre
-dirección
-ciudad
+leer()
+visualizar()
Paciente
-id
-tel
-fecha_nac;
+leer_paciente()
+visualizar_paciente()
+enviar_fact()
Empleado
-id
-horas_extra
-tel
+leer_empleado()
+visualizar_empleado()
+enviar _sal();
Proveedor
-cod_vendedor
-saldo
-fax
-tel
-descuento
+leer_provedor()
+visualizar_provedor()
+pagar_fact()
Java
C++
Figura c)
![Page 69: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/69.jpg)
Concepto de modularidad
![Page 70: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/70.jpg)
![Page 71: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/71.jpg)
Programa Persona_empleado
![Page 72: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/72.jpg)
![Page 73: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/73.jpg)
![Page 74: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/74.jpg)
Ejemplo 1
![Page 75: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/75.jpg)
![Page 76: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/76.jpg)
![Page 77: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/77.jpg)
Ejercicio 1
![Page 78: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/78.jpg)
Ejercicio 2
![Page 79: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/79.jpg)
![Page 80: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/80.jpg)
3.4 Relaciones entre clases
![Page 81: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/81.jpg)
3.5 Clases y métodos genéricos
![Page 82: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/82.jpg)
Métodos inlineComo cualquier otra función en C++, las funciones miembro pueden ser inline. Hay
dos formas para hacer que una función miembro sea inline.
![Page 83: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/83.jpg)
La declaración de una función en línea es una solicitud al compilador. Si el
compilador considera que la función es demasiado complicada, bien por su tamaño
o por contar con una estructura compleja, la tratará como si fuera una función
ordinaria. Estas funciones alcanzan su mayor funcionalidad y sentido cuando se
trata de funciones muy cortas.
Sólo se puede utilizar una función en línea en el archivo en que está definida. La
razón es que el compilador necesita la definición completa de la función para poder
insertar el cuerpo de la misma siempre que se llame. Por este motivo si se utiliza unfichero cabecera para declarar una clase, y dicha clase contiene funciones miembroinline, éstas deben definirse en el mismo archivo cabecera.
![Page 84: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/84.jpg)
Ejemplo de función inline
![Page 85: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/85.jpg)
Funciones miembro que retornan una referencia.
En ocasiones se pueden ver clases en C++ que declaran funciones miembro que
retornan referencias a miembros dato privados, por lo que los están convirtiendo en
públicos. Esto se considera una mala técnica de programación porque viola el
encapsulamiento
![Page 86: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/86.jpg)
![Page 87: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/87.jpg)
Objetos y funciones miembro constantes
De la misma manera que se utiliza la palabra reservada const cuando se declara una
variable, se puede usar para la declaración de un objeto. Tal declaración significa que el
objeto es una constante y ninguno de los datos miembro podrá ser modificado. Por
ejemplo:const Fecha nacimiento(9, 7, 1971);
La declaración anterior significa que los atributos del objeto nacimiento de la clase
Fecha no pueden ser modificados.
![Page 88: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/88.jpg)
![Page 89: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/89.jpg)
Miembros estáticos
Atributos estáticos
Cada vez que se define un objeto a partir de una clase concreta los elementos de
datos se duplican. Es decir, los atributos de diferentes instancias de objetos de la
misma clase son independientes y ocupan posiciones diferentes de memoria. Si se
desea que todos los objetos instanciados de una clase compartan una sola copia de
un atributo, se puede definir el atributo como static. Esto se puede utilizar como una
forma de comunicación entre los objetos.
Se puede declarar private, y sólo podrán acceder a él las funciones miembro, o
public con lo que será accesible al resto del programa.
Un ejemplo de un miembro estático privado puede ser:class Cuenta {
char nombre[50];
float total;
static float incremento;
public:
Cuenta ();
void Interes() { total += incremento*total;}
};
![Page 90: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/90.jpg)
En el ejemplo anterior sólo existe una copia de incremento, y es accesible por
todas las instancias de la clase Cuenta. Cada vez que se llame al método Interes
por cualquier objeto de la clase Cuenta, se empleará el mismo valor de
incremento, compartido por todas las instancias. La siguiente figura ilustra este
ejemplo
suponiendo que se han definido tres objetos. Se observa como incremento es un
miembro común a los tres objetos.
Por ejemplo, si incremento fuera un miembro público, se podría acceder a él de la
siguiente manera:// Si incremento fuera públicovoid main () {
Cuenta::incremento=0.000154;}
![Page 91: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/91.jpg)
![Page 92: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/92.jpg)
Métodos estáticos
Si se tienen funciones miembro que sólo acceden a datos miembro estáticos de
una clase, se pueden declarar éstas como static también. Como ejemplo se va a
modificar la clase cuenta que se introdujo en el apartado anterior.class Cuenta {
char nombre[50];
float total;
static float incremento;
public:
Cuenta ();
void Interes() { total += incremento*total;}
static void ActualizaIncremento( float valor)
{incremento=valor;}
};
Las funciones miembro estáticas se llaman con la misma sintaxis que se usa para
acceder a los datos miembro estáticos, es decir es utilizando directamente el
nombre de la clase:void main (void) {
Cuenta micuenta;
Cuenta::ActualizaIncremento (0.016);
micuenta.ActualizaIncremento (0.016);
}
![Page 93: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/93.jpg)
Una función miembro, estática o no, puede manejar variables globales. En el
siguiente ejemplo se muestra el manejo desde una función miembro estática.
![Page 94: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/94.jpg)
Matrices de objetos
Se pueden declarar matrices de objetos de la misma manera que se declaran
de cualquier otro tipo de datos.
![Page 95: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/95.jpg)
Sólo se han iniciado explícitamente los elementos 0 y 1 de colonia. Para el resto se
habrá utilizado el constructor por defecto para la clase Hormiga
Ejemplo:Hormiga colonia[10] = { Hormiga(4,1), Hormiga(6,1) };
Si la clase tiene un constructor con un solo parámetro, se puede especificar el
argumento como valor inicial de un elemento. Se pueden mezclar diferentes
estilos de iniciación.
![Page 96: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/96.jpg)
Object Array (1)
![Page 97: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/97.jpg)
Object Array(2)
![Page 98: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/98.jpg)
Introducción a las plantillas
Los tipos genéricos o parametrizados, también llamados plantillas,permiten construir una familia de clases relacionadas, diferenciándose entresí en el tipo de los datos que manipulan; esto es, son un mecanismo de C++que. permite que un tipo pueda ser utilizado como parámetro en ladefinición de una clase
En lugar de desarrollar, por ejemplo, una clase PilaEnt para enteros yotra PilaLong para enteros largos, podemos desarrollar una clase genérica oplantilla, Pila, que sirva para esos y otros casos, en el fichero Stack.h:
![Page 99: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/99.jpg)
La palabra clave template
C++ utiliza una palabra clave específica template para declarar y definirfunciones y clases genéricas. En estos casos actúa como unespecificador de tipo y va unido al par de ángulos < > que delimitan losargumentos de la plantilla:
template void fun(T& ref); // función genérica
template class C {/*...*/}; // clase genérica
![Page 100: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/100.jpg)
Funciones genéricas
Solución:
#define min(a,b)(((a)<(b)) ?(a):(b))
Double x=26.4, y 26.1
Cout <<min(x,y)<<endl;Int min(int a, int b)
{
return(a<b)?a:b
}
![Page 101: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/101.jpg)
![Page 102: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/102.jpg)
![Page 103: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/103.jpg)
Para ilustrarlo veremos la clase mVector. Los objetos mVector son matrices cuyos elementos son objetos de la clase Vector; que a su vez representan vectores de un espacio de dos dimensiones.
![Page 104: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/104.jpg)
Definición de una clase genérica
La definición de una clase genérica tiene el siguiente aspecto:
template class nombreClase { ... };
Una clase genérica puede tener una declaración adelantada (forward) para ser declarada después:
![Page 105: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/105.jpg)
Observe que aparte del cambio de la declaración, se han sustituido las ocurrencias de Vector (un tipo concreto) por el parámetro T. Observe también la definición de mostrar() que se realiza off-line con la sintaxis de una función genérica. Recordemos que en estas expresiones, el especificador class puede ser sustituido por typename , de forma que la primera línea puede ser sustituida por:
![Page 106: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/106.jpg)
![Page 107: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/107.jpg)
![Page 108: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/108.jpg)
![Page 109: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/109.jpg)
![Page 110: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/110.jpg)
Ejercicio o practica
![Page 111: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/111.jpg)
Los compiladores necesitan que la plantilla completa -declaración de la clase y definiciones de los
métodos- se encuentre en un único fichero .h -sin .cpp-.La definición de la clase va precedida de la especificación de plantilla:
template<class Tipo> class Stack {
...
}
La implementación de una función miembro fuera de la clase debe ir precedida de la especificación de
plantilla y el nombre de la función debe ir cualificado con el nombre genérico de la clase -el nombre
seguido del tipo genérico entre ángulos-:template<class Tipo>
void Stack<Tipo>::push(Tipo dato) {
...
}
Una vez creada la clase genérica, podemos crear un ejemplar concreto indicando entre ángulos el tipo
particular que se desea que utilice la clase:Stack<int> pila1;
Stack<long int> pila2;
Stack<Persona> pila3;
![Page 112: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/112.jpg)
![Page 113: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/113.jpg)
Las plantillas también pueden tener definidos parámetros que no sean tipos, sino valores. Por ejemplo, para
crear una clase Lista genérica puede ser necesario indicar el tamaño deseado. También en la definición dedicha lista genérica se pueden indicar valores por defecto. Así, nuestro fichero Lista.h sería:
![Page 114: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/114.jpg)
Métodos genéricos
Hemos señalado que, por su propia naturaleza, los métodos de clasesgenéricas son a su vez (implícitamente) funciones genéricas con losmismos parámetros que la clase, pero pueden ser además funcionesgenéricas explícitas (que dependan de parámetros distintos de laplantilla a que pertenecen):
![Page 115: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/115.jpg)
Según es usual, la definición del miembro genérico puede efectuarse de dos formas, inline u off-line:
![Page 116: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/116.jpg)
Crear e implementar un programa que cree un arreglo de 3 objetos (complejos) y realice las operaciones suma y resta
Trabajo de clase
![Page 117: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/117.jpg)
super
1. Invoca a un método de la superclase
2. Invoca a un constructor de la superclase
Solo puede aparecer como primera
sentencia de otro constructor
super
![Page 118: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/118.jpg)
El Objeto this
Permite acceder al objeto actual cuyo comportamiento se está definiendo. Es un apuntador a
una clase usado dentro de cualquier método de dicha clase
![Page 119: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/119.jpg)
Caso 1 de this
![Page 120: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/120.jpg)
Caso 2 de this
![Page 121: Lenguaje de Programación Orientado a Objetoshilario_sm/slide/Programacion_2/Unidad III.pdf · apuntadores o punteros en c++. ... “Losoperadores relacionales, también denominados](https://reader030.fdocuments.mx/reader030/viewer/2022040905/5e78ded94ce175492a438e58/html5/thumbnails/121.jpg)
Bibliografía
• http://www.grch.com.ar/docs/unlu.poo/Clases-objetos%20C++.pdf• http://www.udb.edu.sv/udb/archivo/guia/informatica-ingenieria/programacion-
ii/2013/i/guia-9.pdf• http://burningbytecodes.blogspot.com/2014/08/c-poo-plantillas-y-excepciones.html• http://www.elai.upm.es/moodle/pluginfile.php/2298/mod_resource/content/1/Tema
6_libroC%2B%2B2013.pdf