Sie sind auf Seite 1von 8

1

UNIVERSIDAD DON BOSCO


FACULTAD DE ESTUDIOS TECNOLGICOS
ESCUELA DE COMPUTACION
CICLO: 01/ 2012
GUIA DE LABORATORIO #11
Nombre de la Practica: POO en C++: Constructores y Destructores
Lugar de Ejecucin: Centro de Computo
Tiempo Estimado: 2 horas y 30 minutos
MATERIA: Introduccin a la Programacin



I. OBJETIVOS

Que el alumno sea capaz de:
Definir nuevos objetos en C++, basados en clases.
Comunicar dos o ms objetos diferentes.

II. INTRODUCCION TEORICA
MIEMBROS Y METODOS
Las clases estn compuestas por miembros (atributos, campos o propiedades) que describen
las caractersticas de la clase y mtodos que describen el comportamiento del objeto que se
modela dentro de una clase.
Los miembros no son ms que variables que se declaran dentro de la clase y estas pueden ser
publicas, privadas o protegidas. Los mtodos describen como se comporta la clase y se definen
como funciones, como ya se vio en la gua anterior.
Los mtodos se pueden declarar tambin como pblicos, privados o protegidos. Cuando se
declaran en la parte pblica se utilizan para la interfaz de uso del objeto y en la parte privada,
se utiliza para los procedimientos internos necesarios para el funcionamiento del objeto.

METODOS CONSTRUCTOR Y DESTRUCTOR
En la mayora de las clases es necesario dar valores iniciales a sus miembros (constructor) y
liberar memoria al finalizarlos (destructor). Para ello se utilizan los mtodos constructor y
destructor.
El mtodo constructor ser miembro pblico cuyo nombre es el mismoque el de la clase, sin
devolver nada.Puede llevar parmetros,

2

El mtodo destructor ser un miembro con el mismo nombre de la clase con el prefijo ~, sin
devolver nada, ni siquiera void.

Constructor
Dentro del mtodo constructor se pueden inicializar los miembros de la clase con un valor por
defecto o un valor que se recibe como parmetro al momento de la creacin del objeto. Por
ejemplo:

Para el ejemplo anterior en el mtodo constructor se inicializan los miembros privados
realyimag con un valor por defecto (0 y 1) que se asignar en el caso de que no se enven
como parmetros a la hora de inicializar el objeto. Por ejemplo:
Complejo c(10,2), com;
El objeto c se inicializa con valores que se envan como argumentos al mtodo constructor, en
cambio el objeto com se inicializar con los valores por defecto 0 y 1.

Destructor
El mtodo destructor no siempre hace falta, solo cuando se llame a rutinas que modifiquen el
estado del sistema y antes de destruir el objeto haya que reponer ese estado. Se crea dentro de
la clase anteponiendo al nombre el smbolo (~).



3


III. MATERIALES Y EQUIPO

Para la realizacin de la gua de prctica se requerir lo siguiente:

No. Requerimiento Cantidad
1 Gua de Laboratorio # 11 de IP 1
2 Compilador de C++. 1
3 Disquete Memoria USB 1



IV. PROCEDIMIENTO

Redacte, pruebe y analice los siguientes cdigos fuentes.

Ejercicio 1. Implementacin del mtodo constructor para inicializar miembros del objeto
Desarrolle una clase que permita identificar el cuadrante donde se encuentra un punto (x,y) en
el plano cartesiano. La clase retornar una cadena de caracteres especificando el cuadrante al
que pertenece el punto.


# i n c l u d e < i o s t r e a m >
# i n c l u d e < s t d l i b . h >

u s i n g n a m e s p a c e s t d ;

c l a s s C u a d r a n t e / / d e f i n i c i o n c l a s e C u a d r a n t e
{
p u b l i c :
/ / C o n s t r u c t o r
C u a d r a n t e ( f l o a t x = 0 , f l o a t y = 0 ) {
X = x ;
Y = y ;
}
/ / D e s t r u c t o r
~ C u a d r a n t e ( ) { } ;

v o i d v e r c u a d r a n t e ( ) ; / / m e t o d o p u b l i c o

p r i v a t e :
f l o a t X , Y ;
} ;

m a i n ( ) {
4

f l o a t x , y ;
c o u t < < " \ t - - > I n g r e s e e l p u n t o ( x , y ) : \ n " ;
c i n > > x > > y ;
/ / I n i c i a l i z a m o s e l o b j e t o y e n v i a m o s x y y
C u a d r a n t e x y ( x , y ) ;
c o u t < < " E l p u n t o ( " < < x < < " , " < < y < < " ) s e e n c u e n t r a e n : " ;
x y . v e r c u a d r a n t e ( ) ;
s y s t e m ( " p a u s e " ) ;
} / / f i n f u n c i o n p r i n c i p a l

/ / d e f i n i c i o n d e c a d a m e t o d o d e c l a s e C u a d r a n t e

