Está en la página 1de 8

Programacin II.

Gua 5
Tema: Arreglos de Objetos en C++.
Describir la implementacin de arreglos de Objetos.
Implementar programas en C++ que incluyan el uso de Arreglos de Objetos.
Computadora con el software DevC++
u!a "#mero $
Arreglo de objetos.
%a funcin b&sica de un arreglo es almacenar en una variable m&s de un valor de un mismo
tipo de dato' por ejemplo la siguiente declaracin int numero ($)* permite almacenar en la
variable numero' $ valores enteros.
+n las clases el concepto de arreglos es el mismo' con la diferencia que a,ora se almacenar&n
objetos de una clase o de diferentes clases.
%os objetos se pueden estructurar como un array. %os objetos son variables y tienen las
mismas capacidades y atributos que cualquier tipo de variables' por tanto es posible disponer
objetos en un array.
%a sinta-is es e-actamente igual a la utili.ada para declarar y acceder al array. /ambi0n
disponemos de arrays bidimensionales.
Cuando se crea un array de objetos 0stos se iniciali.an llamando al constructor sin
argumentos. 1or consiguiente' siempre que se prevea organi.ar los objetos en un array' la
clase debe tener un constructor que pueda llamarse sin par&metros.
1
Facultad: Ingeniera
Escuela: Computacin
Asignatura: Programacin II
Objetios Espec!icos
"ateriales # E$uipo
Introduccin Terica
Programacin II, Gua 5
%a sinta-is para declarar un arreglo de objetos es la siguiente2
3nombre de clase4 3nombre del arreglo 4 (3numero de elementos4)*
3nombre5clase4 3nombre del arreglo4 (3numero de elementos4) 6 7elementos8*
+jemplo para crear dos objetos de la clase celular2
celular aCell (9)*
Inicializacin:
nombre del arreglo (!ndice).funcin:valores;*
Creacin de objetos en forma dinmica.
New y Delete.
+n C++ se puede asignar memoria utili.ando el operador new y liberarse mediante el
operador delete. +stos operadores no se pueden combinar unos con otros' es decir debe
llamarse a delete solo con un puntero obtenido mediante new.
%os objetos tambi0n se les puede pasar un valor inicial con la sentencia new.
SINTAXIS2
3nombre del puntero 46 new 3tipo de dato4*
delete 3nombre del puntero4*
3nombre del puntero4 6 new 3tipo de dato4 :valor inicial;*
/ambi0n se pueden crear arreglos de objetos asignados din&micamente' estos arrays
pueden utili.ar la sentencia new.
%a sinta-is general es2
DECLARACIN DEL ARRAY:
3nombre del puntero 46 new 3tipo de dato4 (3numero de elementos4)*
puntero 6 new tipo(tama<o)*
+jemplo de un arreglo creado en forma din&mica2
=include3iostream4
using namespace std*
2
Programacin II. Gua 5
int main: ;
7 int >p* ?? @e declara el puntero
int i*
p 6 new int($)* ?> al puntero se le asigna la memoria en forma din&mica y se crea el
arreglo >?
system:AclsB;*
if :Cp; ?? @e verifica que e-ista el puntero
7 cout33B+rror de asignacionDnB*
e-it:E;*
8
for :i 6 F* i 3 $* i++; ?? 1ara introducir datos al arreglo
p(i) 6 i+E*
for :i 6 F* i 3 $* i++; ?? 1ara mostrar los datos del arreglo
7 cout33B+ste es el entero en p(A33i33B)2B*
cout33p(i)33BDnB*
8
delete( ) p* ?? @e libera la memoria reservada
system:ApauseB;*
8
Ejemplo 1:
+n el siguiente programa se muestra el uso de arreglos din&micos de objetos usando "+G y
D+%+/+
+l programa crea una clase denominada alumno' la cual contiene un arreglo para el nombre
del alumno y un arreglo para sus notas. A partir de esta clase se crea un puntero al
objeto alumno y a partir de este puntero se libera memoria para un arreglo de objetos
alumno por medio de "+G y el puntero a objeto para incluir todos los alumnos de una
clase en tiempo de ejecucin.
=include 3iostream4
=include 3iomanip4
using namespace std*
=define CA% $ ?? Define constante para el numero de calificaciones a manejar
class Alumno ?? Definicin de la clase
7 private2
3
Procedimiento
Programacin II, Gua 5
c,ar nombre($F)*
float calificaciones(CA%)*
public2
Alumno: ;7 8*
HAlumno: ;7 8*
void ingresar: ;* ?? Iuncin set
void mostrar5nombre: ;* ?? Juestra el nombre del alumno
void reporte: ;* ?? Juestra las notas del alumno
8*
void Alumno22ingresar: ; ??Ingresa los datos de un alumno
7 fflus,:stdin;*
cout 33KIngrese el "ombre del estudiante 2 K*
gets:nombre;*

