Programacion C++
Programacion C++
PROGRAMACION
1/159
PROGRAMACION
C es un lenguaje de programación
originalmente desarrollado por Dennis M.
Ritchie entre 1969 y 1972 en los
Laboratorios Bell.
2/159
PROGRAMACION
3/159
PROGRAMACION
El Lenguaje C
LAS VARIABLES
LOS APUNTADORES Y LAS REFERENCIAS
LOS ARREGLOS DE DATOS
LAS SENTENCIAS
LAS CLASES
LOS OPERADORES
LAS FUNCIONES
EL C++ DE MFC
LAS CLASES DE DATOS MFC
LAS CLASES DE COLECCIONES
4/159
PROGRAMACION
int main()
{
return 0;
}
5/159
PROGRAMACION
LAS VARIABLES
6/159
PROGRAMACION
7/159
PROGRAMACION
Tipos fundamentales
Comentario
Tamaño
unsigned char 1 byte C++ no tiene un tipo byte integrado. Utilice un carácter sin
signo para representar un valor byte.
8/159
PROGRAMACION
Tipos de datos
9/159
PROGRAMACION
Los nombres
• Un nombre o identificador se compone de una secuencia de letras y
números.
• El primer carácter debe de ser una letra.
• El carácter ´_´ se considera una letra.
• No importa el numero de caracteres.
• El carácter ´$´ y las palabras reservadas no pueden ser nombres.
• Las mayúsculas son diferentes de las minúsculas
• El carácter espacio ´ ´ no puede ser parte de un nombre.
10/159
PROGRAMACION
11/159
PROGRAMACION
La notación húngara (MS)
Prefijo Significado
b Booleano (int)
c Carácter (un byte)
dw Entero largo de 32 bits sin signo (double word)
12/159
Prefijo Significado
b Booleano (int)
c Carácter (un byte)
dw Entero largo de 32 bits sin signo (double word)
f Flags empaquetados en un entero de 16 bits
h Manipulador de 16 bits (handle)
l Entero largo de 32 bits
lp Puntero a entero largo de 32 bits
lpfn Puntero largo a una función que devuelve un entero
lpsz Puntero largo a una cadena terminada con cero
n Entero de 16 bits
p Puntero a entero de 16 bits
pt Coordenadas (x, y) empaquetadas en un entero de 32 bits
rgb Valor de color RGB empaquetado en un entero de 32 bits
sz Cadena terminada en cero
w Entero corto de 16 bits sin signo (word)
13/159
PROGRAMACION
Las declaraciones
• Para que un nombre pueda ser utilizado debe de ser declarado
antes.
• El tipo del nombre debe de ser precisado para informar al
compilador del tipo.
*.h
int nValue,nAge;
Char sName;
14/159
PROGRAMACION
El valor NULL
15/159
PROGRAMACION
Los comentarios
Los comentarios tienen como propósito el de guiar en la
comprensión del programa.
• Las estructuras son tipos que reagrupan otros tipos bajo un nuevo
tipo.
• Las estructuras están definidas en el lenguaje ´C´
• Existen 3 tipos de estructuras en C++
• 1) struct. Permite agrupar variables de tipos iguales o diferentes en
un solo registro
• 2) union. Permite crear un nuevo tipo con datos compartidos
• 3) class. Permite asociar variables y funciones
18/159
PROGRAMACION
Las Estructuras (II)
Una estructura es un tipo de variable.
19/159
PROGRAMACION
Las Estructuras (III)
Un miembro de una estructura se identifica por la
variable que representa la estructura seguido de un
punto “.” seguido del nombre de la variable
20/159
PROGRAMACION
Las Estructuras (III)
*.h
structStudent {
int nAge;
char[50] sName;
} STUDENT, *LPSTUDENT;
21/159
PROGRAMACION
Las Estructuras (III)
*.cpp
structStudent EstudianteMecatronica;
int nEdad = EstudianteMecatronica.nAge;
char * pName = EstudianteMecatronica.sName;
22/159
PROGRAMACION
Las Estructuras (III)
Estructuras anidadas
Una estructura puede contener otra estructura.
*.h
structResident{
structStudent Student;
char[50] sCompany;
} RESIDENT, *LPRESIDENT;
*.cpp
structResident ResidenteMecatronica;
char * pName = ResidenteMecatronica.Student.sName;
23/159
PROGRAMACION
Las Estructuras (III)
union
• Una union es un tipo de estructura, con miembros que comparten
el mismo espacio de almacenamiento.
• Una variable de tipo union puede contener (en momentos
diferentes) objetos de diferentes tipos y tamaños.
• Las uniones proporcionan una forma de manipular diferentes clases
de datos dentro de una sola área de almacenamiento.
• En cualquier momento una union puede contener un máximo de un
objeto debido a que los miembros de una union comparten el
espacio de almacenamiento
24/159
PROGRAMACION
Las Estructuras (III)
Sintaxis de union
25/159
PROGRAMACION
Las Estructuras (III)
Los datos de una union
26/159
PROGRAMACION
Las Estructuras (III)
El operador sizeof
*.h
structResident
{
structStudent Student;
char[50] sCompany;
} RESIDENT, *LPRESIDENT;
*.cpp
Int nSize = sizeof(RESIDENT); // nSize vale 102
27/159
PROGRAMACION
Las enumeraciones
Un tipo de datos enumerado es una manera de asociar nombres a
números.
28/159
PROGRAMACION
Las variables (I)
Una variable representa un nombre que almacena un valor que puede
cambiar.
Una variable tiene necesariamente un tipo:
char, int, short, bool, float, etc.
Ejemplos:
char cInicial;
short sEdad;
int nYear;
float fPi;
29/159
PROGRAMACION
Las variables (II)
• El nombre de una variable puede estar compuesto de letras, números y
cualquier otro carácter que no sea un operador ni espacio.
• El nombre de una variable es sensible a mayúsculas
*.h
union unionValores
{
int ival;
float fval;
str sval;
} VALORES, * LPVALORES;
*.cpp
VALORES MiValor ;
MiValor.iVal = 12;
31/159
PROGRAMACION
Las variables (III)
Se pueden inicializar muchas variables en una sola línea separadas por ´,´
*.cpp
*.cpp
VALORES MiValor ;
// MiValor.iVal = 0;
// MiValor.fVal = 0;
// MiValor.sVal = ´´;
32/159
PROGRAMACION
Las variables (III)
Se pueden inicializar una variable con su constructor natural.
*.cpp
int nVal(12),fVal(3.1415);
char * pnName(NULL);
33/159
PROGRAMACION
Las variables (III)
El ámbito de una variable.
• Global o de programa
• Local o de función.
• De bloque.
34/159
PROGRAMACION
Las variables (III)
Las variables globales
*.cpp
int main()
{
35/159
PROGRAMACION
Las variables (III)
Las variables locales o de función
• Las variables locales son las que se declaran dentro de una función.
• Son accesibles desde el punto donde se declaran hasta el final del bloque
donde se han declarado.
• Los límites de los bloques están definidos por las llaves de apertura y
cierre { }.
• Si el bloque donde se ha declarado la variable local contiene a su vez otros
bloques, también son accesibles dentro de ellos.
• Las variables locales se destruyen cuando se sale del bloque donde han
sido declaradas.
• Los parámetros formales (los que aparecen en la cabecera de una función)
se consideran variables locales de la función.
36/159
PROGRAMACION
Las variables (III)
Las variables de bloque
37/159
PROGRAMACION
Las variables (III)
Ocultamiento de variables
• Una variable global y otra local y/o de bloque pueden tener el mismo
nombre.
• la variable global queda oculta en el ámbito de accesibilidad de la local del
mismo nombre.
• La variable local queda oculta en el ámbito de accesibilidad de la de
bloque.
• La variable de bloque queda oculta si en un bloque anidado se declara
otra variable con el mismo nombre
38/159
PROGRAMACION
Las variables (III)
La declaración de un nuevo tipo typedef
Syntaxis:
typedef type-declaration synonym;
39/159
PROGRAMACION
Las variables (III)
Las constantes
Syntaxis 1:
#define nombre_constante valor
La instrucción const nos permite declarar constantes de una manera más
adecuada y acorde y se declaran al interior de nuestro código como un tipo
cualquiera.
const float PI = 3.1416; //Definimos una constante llamada PI
40/159
PROGRAMACION
Las variables (III)
Las variables estáticas
void function()
{
static int nCount = 0;
}
41/159
PROGRAMACION
Los apuntadores
Y
las referencias
42/159
PROGRAMACION
Los apuntadores
A un apuntador puede asignársele un valor a través del
carácter ´&´ que precede la variable a la que va a apuntar :
Ejemplos:
char * lpcInicial = &cInicial;
short * lpnEdad = &nEdad;
int * lpnYear = &nYear;
float * lpfPi = &fPi;
Entonces…
45/159
PROGRAMACION
Los apuntadores
Apuntadores constantes
46/159
PROGRAMACION
Los apuntadores
47/159
PROGRAMACION
Los apuntadores
El apuntador void
• Un apuntador de cualquier tipo de dato puede
convertirse a un apuntador del tipo void *.
• Por esto un apuntador void *, recibe el nombre
de apuntador genérico.
• C++ no permite la conversión implícita de
punteros.
48/159
PROGRAMACION
Los apuntadores
El apuntador void
int *puntero;
funcion (*puntero);
....
void funcion (void *p)
{
int *q;
q=(int *)p; //En C se podria hacer q = p;
}
49/159
PROGRAMACION
Los apuntadores
char sName[20];
char * pchar = sName; // apunta al carácter sName[0]
pchar++; // apunta al carácter sName[1]
50/159
PROGRAMACION
Los apuntadores
Si una variable es un apuntador de una estructura, sus
miembros se identifican por el apuntador que representa
la estructura seguido de una flecha “->” seguido del
nombre de la variable
51/159
PROGRAMACION
Las referencias
• Una referencia almacena la dirección de un objeto.
• Una referencia inicializada no puede hacer referencia a
otro objeto ni establecerse en NULL.
• Una referencia se comporta como una especie de
“nombre alternativo” para un objeto.
• Una referencia necesita ser inicializada en el momento
de la declaración.
• Una referencia jamás dejará de referirse al objeto de su
inicialización.
52/159
PROGRAMACION
Las referencias
La referencia es un sobrenombre (un nombre alternativo)
para una variable mientras que un puntero es una variable
que guarda un dirección de memoria como valor.
53/159
PROGRAMACION
Las referencias
54/159
PROGRAMACION
Los parámetros de funciones
por referencias
1. Por valor
2. Por apuntador
3. Por referencia
55/159
PROGRAMACION
Los parámetros de funciones
por referencias
56/159
PROGRAMACION
Los arreglos
de datos
57/159
PROGRAMACION
Los arreglos (I)
• Los arreglos son una colección de variables de un
mismo tipo
• Un arreglo tiene un tipo
• Un arreglo va del elemento 0 al N
• Un arreglo tiene dimensiones
59/159
PROGRAMACION
Los arreglos (II)
Los arreglos y los apuntadores.
60/159
PROGRAMACION
Los arreglos (II)
Los arreglos y las cadenas alfanuméricas.
Una cadena alfanumérica es un arreglo con valor 0 del ultimo
elemento útil, lo que indica el final de la cadena.
char sName[20];
sName[0] = ´p´;
sName[1] = ´e´;
sName[2] = ´p´;
sName[3] = ´e´;
sName[4] = 0; // sName vale “pepe”
61/159
PROGRAMACION
Los arreglos (II)
La navegación en un arreglo
62/159
PROGRAMACION
Las sentencias
63/159
PROGRAMACION
Las Instrucciones (I)
• Asignacion =
Las instrucciones • if
• if – else
controlan el flujo de • if – else if
ejecución de un • for
programa • while
• switch
• break;
• return
64/159
PROGRAMACION
Las Instrucciones (II)
65/159
PROGRAMACION
La Instrucción de asignación “=“
La instrucción de
asignación “=“ int nVal = 45;
asigna un valor a
una variable
66/159
PROGRAMACION
La Instrucción de condición “if”
La instrucción de condición “if“
condiciona la ejecución de un bloque de
programa
If ( nVal == 25 )
{
// bloque condicionado
}
67/159
PROGRAMACION
La Instrucción de condición “if - else”
La instrucción de condición “if , else“
condiciona la ejecución de uno de 2
bloques de programa
if ( nVal == 25 ) if ( nVal == 25 ) nMi = 47;
{ else
// bloque condicionado {
} // bloque condicionado
else }
{
// bloque condicionado
} 68/159
PROGRAMACION
La Instrucción de condición “if –else if”
If ( nVal == 25 )
La instrucción de {
// bloque condicionado
condición “if , else }
if“ condiciona la else if (nVal == 47)
{
ejecución de N // bloque condicionado
}
bloques de else if (nControl == 52)
programa {
// bloque condicionado
}
69/159
PROGRAMACION
La Instrucción de condición “if , else if , else”
if ( nVal == 25 )
La instrucción de {
// bloque condicionado
condición “if, if else, }
if else “ condiciona else if (nVal == 47)
{
la ejecución de N // bloque condicionado
}
bloques de else
programa {
// bloque condicionado
}
70/159
PROGRAMACION
La Instrucción de iteración ”for”
La instrucción de
iteración “for“ for ( int nVal =0; nVal<10; nVal++ )
{
condiciona la // bloque condicionado
repetición de un }
bloque de programa
71/159
PROGRAMACION
La Instrucción de iteración ”for”
1) Inicialización de entrada
2) Condición de salida
3) Calculo al final del bloque
72/159
PROGRAMACION
La Instrucción de iteración “while”
73/159
PROGRAMACION
La Instrucción de condición “switch”
int nVal = 45;
La instrucción de switch( nVal )
condición {
case 0:
“switch“ … // codigo ejecutado si nVal vale 0
condiciona la break; // detiene la ejecución
case 34:
ejecución de un break;
default:
bloque de break;
programa }
entre otros
74/159
PROGRAMACION
La Instrucción de ruptura “break”
La instrucción de
ruptura de int nVal = 45;
switch( nVal )
ejecución “break“ {
case 0:
interrumpe la … // codigo ejecutado si nVal vale 0
ejecución de un break; // detiene la ejecución
}
bloque de
programa for,
while y switch
75/159
PROGRAMACION
La Instrucción de retorno “return”
La instrucción de retorno “return“
interrumpe la ejecución de un bloque
de programa y manda la ejecución a la
función que te llamó
switch( nVal )
{
case 0: // codigo ejecutado si nVal vale 0
return; // regresa la ejecucion a la funcion superior
break; // detiene la ejecución
}
76/159
PROGRAMACION
Las Funciones (I)
Las funciones son bloques de programas de uso
general con un encabezado y un cuerpo
delimitado por “{“ y “}”
• El nombre de una función sigue las reglas de nombres de variables
• Una función es una porción de código que ejecuta un calculo
• Una función puede tener n valores de entrada (parámetros)
• Una función debe tener un valor de retorno (puede ser void)
• Una función puede modificar el valor de un parámetro
int funcion (int parametro1);
void funcion (int parametro1, bool parametro 2);
int funcion (int parametro1);
77/159
PROGRAMACION
Las Funciones (II)
Ejemplo de función:
78/159
PROGRAMACION
Las clases
79/159
PROGRAMACION
Las Clases (I)
Una clase es una estructura que tiene además:
Funciones, un Constructor y un Destructor
• Públicos
• Protegidos
• Privados
82/159
PROGRAMACION
Las Clases (IV)
• Los atributos de una clase son variables propias
a esa clase
• Un atributo solo es conocido por su clase
A esta propiedad se le
llama “encapsulamiento”
83/159
PROGRAMACION
Las Clases (V)
Los miembros de una clase son funciones
propias a esa clase
• El nombre de un miembro sigue las reglas de nombres de variables
• Un miembro conoce los atributos de su clase
• Un miembro es una porción de código que ejecuta un calculo
• Un miembro puede tener n valores de entrada (parámetros)
• Un miembro debe tener un valor de retorno (puede ser void)
• Un miembro puede modificar el valor de un parámetro
class Punto
{
public: // Variables y miembro publicos
Punto(); // Constructor
…
85/159
PROGRAMACION
Las Clases (VII)
Una clase tiene una función miembro llamado “destructor”
• El destructor tiene el mismo nombre que la clase precedido por el signo ~
• El destructor es publico
• El destructor es llamado siempre cuando se destruye el objeto
• El destructor no tiene parámetros
• El destructor no tiene valor de retorno
• Una clase tiene un destructor predeterminado (default)
class Punto
{
public: // Variables y miembro publicos
~ Punto(); // Destructor
…
86/159
PROGRAMACION
Las Clases (VII)
El operador sizeof
87/159
PROGRAMACION
Las Clases (VIII)
• Un valor de un tipo se llama VARIABLE
• Un valor de una clase se llama OBJETO
88/159
PROGRAMACION
Las Clases (VIII)
Herencia múltiple
C++ permite que una clases derive de dos o más clases
base. Es decir, la clase derivada comparte los atributos y
los métodos de más de una clase.
89/159
PROGRAMACION
90/159
PROGRAMACION
Las Clases (VIII)
Sintaxis de la derivación
93/159
PROGRAMACION
Las Clases (VIII)
Las funciones virtuales
94/159
PROGRAMACION
Las Clases (VIII)
Las funciones virtuales
95/159
PROGRAMACION
Las Clases (VIII)
Las clases abstractas
96/159
PROGRAMACION
Las Clases (VIII)
Las clases abstractas
class Account
{
public: Account( double d ); // Constructor
virtual double GetBalance(); // Obtain balance
virtual void PrintBalance() = 0; // Pure virtual function
private:
double _balance;
};
97/159
PROGRAMACION
Las Clases (VIII)
El polimorfismo
100/159
PROGRAMACION
Los operadores
101/159
PROGRAMACION
Los Operadores
102/159
PROGRAMACION
Los Operadores
1. Aritméticos
2. Relacionales
3. De asignación
4. Lógicos
5. De dirección
6. De manejo de Bits
103/159
PROGRAMACION
Los Operadores
104/159
PROGRAMACION
Los Operadores
Los operadores de asignación binarios
105/159
PROGRAMACION
Los Operadores
Los operadores aritméticos
106/159
PROGRAMACION
Los Operadores
Los operadores ++ y --
107/159
PROGRAMACION
Los Operadores
Los operadores unarios ++ y --
int x,y,z;
x = 2004;
y = ++x; // x e y valen 2005
z = --y; // z e y valen 2004
108/159
PROGRAMACION
Los Operadores
Los operadores unarios ++ y --
int x,y,z;
x = 2004;
y = x++; // x vale 2005 , y vale 2004
z = y--; // z vale 2004 , y vale 2003
109/159
PROGRAMACION
Los Operadores
Los operadores binarios relacionales
Los operadores relacionales, se utilizan para comprobar la
veracidad o falsedad de propuestas de relación.
110/159
PROGRAMACION
Los Operadores
Los operadores lógicos
111/159
PROGRAMACION
Los Operadores
Los operadores de manejo de bits
112/159
PROGRAMACION
Los Operadores
Los operadores de dirección
C++ dispone de dos operadores específicos para los apuntadores y de
referencia:
1. La indirección “*”
2. La referencia “&”
113/159
PROGRAMACION
La conversión de tipos (casting)
Sintaxis:
(type) expression
114/159
PROGRAMACION
La conversión de tipos (casting)
char a(´b´);
flost fSize;
int n = (int)a;
int nSize = (int)fSize;
float fT = (float)n;
115/159
PROGRAMACION
Los operadores de clases
La sobrecarga de operadores en el interior de una clase se
asume que el primer operando es el propio objeto de la
clase donde se define el operador. Debido a esto, sólo se
necesita especificar un operando.
Sintaxis:
class Account
{
public:
int m_nAge;
COtherClass * pOtherClass;
};
117/159
PROGRAMACION
Los operadores de clases
El operador de asignación
.h
CFloatPoint & operator=(CFloatPoint & Pt); // declaración de operador
.cpp
CFloatPoint & CFloatPoint::operator=(CFloatPoint & Pt) // operateur =
{
if ( this != &Pt )
{
m_X = Pt.m_X;
m_Y = Pt.m_Y;
m_Z = Pt.m_Z;
}
return *this;
}
118/159
PROGRAMACION
Los operadores de clases
El operador de asignación
CFloatPoint fPt1(0,0,0),fPt2(10,10,10);
Double fDist = fPt1.Distance(fPt2);
119/159
PROGRAMACION
Funciones de conversión
El operador de asignación
Sintaxis:
conversion-function-name:operator conversion-type-name ()
120/159
PROGRAMACION
Funciones de conversión
El operador de asignación
class Money
{
public:
operator double() { return _amount; }
private:
double _amount;
};
int main()
{
Money Account;
double CashOnHand = Account;
}
121/159
PROGRAMACION
Funciones de conversión
El operador de asignación
class CFloatPoint
{
protected:
double m_X;
double m_Y;
double m_Z;
public:
operator CPoint() { return CPoint((int)m_X,(int)m_Y);
}
int main()
{
CFloatPoint fPt(10,20,30);
CPoint Pt = (CPoint) fPt;
}
122/159
PROGRAMACION
La asignación dinámica de la memoria
El operador new
123/159
PROGRAMACION
La asignación dinámica de la memoria
El operador delete
124/159
PROGRAMACION
La asignación dinámica de arreglos
El operador new
125/159
PROGRAMACION
La asignación dinámica de arreglos
El operador delete
126/159
PROGRAMACION
La asignación dinámica de arreglos
El operador delete
Si el operador delete se aplica a un apuntador que no apunta al arreglo
si no a un elemento el resultado es impredecible
// NUMERO TRIANGULAR
int sSuma(0);
int* pnData = new int[20]; // genera un arreglo de 20 enteros
for (int i=0;i<20;i++) *(pnData++) = i; // asigna valor a cada element
for (int i=0;i<20;i++) nSuma += *(pnData++); // ERROR !
delete [] pnData; // HORROR !
127/159
PROGRAMACION
Las funciones
128/159
PROGRAMACION
La declaración de una función
Las funciones son un conjunto de instrucciones que realizan una tarea
específica.
[<tipo_valor_retorno>[modificadores]
<identificador>(<lista_parámetros>) { [sentencias] }
130/159
PROGRAMACION
La declaración de una función
El paso de argumentos
131/159
PROGRAMACION
La declaración de una función
El paso de argumentos
.h
void FuncionChar(char * pChar);
.cpp
char * pData = new char[1024];
FuncionChar(pData);
132/159
PROGRAMACION
Las funciones virtuales
133/159
PROGRAMACION
Las sobrecarga de funciones virtuales
La sobrecarga o "overriding“ es la derivación de una clase en la cual se
redefine una función virtual que ya existía en la clase de base.
CBaseClas::FuncionVirtual();
134/159
PROGRAMACION
Funciones con numero de argumentos
indeterminados
• Los parámetros conocidos se declaran de manera “normal”
• Debe de existir al menos 1 parámetro normal
• Los parámetros desconocidos se sustituyen por tres puntos (...)
Sintaxis:
<tipo_valor_retorno> <identificador>(<lista_parámetros_conocidos>, ...);
135/159
PROGRAMACION
El C++ DE MFC
136/159
PROGRAMACION
El C++ de MFC typedef unsigned long DWORD;
typedef int BOOL;
typedef unsigned BYTE;
MFC redefine la mayoría de los typedef unsigned short WORD;
símbolos utilizados por el typedef float FLOAT;
typedef FLOAT *PFLOAT;
lenguaje C estándar. typedef BOOL near *PBOOL;
typedef BOOL far *LPBOOL;
typedef BYTE near *PBYTE;
typedef BYTE far *LPBYTE;
typedef int near *PINT;
typedef int far *LPINT;
typedef WORD near *PWORD;
typedef WORD far *LPWORD;
typedef long far *LPLONG;
typedef DWORD near *PDWORD;
typedef DWORD far *LPDWORD;
typedef void far *LPVOID;
typedef CONST void far *LPCVOID;
typedef int INT;
typedef unsigned int UINT;
typedef unsigned int *PUINT;
137/159
PROGRAMACION
El C++ de MFC
ASSERT_VALID
Sintaxis:
ASSERT_VALID( pObject );
138/159
PROGRAMACION
El C++ de MFC
Las Excepciones. TRY & CATCH y END_CATCH
139/159
PROGRAMACION
El C++ de MFC
Las Excepciones. TRY & CATCH y END_CATCH
140/159
PROGRAMACION
El C++ de MFC
Las Excepciones. TRY & CATCH y END_CATCH
int * px;
int y = 100000000;
TRY{
px = new int[y];
px[0] = 10;
cout << "Puntero: " << (void *) x << endl;
delete[] px;
}
CATCH::bad_alloc&) {
cout << "Memoria insuficiente" << endl;
}
142/159
PROGRAMACION
LAS CLASES
DE
DATOS MFC
143/159
PROGRAMACION
Las clases de datos MFC
CPoint
144/159
PROGRAMACION
Las clases de datos MFC
CRect
145/159
PROGRAMACION
Las clases de datos MFC
CSize
146/159
PROGRAMACION
Las clases de datos MFC
CString
147/159
PROGRAMACION
LAS CLASES
DE
COLECCIONES
148/159
PROGRAMACION
Las clases de datos MFC
Las Colecciones
Las clases de colección sirven para administrar grupos de
objetos.
• CArray
• CList
• CMap
149/159
PROGRAMACION
Las clases de datos MFC
La Colección CArray
La clase CArray proporciona una matriz de objetos
indizada por números enteros, ordenada y con el tamaño
ajustado dinámicamente.
CDWordArray
CPtrArray
CStringArray
CWordArray
CUIntArray
151/159
PROGRAMACION
Las clases de datos MFC
La Colección CList
La clase CList proporciona una lista de objetos ordenados
sin indizar, implementada como una lista doblemente
ligada.
Matrices
CObList
CPtrList
CStringList
153/159
PROGRAMACION
Las clases de datos MFC
La Colección CMap
• La clase CMap es una colección que asocia un objeto
clave a un objeto de valor.
• Un Mapa es también conocido como un diccionario.
• CMap está implementado para que dada una llave, el
elemento correspondiente sea encontrado muy
rápidamente.
• MFC utiliza CMap para almacenar los HANDLES
(correlaciona HWND´s a CWnd´s, HPEN´s a CPen´s, y
así con todos loa objetos sistema.)
154/159
PROGRAMACION
Las clases de datos MFC
La Colección CMap
Existen 2 tipos básicos de colección CMap:
155/159
PROGRAMACION
Las clases de datos MFC Matrices
La Colección CMap CMapPtrToWord
Las clases predefinidas (sin plantilla) CMapPtrToPtr
CMapStringToOb
CMapStringToPtr
CMapStringToString
CMapWordToOb
CMapWordToPtr
156/159
PROGRAMACION
Class Name Description
CMapWordToPtr Stores void pointers keyed by WORDs
157/159
PROGRAMACION
Las clases de datos MFC
Características de las formas de colección
158/159
159/159