v o i d C u a d r a n t e : : v e r c u a d r a n t e ( ) {
/ / v e r i f i c a m o s l o s p u n t o s
/ / p a r a u b i c a r l a c o o r d e n a d a
i f ( ( X > 0 ) & & ( Y > 0 ) )
c o u t < < " I C u a d r a n t e " < < e n d l ;
e l s e i f ( ( X > 0 ) & & ( Y < 0 ) )
c o u t < < " I I C u a d r a n t e " < < e n d l ;
e l s e i f ( ( X < 0 ) & & ( Y < 0 ) )
c o u t < < " I I I C u a d r a n t e " < < e n d l ;
e l s e i f ( ( X < 0 ) & & ( Y > 0 ) )
c o u t < < " I V C u a d r a n t e " < < e n d l ;
e l s e i f ( ( X = = 0 ) & & ( Y = = 0 ) )
c o u t < < " O r i g e n " < < e n d l ;
e l s e i f ( ( X = = 0 ) & & ( Y ! = 0 ) )
c o u t < < " E j e Y " < < e n d l ;
e l s e i f ( ( X ! = 0 ) & & ( Y = = 0 ) )
c o u t < < " E j e X " < < e n d l ;
} / / f i n m e t o d o v e r c u a d r a n t e



Ejercicio 2. Creando arreglos de objetos dentro de una clase
Desarrolle 2 clases diferentes, para relacionarlas entre si, y permitan elaborar una factura para
N productos diferentes.
# i n c l u d e < i o s t r e a m >
# i n c l u d e < s t r i n g . h >
# i n c l u d e < c o n i o . h >
u s i n g n a m e s p a c e s t d ;

c l a s s F a c t u r a {
p u b l i c :
v o i d n e w F a c t u r a ( ) ;
F a c t u r a ( ) ; / / C o n s t r u c t o r

p r i v a t e :
/ / a t r i b u t o s p r i v a d o s
c h a r c l i e n t e [ 3 0 ] ;
c h a r v e n d e d o r [ 3 0 ] ;
5

c h a r f e c h a [ 1 0 ] ;
f l o a t m o n t o ;
i n t c a n t P r o d ;
/ / m e t o d o s p r i v a d o s
v o i d s e t C l i e n t e ( ) ;
v o i d s e t V e n d e d o r ( ) ;
v o i d s e t F e c h a ( ) ;
v o i d g e t C l i e n t e ( ) ;
v o i d g e t V e n d e d o r ( ) ;
v o i d g e t f e c h a ( ) ;
} ; / / f i n c l a s e F a c t u r a

c l a s s D e t a l l e {
p r i v a t e :
f l o a t c a n t i d a d , p r e c i o ;
f l o a t I V A ;
c h a r p r o d u c t o [ 2 0 ] ;
p u b l i c :
D e t a l l e ( f l o a t _ i v a = 0 . 1 3 ) { / / C o n s t r u c t o r
I V A = _ i v a ;
} ;
f l o a t g e t I v a ( ) ;
f l o a t g e t T o t a l ( ) ;
v o i d s e t C a n t i d a d ( ) ;
v o i d s e t P r e c i o ( ) ;
v o i d s e t P r o d u c t o ( ) ;
f l o a t g e t C a n t i d a d ( ) ;
f l o a t g e t P r e c i o ( ) ;
v o i d g e t P r o d u c t o ( ) ;
} ; / / f i n c l a s e D e t a l l e

m a i n ( ) {
F a c t u r a f ; / / o b j e t o f d e l a c l a s e F a c t u r a
f . n e w F a c t u r a ( ) ;
s y s t e m ( " p a u s e " ) ;

} / / f i n f u n c i o n p r i n c i p a l m a i n

/ / d e f i n i c i o n d e l c u e r p o d e c / m e t o d o d e a m b a s c l a s e s

F a c t u r a : : F a c t u r a ( ) { / / M t o d o c o n s t r u c t o r
c a n t P r o d = 0 ;
m o n t o = 0 ;

}