int i*
for :i 6 F* i 3 CA%* i++;
7 cout 33 K1or favor ingrese la calificacion "o. K 33 i+E* cout 33K 2 K*
cin 44 calificaciones(i+E)*
8
8
void Alumno22mostrar5nombre:;
7 cout 33 nombre* ??+scribe el nombre del alumno en la pantalla
8
void Alumno22reporte:; ??enera reporte del estudiante seleccionado
7 int i*
cout33KLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLK33endl*
?? @e le da formato a la tabla.
for :i 6 F* i 3 CA%* i++;
7 cout33setw:E$;33K"ota K33i+E33K 2 K33calificaciones(i+E)33setw:$;33endl*
8
8
int main: ;
7 int num5est 6 F* ?? "#mero del objeto en el vector
int numero5objeto 6 F* ?? Apuntador del n#mero del objeto
int opcion* ?? Opcin del men#
c,ar nom($F)* ?? Arreglo de $F caracteres para el nombre
int i6F* ?? Au-iliar
int n6F* ?? Opcin en el men#
int dim* ?? Dimensin del arreglo de objetos
Alumno >p* ?? Crea un puntero a objeto alumno
cout 33 KCuantos alumnos tiene la claseM K*
cin 44 dim* ??1ara cuantos objetos ,ay que reservar memoriaM
4
Programacin II. Gua 5
cout 33 KDnK*
p 6 new Alumno(dim)* ?> Asigna memoria din&micamente y se crea el arreglo de tipo
Alumno >?
if :p 66 F; ??@i p 6 F no ,ay memoria suficiente
7 cout 33 K+rror no ,ay suficiente memoriaK*
return F* ??@ale del programa
8*
do ??estructura do...w,ile que mantiene en el ciclo principal
7
cout33K JenuK33endl*
cout33K E. Ingresar datos de un nuevo estudiante. :"ombre y notas;K33endl*
cout33K 9. Ner lista de estudiantes inscritos.K33endl*
cout33K O. Peporte de un estudiante.K33endl*
cout33K Q. @alir.K33endl*
cout33KLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLK33endl*
fflus,:stdin;*
cout33KDn +lija una opcion del menu :ELQ;2 K*
cin44opcion*

switc, :opcion;
7 case E2
:p+numero5objeto; L4 ingresar: ;* ??operador flec,a en ve. de operador punto
numero5objeto++*
system:KclsK;*
breaR*
case 92
cout 33KDnK*
cout33KLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLK33endl*
cout33K %I@/ADO D+ +@/SDIA"/+@ I"@CPI/O@ K33endl*
cout33KLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLK33endl*
for :i6F*i3numero5objeto*i++;
7 cout 33 K+studiante numero K 33 i+E*
cout 33 K2 K*
:p+i; L4 mostrar5nombre: ;*
cout 33 KDnK*
8
cout33endl*
system:KpauseK;*
system:KclsK;*
breaR*
case O2
cout 33 KIngrese el numero de lista del estudiante a generar el reporte2 K*
cin 44 n*
if : n 4 F;
5
Programacin II, Gua 5

7 cout33KLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLK33endl*
cout33K A%SJ"O2 K*
:p+nLE; L4 mostrar5nombre: ;*
cout33endl33endl*
cout33K "O/A@ OT/+"IDA@ K*
cout 33 KDnK*
:p+nLE; L4 reporte: ;*
cout33KLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLK33endl*
8
else
cout33KDigite un codigo de alumno valido K33endl*
cout33endl*
system:KpauseK;*
system:KclsK;*
breaR*
case Q2
breaR*

default2
cout33KDnDn Ingrese una opcion valida del menu.DnK*
system:KpauseK;*
system:KclsK;*
8
8
w,ile :opcion C6 Q;* ??sale del programa
delete ( ) p* ??libera la memoria asignada a >p
8
Ejercicio 1:
/omar el cdigo anterior como referencia y reali.ar los cambios que sean necesarios para
crear un programa que simule un sistema de control de notas.
Considere que cada alumno puede cursar como m&-imo $ asignaturas por ciclo. 1ara cada
asignatura se deben considerar notas por cada per!odo :el ciclo est& formado por O per!odos; y
una nota final de laboratorio. %as notas deben promediarse para obtener una nota global por
materia' considerando los siguientes porcentajes por per!odo :EU2 OFV* 9U2 O$V y OU2 O$V;'
6
An%lisis de &esultados
Programacin II. Gua 5
adem&s debe considerarse que la parte terica tiene una ponderacin del WFV y el laboratorio
del QF V.
+l programa debe tener un men# con las siguientes opciones2
Opcin de men# E2 Ingresar datos de los alumnos y las asignaturas.
Opcin de men# 92 Jostrar los datos de un alumno en particular' ,aciendo uso del miembro
AcarnetB. A partir de los datos introducidos debe mostrarse adem&s' la nota promedio de cada
asignatura' indicar si la materia est& AAprobadaB APeprobadaB.
Opcin de men# O2 @alir del programa.
+l men# deber& estar siempre activo' en la misma posicin en pantalla' ,asta que el usuario
seleccione la opcin salir.
1. Investigue cuales son los usos mas comunes de punteros a objetos en C++.
2. Qu es el puntero this. Utilizacin en C++.
3. Utilidad de las clases amigas en C++. Incluir ejemplos de su uso.
7
Inestigacin Complementaria
Programacin II, Gua 5
EVALUACIN
% 1-4 5-7 8-10 Nota
CONOCIMIENTO 'el ()
al *)+
Conocimiento
de!iciente de
los !undamentos
tericos
Conocimiento
# e,plicacin
incompleta de
los
!undamentos
tericos
Conocimiento
completo #
e,plicacin
clara de los
!undamentos
tericos
APLICACIN
DEL
CONOCIMIENTO
'el -)+
al .)+
ACTITUD
'el /0+
al *)+
1o tiene
actitud
proactia.
Actitud
propositia #
con
propuestas no
aplicables al
contenido de
la gua.
Tiene actitud
proactia #
sus
propuestas
son
concretas.
TOTA2 /))+
8
Hoja de cotejo:
5
Alumno:
'ocente:
'ocente:
32:
Fec4a:
3ua 0: Arreglos de Objetos en C++.
"%$uina 1o:

También podría gustarte