Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TADs - Secuencias
TADs - Secuencias
TADs
Diseño de TADs
Implementación de TADs
Secuencias
Programación Genérica
STL
Referencias
2
PARA RECORDAR
3
TAD
• Consta de:
–Datos (representación):
● Definición:
–Especificación (¿qué hace el TAD?)
Ventajas:
● Mejor conceptualización y modelización.
● Mejora la robustez.
● Permite extensibilidad.
6
TAD (4)
http://es.wikipedia.org/wiki/Unión_de_conjuntos
Ejemplos:
● TAD Conjunto
● TAD Carrera
● TAD Biblioteca
● TAD Vehículo
7
https://co.pinterest.com/pin/532832199639015903/
DISEÑO DE TADs
● Diseño de TADs:
– Comportamientos del objeto en el mundo real
(interfaz/verbos).
– Conjunto mínimo de datos que lo representan
(estado/sustantivos).
– TAD = Interfaz + Estado.
8
DISEÑO DE TADs (2)
9
DISEÑO DE TADs (3)
EJEMPLO
● TAD Carrera
dato1 dato1
dato2 dato2
operacion1 operacion1
operacion2 operacion2
operacion3
TAD 3
dato1
¡Atención! dato2
¡No es un diagrama operacion1
de clases!
11
IMPLEMENTACIÓN DE TADs (1)
Diferentes posibilidades:
–Estructura con datos y funciones propias o adicionales.
Utilizando librerías:
–En el archivo de cabecera (.h) se realiza la declaración de los datos y
los prototipos.
–Enel archivo de implementación (.cpp ó .cxx) se desarrolla la
implementación de las operaciones.
12
IMPLEMENTACIÓN DE TADs (2)
prototipos de operaciones.
● - Implementación (.cpp ó .cxx):
del TAD.
13
IMPLEMENTACIÓN DE TADs (3)
14
IMPLEMENTACIÓN DE TADs (4)
struct Carrera{
std::string nombre;
unsigned long numEst;
std::string ObtenerNombre();
unsigned long ObtenerNumEst();
void FijarNombre(std::string nombre);
void AgregarEstud();
void EliminarEstud();
};
15
IMPLEMENTACIÓN DE TADs (5)
class Carrera {
public:
Carrera();
std::string ObtenerNombre();
unsigned long ObtenerNumEst();
void FijarNombre(std::string name);
void AgregarEstud();
void EliminarEstud();
protected:
std::string nombre;
unsigned long numEst;
};
16
IMPLEMENTACIÓN DE TADs (6)
–Públicas(public):
Todas las operaciones del TAD.
Dan acceso a los datos (atributos) del TAD + el constructor.
17
IMPLEMENTACIÓN DE TADs (7)
OJO:
● El diseño e implementación descrito anteriormente será
exigido en todas las actividades del curso (talleres, parciales,
proyecto, quices) de aquí en adelante, durante todo el
semestre.
19
SECUENCIAS
𝑆 = 𝑠𝑖 ∈ 𝑇: 1 ≤ 𝑖 ≤ 𝑛, 𝑖 ∈ ℕ
𝑆 = 𝑠1 , 𝑠2 , 𝑠3 , … , 𝑠𝑛
Conceptos relevantes:
anterior
primero
S0 S1 S2 S3 S4 S5 S6 S7
último
siguiente
posición
índice
21
SECUENCIAS (3)
Conceptos relevantes:
Secuencia 1
S0 S1 S2 S3 S4 S5 S6 S7
Secuencia 2 ≠ Secuencia 1
S1 S3 S6 S0 S2 S5 S7 S4
22
SECUENCIAS (4)
¿Cómo implementarlas?
● Arreglo estático: tamaño fijo
1 1 2 3 5 8 13 21
p a l a b r a s
23
SECUENCIAS (5)
¿Cómo implementarlas?
● Arreglo estático: tamaño fijo
1 1 2 3 5 8 13 21 34
int miArr2[9];
for (int i = 0; i < 8; i++)
miArr2[i] = miArr[i];
miArr2[8] = 34;
24
SECUENCIAS (6)
¿Cómo implementarlas?
● Arreglo por memoria dinámica: tamaño variable
¿Cómo implementarlas?
● Arreglo por memoria dinámica: tamaño variable
1 2 3 4 5 6 7 8 9
¿Cómo implementarlas?
Necesidad:
- estructura totalmente dinámica, que ajuste su tamaño en
tiempo de ejecución
Continuará….
27
PROGRAMACIÓN GENÉRICA
(PLANTILLAS)
a = b + c;
En C++, ¿qué problemas tiene la línea anterior?
28
PROGRAMACIÓN GENÉRICA
(PLANTILLAS) (2)
int b = 5;
int c = 6;
int a = b + c; SUMA INT
31
PROGRAMACIÓN GENÉRICA
(PLANTILLAS) (5)
Plantilla con un tipo de dato:
int i, j = 25;
long l = 4567;
i = suma<int,long> (j,l);
33
PROGRAMACIÓN GENÉRICA
(PLANTILLAS) (7)
Plantilla para clases template< class T >
class vec_par {
T valores [2];
public:
vec_par (T uno, T dos)
{
valores[0] = uno;
valores[1] = dos;
}
T minimo ();
}; 34
PROGRAMACIÓN GENÉRICA
(PLANTILLAS) (8)
Plantilla para clases
36
PROGRAMACIÓN GENÉRICA
(PLANTILLAS) (10)
Ejercicio:
Utilizando plantillas, implementar un TAD Operación Binaria,
definido por:
- Operando1 (entero, real o caracter).
- Operando2 (entero, real o caracter).
- Operación (caracter, uno de: '+', '-', '*', '/').
Y con la operación:
- EvaluarOperación (OperaciónBinaria): retorna el resultado de
aplicar la operación sobre los operandos.
https://replit.com/@OscarMartinez25/OpBinaria 37
PROGRAMACIÓN GENÉRICA
(PLANTILLAS) (11)
Ejercicio:
template <class N>
struct OpBinaria {
N op1;
N op2;
char operacion;
N EvaluarOperacion();
};
38
PROGRAMACIÓN GENÉRICA
(PLANTILLAS) (12)
Ejercicio:
template <class N>
N OpBinaria<N>::EvaluarOperacion() {
N resul;
switch( operacion ) {
case '+': resul = op1 + op2; break;
case '-': resul = op1 – op2; break;
case '*': resul = op1 * op2; break;
case '/': resul = op1 / op2; break;
}
return resul;
}
39
PROGRAMACIÓN GENÉRICA
(PLANTILLAS) (13)
Organización de las librerías con plantillas:
● Encabezado (.h)
40
PROGRAMACIÓN GENÉRICA
(PLANTILLAS) (14)
OJO
● Encabezado o cabecera (.h):
–Incluye al final el archivo de implementación (.hxx).
41
STANDARD TEMPLATE LIBRARY (STL)
Tres componentes:
Contenedores (containers).
●
● Algoritmos (algorithms).
● Iteradores (iterators).
www.bogotobogo.com/cplusplus/stl_vector_list.php
http://www.sgi.com/tech/stl 42
STANDARD TEMPLATE LIBRARY (STL) (2)
Componentes:
● Contenedores: clases predefinidas para almacenamiento de
datos.
http://www.sgi.com/tech/stl 43
STANDARD TEMPLATE LIBRARY (STL) (3)
www.bogotobogo.com/cplusplus/stl3_iterators.php
http://www.sgi.com/tech/stl 44
TAREA
45
REFERENCIAS
46