v o i d F a c t u r a : : n e w F a c t u r a ( ) {
c h a r r e s p ;
s e t V e n d e d o r ( ) ;
s e t C l i e n t e ( ) ;
s e t F e c h a ( ) ;
6

D e t a l l e d e t [ 1 0 0 ] ; / / a r r e g l o d e 1 0 0 o b j e t o s c l a s e D e t a l l e
d o {
s y s t e m ( " c l s " ) ;
c o u t < < " \ n I n g r e s e l a d e s c r i p c i n d e l p r o d u c t o N o :
" < < c a n t P r o d + 1 < < e n d l ;
d e t [ c a n t P r o d ] . s e t P r o d u c t o ( ) ;
d e t [ c a n t P r o d ] . s e t C a n t i d a d ( ) ;
d e t [ c a n t P r o d ] . s e t P r e c i o ( ) ;
c a n t P r o d + + ;
c o u t < < " \ n P r e s i o n e < E N T E R > p a r a o t r o p r o d u c t o " ;
r e s p = g e t c h e ( ) ;

} w h i l e ( r e s p = = 1 3 ) ;
s y s t e m ( " c l s " ) ;

c o u t < < " \ n F e c h a : \ t " < < f e c h a ;
c o u t < < " \ n V e n d e d o r : \ t " < < v e n d e d o r ;
c o u t < < " \ n C l i e n t e : \ t " < < c l i e n t e ;

c o u t < < " \ n _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " ;
c o u t . s e t f ( i o s : : f i x e d ) ;
c o u t . s e t f ( i o s : : s h o w p o i n t ) ;
c o u t . p r e c i s i o n ( 2 ) ;
f o r ( i n t i = 0 ; i < c a n t P r o d ; i + + ) {
c o u t < < e n d l ;
c o u t < < i + 1 < < " \ t " ;
d e t [ i ] . g e t P r o d u c t o ( ) ;

c o u t < < " \ t \ t \ t " < < d e t [ i ] . g e t C a n t i d a d ( ) < < " \ t " < < d e t [ i ] . g e t P r e c i o (
) ;
c o u t < < " \ t " < < d e t [ i ] . g e t I v a ( ) < < " \ t " < < d e t [ i ] . g e t T o t a l ( ) ;
m o n t o + = d e t [ i ] . g e t T o t a l ( ) ;

}
c o u t < < e n d l < < e n d l ;
c o u t < < " \ t \ t T o t a l a p a g a r : $ " < < m o n t o < < e n d l < < e n d l ;
}

v o i d F a c t u r a : : s e t V e n d e d o r ( ) {
c o u t < < " \ n - - > I n g r e s e e l n o m b r e d e l v e n d e d o r : " ;
c i n . g e t l i n e ( v e n d e d o r , 3 0 ) ;
}

v o i d F a c t u r a : : s e t C l i e n t e ( ) {
c o u t < < " \ n - - > I n g r e s e e l n o m b r e d e l c l i e n t e : " ;
c i n . g e t l i n e ( c l i e n t e , 3 0 ) ;
}

v o i d F a c t u r a : : s e t F e c h a ( ) {
c o u t < < " \ n - - > I n g r e s e l a f e c h a : " ;
7

c i n . g e t l i n e ( f e c h a , 1 0 ) ;
}
v o i d D e t a l l e : : s e t P r o d u c t o ( ) {
d o {
c o u t < < " \ n \ t - - > I n g r e s e n o m b r e d e p r o d u c t o : " ;
c i n . g e t l i n e ( p r o d u c t o , 3 0 ) ;
} w h i l e ( s t r l e n ( p r o d u c t o ) = = 0 ) ;
}
v o i d D e t a l l e : : s e t C a n t i d a d ( ) {
d o {
c o u t < < " \ n \ t - - > I n g r e s e c a n t i d a d d e " < < p r o d u c t o < < " a
a d q u i r i r : " ;
c i n > > c a n t i d a d ;
} w h i l e ( c a n t i d a d < = 0 ) ;
}
v o i d D e t a l l e : : s e t P r e c i o ( ) {
d o {
c o u t < < " \ n \ t - - > I n g r e s e p r e c i o : " ;
c i n > > p r e c i o ;
} w h i l e ( p r e c i o < 0 ) ;
}
f l o a t D e t a l l e : : g e t I v a ( ) {
r e t u r n p r e c i o * c a n t i d a d * I V A ;
}
f l o a t D e t a l l e : : g e t T o t a l ( ) {
r e t u r n p r e c i o * c a n t i d a d + g e t I v a ( ) ;
}
v o i d D e t a l l e : : g e t P r o d u c t o ( ) {
c o u t < < p r o d u c t o ;
}
f l o a t D e t a l l e : : g e t C a n t i d a d ( ) {
r e t u r n c a n t i d a d ;
}
f l o a t D e t a l l e : : g e t P r e c i o ( ) {
r e t u r n p r e c i o ;
}


V. DISCUSION DE RESULTADOS

1. Crear una clase profesor con los miembros, nombre y materia y un mtodo pblico que
permita el ingreso de la lista de N alumnos y sus 3 notas. La clase deber mostrar: a) el
cuadro de notas de todos los alumnos, b) el cuadro de honor, c) el promedio de notas o d)
el listado de los alumnos con promedio por debajo del promedio general.

2. Crear una clase Banco la cual pueda manejar N cuentas de ahorro con los datos del
ahorrante. Esta debe contener los mtodos necesarios para manejar los depsitos y retiros
de cuenta. Adems, que se pueda ver a) el total de depsitos en todas las cuentas, b) El
reporte de estado de cuenta para un ahorrante en especfico, ingresando el nmero de
cuenta.
8


VII. BIBLIOGRAFIA
Metodologa de la Programacin: Diagramas de Flujo, Algoritmos y Programacin
estructurada. Joyanes Aguilar, Luis. No. De Clasificacin 005.1 J88 1998. Editorial:
MCGRAW HILL
Cmo Programar en C/C++. Deitel, Harvey M... No. De Clasificacin 005.362 D325 1995
Editorial: PRENTICE HALL

Das könnte Ihnen auch gefallen