Documentos de Académico
Documentos de Profesional
Documentos de Cultura
A los efectos de lo que busca la empresa, se concluye que los datos relevantes
de una carta son el palo y el valor de la misma, mientras que el resto de las
características (dimensiones, color, etc.) son ignoradas.
De este modo queda definida una carta, sin embargo, no queda claro el hecho
de que ambas variables forman un único objeto. Dichas variables deberían
manejarse como si fuesen una sola, deberían estar relacionadas de alguna
forma.
Definición de estructura
typedef struct {
T1 C1;
T 2 C2;
.........
.........
Tn Cn;
} NuevoTipo;
Donde:
Por lo tanto, se puede definir una estructura para representar una carta, de la
siguiente manera:
typedef struct {
int valor;
tipo_palo palo;
} Carta;
Observación:
Se dice que un objeto tiene la estructura de un producto cartesiano, si de la
abstracción resulta que tiene una cantidad fija de características relevantes no
necesariamente del mismo tipo.
Todo objeto con esta estructura puede ser representado, en los lenguajes de
programación, por un tipo de datos generado por el constructor de tipos struct
(o similar).
Conjunto de Operaciones
Las operaciones predefinidas para un elemento de un tipo struct, son las que
se dan a continuación:
Asignación
Se realiza de la misma forma que el resto de las asignaciones:
identificador_variable = expresion_struct
Comparación
Esta operación no está disponible en el lenguaje y cuando se necesite deberá
ser implementada por el usuario.
NombreVariable . NombreDeLaComponente
Ejemplo:
typedef struct {
string nombre;
float sueldo_base;
int antiguedad;
} empleado;
Advertencia:
Es responsabilidad del programador usar la estructura adecuadamente,
asegurándose de no acceder a elementos del arreglo que estén más allá del
tope, a menos que se pretenda agregar un nuevo elemento.
Unión Discriminada
donde:
c1,c1, …., cn
son nombres que se le dan a cada componente las cuales corresponden
a los tipos T1,T2, ...,Tn , lo cual permite referenciar fácilmente una de
ellas.
Observación:
Generalmente, al realizar uniones discriminadas, los tipos intervinientes en la
construcción del nuevo tipo, tienen alguna componente en común (en el caso
anterior, el nombre y el sueldo base). Podría aprovecharse este hecho para
hacer una definición algo diferente:
Observación:
En la unión se reserva un espacio de memoria del tamaño de la componente
más grande, suficiente para poder almacenar cualquiera de las componentes, en
lugar de reservar un espacio independiente para cada una de las componentes.
Conjunto de Operaciones
Las operaciones sobre uno de estos tipos son:
Asignación
Se realiza según la sintaxis tradicional.
Comparación
Dos valores e1 y e2 de un tipo unión discriminada son iguales si pertenecen al
mismo tipo y tienen el mismo valor según el tipo al que pertenecen.
En general, en los lenguajes de programación esta operación no está
predefinida, y su definición queda a cargo del programador.