Вы находитесь на странице: 1из 22

lo d e l M u n d o

Para expresar el m o d e l o d e l m u n d o u t i l i z a r e m o s la sintaxis definida e n el d i a g r a m a d e clases del lenguaje de modelos U M L (Unified Modeling Language). Dicho

D m p o n e n t e d e l anlisis, e l o b j e t i v o u d o e n el q u e ocurre el problema i informacin n e c e s a r i a p a r a q u e e l a escribir e l p r o g r a m a . S u p o n g a p o r u n r e q u e r i m i e n t o d e c a l c u l a r los das os q u e t i e n e d e r e c h o e l e m p l e a d o , i d e anlisis n o s e r e c o g e l a i n f o r m a i q u e hace referencia a la m a n e r a d e d e das d e v a c a c i o n e s a l o s c u a l e s u n fecho, cuando el programador trate tema se v a a d a r c u e n t a d e q u e n o macin q u e n e c e s i t a . Y a n o n o s v a ?n l a s o p c i o n e s q u e e l c l i e n t e q u i e r e rama, sino n o s vamos a concentrar es e l m u n d o e n e l q u e o c u r r e el p r o Je e s t u d i o d e l e m p l e a d o , e l o b j e t i v o e n t e n d e r y especificar los aspectos presa. de esta actividad, se debe producir lo q u e modelo del mundo d e l p r o b l e m a , e n dentificado todos los elementos del ::an e n el problema, c o n sus princiy r e l a c i o n e s . E s t e m o d e l o ser u t i - : : : e diseo p a r a d e f i n i r l o s e l e m e n t o s ograma. est b a s a d a e n u n p r o c e s o d e " o b s e r :e! problema, puesto q u e los eleaparecen ya existen y nuestro objetivo : : : e ellos ( o p r o p o n e r cambiarlos), sino t identificarlos y describirlos para q u e esta i s e a u t i l i z a d a ms a d e l a n t e . 11.6 se resumen las cuatro actividades q u e el programador para construir el m o d e l o E n l a primera, se identifica l o q u e d e n o m i wrtidades d e l m u n d o , e n l a s e g u n d a s e d o ss caractersticas d e c a d a u n a d e e l l a s , e n - e n l a s relaciones q u e e x i s t e n e n t r e I e n t i d a d e s y, f i n a l m e n t e , s e d o c u m e n t a l a l a r i o n a l (reglas, restricciones, etc.) q u e se s a s entidades.

l e n g u a j e e s u n estndar d e f i n i d o p o r u n a organizacin llamada O M G (Object M a n a g e m e n t Group) y utilizado por u n a gran cantidad d e empresas e n el m u n d o para expresar sus modelos.
Fig. 1 6 - A c t i v i d a d e s e n l a e l a b o r a c i n del modelo del mundo

crear modelo d e l mundo

programador

modelo d e l mundo

5.2.1. Identificar las Entidades Esta primera actividad tiene c o m o objetivo identificar los e l e m e n t o s d e l m u n d o q u e i n t e r v i e n e n e n e l p r o b l e m a . D i c h o s e l e m e n t o s p u e d e n ser c o n c r e t o s ( u n a pers o n a , u n vehculo) o a b s t r a c t o s ( u n a c u e n t a b a n c a r i a ) . P o r a h o r a nicamente q u e r e m o s i d e n t i f i c a r e s t o s e l e m e n t o s y asociarles u n n o m b r e significativo. U n a primera pista para localizarlos es buscar los sustantivos del e n u n c i a d o del p r o b l e m a . Esto sirve e n e l caso d e p r o b l e m a s pequeos, p e r o n o e s g e n e r a l i z a b l e a p r o b l e m a s d e m a y o r dimensin. E n programacin o r i e n t a d a a o b j e t o s , l a s e n t i d a d e s d e l m u n d o s e d e n o m i n a n clases, y sern l o s e l e m e n t o s bs i c o s d e l diseo y l a p o s t e r i o r implementacin.

Para el primer caso de estudio, hay d o s entidades e n el Una flt | convencin es u n a r e g l a q u e n o m u n d o d e l p r o b l e m a : l a c l a s e E m p l e a d o y l a c l a s e Fecha. E s t a ltima s e e m p l e a p a r a r e p r e s e n t a r e l c o n c e p t o d e fecha d e n a c i m i e n t o y fecha d e ingreso a la e m p r e s a . Si l e e c o n d e t e n i m i e n t o e l e n u n c i a d o d e l c a s o , s e podr d a r c u e n t a d e q u e stos s o n l o s nicos e l e m e n t o s d e l m u n d o d e l p r o b l e m a q u e s e m e n c i o n a n . L o dems c o r r e s p o n d e a caractersticas d e d i c h a s e n t i d a d e s (el n o m S e g u i r l a s c o n v e n c i o n e s h a c e q u e s e a ms fcil entender los programas escritos por otras personas. Tambin a y u d a a c o n s t r u i r p r o g r a m a s ms En e l e j e m p l o 4 s e i d e n t i f i c a n l a s e n t i d a d e s d e l c a s o d e estudio del s i m u l a d o r bancario y se describe el proceso q u e s e sigui p a r a i d e n t i f i c a r l a s . "elegantes". bre, e l a p e l l i d o , e t c . ) o a r e q u e r i m i e n t o s f u n c i o n a l e s . es obligatoria e n el lenguaje de programacin, p e r o q u e s u e l e n r e s p e t a r los programadores q u e utilizan el l e n g u a j e . P o r e j e m p l o , p o r convencin, los n o m b r e s d e l a s c l a s e s c o m i e n z a n p o r maysculas.

Objetivo: Ilustrar la m a n e r a de identificar las entidades (llamadas tambin clases) del m u n d o del p r o b l e m a . En este e j e m p l o se identifican las e n t i d a d e s q u e f o r m a n parte del m u n d o del p r o b l e m a para el caso 2 de este nivel: u n s i m u l a d o r bancario. Es la entidad ms i m p o r t a n t e del m u n d o del problema, puesto que define su f r o n t e r a (todo lo que est por fuera de la cuenta bancaria n o n o s interesa). Es buena prctica comenzar la etapa de anlisis t r a t a n d o de identificar la clase ms i m p o r t a n t e del problema. Entidad CuentaBancaria C u a n d o el n o m b r e de la entidad es compuesto, se usa por convencin una letra mayscula al c o m i e n z o de cada palabra. En otra poca se utilizaban el carcter"_" para separar las palabras ( C u e n t a _ B a n c a r i a ) pero eso est pasado de m o d a . Este es o t r o concepto que existe e n el m u n d o del problema. Segn el enunciado u n a cuenta corriente f o r m a parte de u n a cuenta bancaria, luego esta entidad est " d e n t r o " de la frontera que nos interesa. CuentaCorriente Por a h o r a n o nos interesan los detalles de la cuenta corriente (por ejemplo si tiene u n saldo o si paga intereses). En este m o m e n t o slo q u e r e m o s identificar los e l e m e n t o s del m u n d o del problema que estn involucrados e n los requerimientos funcionales. Este es el tercer concepto que aparece e n el m u n d o del problema. De la m i s m a m a n e r a q u e en el caso anterior, u n a cuenta bancaria " i n c l u y e " una cuenta de ahorros. Los n o m b r e s asignados a las clases deben ser significativos y dar u n a idea clara de la entidad del m u n d o que representan. N o se debe exagerar con la longitud del n o m b r e , porque de lo contrario los programas pueden resultar pesados de leer. El n o m b r e de esta clase se encuentra e n maysculas, porque es u n a sigla. O t r o n o m b r e para esta clase habra podido ser el n o m b r e c o m p l e t o del concepto: CertificadoDepositoTermino. En el lenguaje Java n o es posible usar tildes e n los n o m b r e s de los clases, as que nunca v e r e m o s una clase llamada CertificadoDepositoTermino. El concepto de mes es el q u i n t o y ltimo concepto del caso de estudio. Esta ser la clase que nos dir en cul mes de la simulacin se encuentra la cuenta bancaria. N o olvide que la simulacin se hace mes a mes, y que existe u n r e q u e r i m i e n t o f u n c i o n a l que permite avanzar un mes e n la simulacin. Si lee de n u e v o el e n u n c i a d o del caso, se dar cuenta de que t o d o s los dems e l e m e n t o s del problema son caractersticas de las entidades a n t e r i o r m e n t e m e n c i o n a d a s o requerimientos funcionales.

Entidad

Entidad

CuentaAhorros

Entidad C D T

Entidad M e s

Tarea 4

fjV

Objetivo: Identificar las e n t i d a d e s del m u n d o para el caso de e s t u d i o 3 : u n p r o g r a m a q u e m a n e j e u n tringulo. Lea el e n u n c i a d o d e l caso y t r a t e de guiarse p o r los s u s t a n t i v o s para identificar las e n t i d a d e s d e l m u n d o del p r o b l e m a .

Entidad

Entidad

Entidad

P u n t o de reflexin: Qu pasa si n o i d e n t i f i c a m o s bien las e n t i d a d e s del m u n d o ?

P u n t o de reflexin: Cmo decidir si se t r a t a e f e c t i v a m e n t e d e una e n t i d a d y n o slo d e u n a caracterstica d e u n a e n t i d a d ya identificada?

5.2.2. Modelar las Caractersticas Una v e z q u e se h a n identificado las entidades del m u n d o del problema, el siguiente paso e s identificar y m o d e l a r s u s caractersticas. A c a d a caracterstica q u e v a y a m o s e n c o n t r a n d o , le d e b e m o s a s o c i a r ( 1 ) u n n o m b r e s i g n i f i c a t i v o y ( 2 ) u n a descripcin d e l c o n j u n t o d e v a l o r e s q u e d i c h a caracterstica p u e d e t o m a r . E n programacin o r i e n t a d a a o b j e t o s , las caractersticas se d e n o m i n a n atributos y, a l i g u a l q u e l a s c l a s e s , s e rn e l e m e n t o s f u n d a m e n t a l e s t a n t o e n e l diseo c o m o

e n l a implementacin. El n o m b r e d e u n a t r i b u t o d e b e s e r u n a c a d e n a d e c a r a c t e r e s n o vaca, q u e e m p i e c e c o n u n a letra y q u e n o c o n t e n g a espacios e n blanco.

P o r convencin, e l n o m b r e d e l o s atributos comienza p o r u n a letra minscula. S i e s u n n o m b r e c o m puesto, se debe iniciar cada palabra s i m p l e c o n mayscula.

En e l l e n g u a j e U M L , u n a c l a s e s e d i b u j a c o m o u n c u a d r a d o c o n tres z o n a s (ver e j e m p l o 5): la p r i m e r a d e ellas c o n e l n o m b r e d e l a c l a s e y, l a s e g u n d a , c o n l o s a t r i b u Ejemplo 5

t o s d e la m i s m a . El u s o d e la tercera z o n a la v e r e m o s ms a d e l a n t e , e n l a e t a p a d e diseo,

Objetivo: M o s t r a r la m a n e r a de identificar y m o d e l a r los a t r i b u t o s de u n a clase. En este e j e m p l o se identifican las caractersticas de las clases E m p l e a d o y F e c h a para el caso de e s t u d i o d e l e m p l e a d o . Clase: E m p l e a d o

La p r i m e r a caracterstica q u e aparece e n el e n u n c i a d o es el n o m b r e del e m p l e a d o . El valor d e este a t r i b u t o es u n a cadena de caracteres (por e j e m p l o , "Juan")


nombre

C a d e n a de caracteres

S e l e c c i o n a m o s " n o m b r e " c o m o n o m b r e d e l a t r i b u t o . Es i m p o r t a n t e q u e los n o m b r e s de los a t r i b u t o s sean significativos (deben dar u n a idea clara d e lo q u e u n a caracterstica r e p r e s e n t a ) , para facilitar as la lectura y la escritura d e los p r o g r a m a s . El s e g u n d o a t r i b u t o es el apellido del e m p l e a d o . A l igual q u e e n el caso anterior, el v a l o r q u e puede t o m a r este a t r i b u t o es una cadena d e caracteres (por e j e m p l o , "Prez"). C o m o n o m b r e del a t r i b u t o s e l e c c i o n a m o s " a p e l l i d o " . El n o m b r e de u n a t r i b u t o d e b e ser nico d e n t r o d e la clase ( n o es posible d a r el m i s m o n o m b r e a dos a t r i b u t o s ) . Esta caracterstica p u e d e t o m a r dos v a l o r e s : m a s c u l i n o o f e m e n i n o . En esta e t a p a de anlisis basta con identificar los valores posibles.

apellido

C a d e n a de caracteres

Masculino o F e m e n i n o

Es i m p o r t a n t e destacar q u e los valores posibles de este a t r i b u t o ( l l a m a d o " s e x o " ) n o s o n cadenas de caracteres. N o nos i n t e r e s a n las palabras e n espaol q u e p u e d e n describir los valores posibles d e esta caracterstica, s i n o los valores e n s m i s m o s . El salario est e x p r e s a d o e n pesos y s u valor es u n nmero e n t e r o positivo. Aqu e s t a m o s s u p o n i e n d o q u e el v a l o r del salario n o t i e n e centavos.

salario

Valores enteros positivos

Definicin de la clase E m p l e a d o e n U M L :
nombre de la entidad o clase caractersticas o atributos

19
Clase: F e c h a

dia

Valores enteros entre 1 y 3 1

La primera caracterstica d e u n a fecha es el da y puede t o m a r valores e n t e r o s e n t r e 1 y 3 1 . En los n o m b r e s de las variables n o p u e d e haber tildes, p o r l o q u e d e b e m o s c o n t e n t a r n o s con el n o m b r e " d i a " (sin tilde) para el a t r i b u t o . La s e g u n d a caracterstica es el mes. Aqu se podran listar los meses del ao c o m o los valores posibles (por e j e m p l o , e n e r o , febrero, etc.), pero por simplicidad v a m o s a decir q u e el m e s c o r r e s p o n d e a u n valor e n t e r o entre 1 y 12. La ltima caracterstica es el ao. Debe ser u n valor e n t e r o p o s i t i v o (por e j e m p l o , 2 0 0 1 ) . Aqu nos e n c o n t r a m o s de n u e v o c o n u n p r o b l e m a e n espaol: los n o m b r e s d e los a t r i b u t o s n o p u e d e n c o n t e n e r la letra " " . En este caso r e s o l v i m o s r e e m p l a z a r dicha letra y l l a m a r el a t r i b u t o " a n i o " q u e d a a p r o x i m a d a m e n t e el m i s m o s o n i d o .

Valores enteros entre 1 y 12

anio

Valores enteros positivos

C o n las tres caractersticas a n t e r i o r e s q u e d a c o m p l e t a m e n t e definida u n a f e c h a . Esa es la p r e g u n t a q u e nos d e b e m o s hacer c u a n d o e s t a m o s e n esta e t a p a : es necesaria ms informacin para describir la e n t i d a d q u e estamos representando? Si e n c o n t r a m o s u n a caracterstica cuyos valores posibles n o s o n simples, c o m o nmeros, cadenas d e caracteres, o u n a lista d e valores, n o s d e b e m o s p r e g u n t a r si dicha caracterstica n o es ms bien o t r a e n t i d a d q u e n o i d e n t i f i c a m o s e n la e t a p a anterior. Si es el caso, s i m p l e m e n t e la d e b e m o s agregar.

Definicin d e la clase F e c h a e n U M L :
nombre de la entidad o clase caractersticas o atributos

Es i m p o r t a n t e q u e a n t e s d e a g r e g a r u n a t r i b u t o a u n a clase, v e r i f i q u e m o s q u e d i c h a caracterstica f o r m a p a r t e d e l p r o b l e m a q u e s e q u i e r e r e s o l v e r . Podramos p e n s a r , p o r e j e m p l o , q u e l a c i u d a d e n l a q u e naci e l e m p l e a d o e s u n o d e s u s a t r i b u t o s . Cmo s a b e r si l o d e b e m o s o n o a g r e g a r ? La r e s p u e s t a e s q u e h a y q u e m i r a r l o s r e q u e r i m i e n t o s f u n c i o n a l e s y v e r s i d i c h a caracterstica e s u t i l i z a d a o r e f e r e n c i a d a d e s d e a l g u n o d e e l l o s .

Tarea 5

Objetivo: Identificar las caractersticas de las e n t i d a d e s del caso de e s t u d i o 2 , u n s i m u l a d o r bancario. Para cada u n a d e las cinco e n t i d a d e s identificadas e n el caso de e s t u d i o d e l s i m u l a d o r bancario, i d e n t i f i q u e los a t r i b u t o s , sus valores posibles, y escriba la clase e n U M L . N o incluya las relaciones q u e p u e d a n existir e n t r e las clases, y a q u e eso l o h a r e m o s e n la s i g u i e n t e e t a p a del anlisis. Por a h o r a t r a t e de identificar las caractersticas d e las e n t i d a d e s q u e s o n i m p o r t a n t e s para los r e q u e r i m i e n t o s f u n c i o n a l e s .

Clase: C u e n t a B a n c a r i a

Clase: C u e n t a C o r r i e n t e

Clase: C u e n t a A h o r r o s

Clase: C D T

Clase: M e s

5.2.3. L a s Relaciones entre

Es p o s i b l e t e n e r v a r i a s r e l a c i o n e s e n t r e d o s c l a s e s , y p o r eso es i m p o r t a n t e seleccionar bien e l n o m b r e d e cada asociacin. E n l a f i g u r a 1 . 8 s e m u e s t r a n l a s a s o c i a c i o nes e n t r e l a s c l a s e s d e l c a s o d e e s t u d i o d e l e m p l e a d o y d e l c a s o d e e s t u d i o d e l tringulo. E n l o s d o s c a s o s e x i s t e ms d e u n a asociacin e n t r e l a s c l a s e s , c a d a u n a d e l a s c u a l e s m o d e l a u n a caracterstica d i f e r e n t e .


Fig. 1.8 - D i a g r a m a d e c l a s e s p a r a representar el modelo del mundo

las Entidades
En e s t a a c t i v i d a d , d e b e m o s t r a t a r d e i d e n t i f i c a r l a s r e laciones q u e existen entre las distintas entidades d e l m u n d o y asignarles u n n o m b r e . Las relaciones se repres e n t a n e n U M L c o m o flechas q u e u n e n las cajas d e las c l a s e s ( v e r f i g u r a 1 . 7 ) y s e d e n o m i n a n u s u a l m e n t e asociaciones. El d i a g r a m a d e c l a s e s e n e l c u a l s e i n c l u y e la representacin d e t o d a s l a s e n t i d a d e s y l a s r e l a c i o nes q u e e x i s t e n e n t r e e l l a s s e c o n o c e c o m o e l modelo conceptual, p o r q u e e x p l i c a l a e s t r u c t u r a y l a s r e l a c i o nes d e l o s e l e m e n t o s d e l m u n d o d e l p r o b l e m a . ^
Fig. 1.7 - S i n t a x i s e n U M L p a r a m o s t r a r una asociacin entre dos clases

Empleado

fechaNaciraiento >

Fecha

fechalngreso i,

(a) Caso de estudio del empleado

Clasel nombre^

Clase2

La primera asociacin dice que un empleado tiene una fecha de nacimiento y que esta fecha es una entidad del mundo, representada por la clase Fecha. La segunda asociacin hace lo mismo con la fecha de ingreso del empleado a la empresa. La direccin de la flecha indica la entidad que "contiene" a la otra. El empleado tiene una fecha, pero la fecha no tiene un empleado.
puntol

Q El modelo presentado en la figura dice que hay dos entidades en el mundo (llamadas Clasel y Clase2), y que existe una relacin entre ellas. Q Tambin explica que para la Clasel, la Clase2 representa algo que puede ser descrito con el nombre que se coloca al final de la asociacin. La seleccin de dicho nombre es fundamental para la claridad del diagrama.

Triangulo
punto2

? ? punto3
7

Punto

d e la asociacin sigue las m i s m a s nes del n o m b r e d e los a t r i b u t o s y jar la m a n e r a en q u e una clase utiliza o r n o parte d e sus caractersticas.

(b) Caso de estudio del tringulo


r

-.,

L J Un tringulo tiene tres puntos, cada uno de los cuales define una de sus aristas. Cada punto tiene un nombre distinto (puntol, punto2 y punto3), el cual se asigna a la asociacin.

......

a l Note que este diagrama est incompleto, puesto que no aparece la clase Color (para representar el color de las lneas y el relleno del tringulo), ni las asociaciones hacia ella. Q La clase Punto seguramente tiene dos atributos para representar las coordenadas en cada uno de los ejes, pero eso no lo incluimos en el diagrama para simplificarlo.

casos m u y simples. E n el ejemplo 6 se muestran y explican las relaciones q u e existen entre las entidades del caso del simulador bancario.

U n a asociacin s e p u e d e v e r c o m o u n a caracterstica d e u n a e n t i d a d c u y o v a l o r est r e p r e s e n t a d o p o r o t r a clase.

Volveremos a abordar el t e m a d e las relaciones entre e n t i d a d e s e n l o s n i v e l e s p o s t e r i o r e s , as q u e p o r a h o r a slo e s i m p o r t a n t e p o d e r i d e n t i f i c a r l a s r e l a c i o n e s p a r a TI


Ejemplo 6

Objetivo: Presentar el d i a g r a m a de clases, c o m o u n a m a n e r a d e mostrar el m o d e l o de u n a realidad. A continuacin se m u e s t r a el d i a g r a m a de clases del m o d e l o del m u n d o , para el caso del s i m u l a d o r bancario.

CuentaCorriente
c o m e n t e

La relacin e n t r e la clase C u e n t a B a n c a r i a y la clase C u e n t a C o r r i e n t e se l l a m a " c o r r i e n t e " y refleja el h e c h o d e q u e u n a c u e n t a bancaria t i e n e u n a c u e n t a corriente c o m o parte de ella. Fjese q u e las flechas t i e n e n u n a direccin. Dicha direccin establece qu e n t i d a d utiliza a la o t r a c o m o parte de sus caractersticas. T a n t o la clase C u e n t a B a n c a r i a c o m o la clase C D T t i e n e n u n a asociacin hacia la clase M e s . En la primera clase sirve para m o d e l a r el m e s a c t u a l d e la simulacin. En la s e g u n d a , representa el m e s e n el q u e se abri el CDT. Si lee de n u e v o el e n u n c i a d o , se dar c u e n t a d e q u e el d i a g r a m a d e clases se l i m i t a a expresar lo m i s m o q u e all aparece, p e r o u s a n d o u n a sintaxis grfica, q u e t i e n e la v e n t a j a d e n o ser a m b i g u a .

Cuentabancaria

CuentaAhorros

mesActual

mesApertura

5.3. L o s R e q u e r i m i e n t o s no Funcionales
E n l a mayora d e l o s c a s o s , l a solucin q u e s e v a a construir debe tener e n cuenta las restricciones definidas p o r el cliente, q u e dependen, e n gran medida, d e l c o n t e x t o d e utilizacin d e l p r o g r a m a . P a r a e l c a s o d e l e m p l e a d o , p o r e j e m p l o , e l c l i e n t e podra p e d i r q u e e l p r o g r a m a s e p u e d a u s a r a travs d e u n telfono

celular, o desde u n n a v e g a d o r d e Internet, o q u e el tiempo d e respuesta d e cualquier consulta sea menor a 0,0001 segundos. L o s r e q u e r i m i e n t o s n o f u n c i o n a l e s estn m u c h a s v e c e s r e l a c i o n a d o s c o n r e s t r i c c i o n e s s o b r e l a tecnologa q u e se d e b e usar, e l v o l u m e n d e l o s d a t o s q u e s e d e b e m a nejar o la cantidad d e usuarios. Para problemas g r a n des, los r e q u e r i m i e n t o s n o f u n c i o n a l e s s o n la base para

el diseo d e l p r o g r a m a . P i e n s e e n l o d i s t i n t o q u e ser un p r o g r a m a q u e d e b e t r a b a j a r c o n u n nico u s u a r i o , d e o t r o q u e d e b e f u n c i o n a r c o n m i l e s d e e l l o s simultneamente. En e l c o n t e x t o d e e s t e l i b r o , d a d o s l o s o b j e t i v o s y e l t a m a o d e l o s p r o b l e m a s , slo v a m o s a c o n s i d e r a r l o s r e q u e r i m i e n t o s n o f u n c i o n a l e s d e interaccin y v i s u a lizacin, q u e estn l i g a d o s c o n l a nterfaz d e l o s p r o g r a m a s . vU

t e m a s nos v a a permitir generar las habilidades de u s o de manera incremental, sin necesidad de estudiar toda la teora l i g a d a a u n c o n c e p t o a n t e s d e p o d e r u s a r l o .

6 1 Algoritmos e Instrucciones
Los a l g o r i t m o s s o n u n o d e l o s e l e m e n t o s e s e n c i a l e s d e u n p r o g r a m a . U n algoritmo s e p u e d e v e r c o m o l a s o lucin d e u n p r o b l e m a m u y p r e c i s o y pequeo, e n e l cual se d e f i n e la secuencia d e i n s t r u c c i o n e s q u e se d e b e seguir para resolverlo. Imagine, entonces, u n programa c o m o u n conjunto de algoritmos, cada u n o responsable d e u n a p a r t e d e l a solucin d e l p r o b l e m a g l o b a l . Un a l g o r i t m o , e n g e n e r a l , e s u n a secuencia o r d e n a d a de pasos para realizar u n a actividad. Suponga, p o r e j e m p l o , q u e le v a m o s a explicar a a l g u i e n lo q u e debe h a c e r p a r a v i a j a r e n e l m e t r o p a r i s i n o . El s i g u i e n t e e s u n a l g o r i t m o d e lo que esta persona debe hacer para llegar a u n a direccin d a d a :

En e s t e p u n t o e l l e c t o r debera ser c a p a z d e l e e r e l e n u n c i a d o d e u n p r o b l e m a s e n c i l l o y, a p a r t i r d e ste, ( 1 ) e s p e c i f i c a r l o s r e q u e r i m i e n t o s funcionales, (2) crear el m o d e l o del m u n d o del p r o b l e m a usando U M L y (3) listar los requerimientos n o funcionales.

6. E l e m e n t o s d e un Programa
En e s t a p a r t e d e l captulo p r e s e n t a m o s l o s d i s t i n t o s e l e mentos que f o r m a n parte de u n programa. N o pretende ser u n a exposicin e x h a u s t i v a , p e r o s e s n u e s t r o o b j e t i v o d a r u n a visin g l o b a l d e l o s d i s t i n t o s a s p e c t o s q u e intervienen en un programa. En a l g u n o s c a s o s l a presentacin d e l o s c o n c e p t o s e s muy uno superficial. Ya nos t o m a r e m o s el t i e m p o e n los n i d e e l l o s . P o r a h o r a l o nico i m p o r t a n t e e s p o d e r l o s veles posteriores d e profundizar poco a poco e n cada usar e n casos limitados. Esta m a n e r a de presentar los *
Tarea 6

1 - C o m p r e u n tiquete de viaje e n los puntos de venta que se encuentran a la entrada de cada u n a de las estaciones del metro. 2 - I d e n t i f i q u e e n e l m a p a d e l m e t r o l a estacin d o n d e est y e l p u n t o a d o n d e n e c e s i t a ir. 3 - L o c a l i c e e l n o m b r e d e l a estacin d e m e t r o ms cercana al lugar de destino. 4 - V e r i f i q u e s i , a p a r t i r d e d o n d e est, h a y a l g u n a lnea q u e p a s e p o r l a estacin d e s t i n o . 5 - Si encontr l a lnea, b u s q u e e l n o m b r e d e l a m i s m a en l a direccin d e d e s t i n o . 6 - S u b a a l m e t r o e n e l andn d e l a lnea i d e n t i f i c a d a e n el p a s o a n t e r i o r y bjese e n la estacin d e d e s t i n o .

j^ jP

Objetivo: R e f l e x i o n a r sobre el nivel de precisin que d e b e ser u s a d o e n u n a l q o r i t m o para evitar ambigedades. S u p o n g a q u e usted es la p e r s o n a q u e v a a utilizar el a l g o r i t m o anterior, para m o v e r s e e n el m e t r o d e Pars. Identifique qu p r o b l e m a s podra t e n e r con las instrucciones a n t e r i o r e s . Piense p o r e j e m p l o si estn c o m p l e t a s .

Se prestan para q u e se i n t e r p r e t e n de m a n e r a s d i s t i n t a s ? Estamos s u p o n i e n d o que quin l o lee usa s u " s e n t i d o comn", o cualquier persona q u e l o use v a a resolver s i e m p r e el p r o b l e m a d e la m i s m a m a n e r a ?

Utilice este espacio para a n o t a r sus conclusiones:

Objetivo: E n t e n d e r la c o m p l e j i d a d q u e t i e n e la t a r e a de escribir u n a l g o r i t m o . Esta t a r e a es para ser desarrollada e n parejas: (1) e n el p r i m e r c u a d r a n t e h a g a u n d i b u j o simple, (2) e n el s e g u n d o c u a d r a n t e escriba las instrucciones para explicarle a la o t r a p e r s o n a cmo hacer el dibujo, (3) lea las instrucciones a la o t r a p e r s o n a , q u i e n d e b e i n t e n t a r seguirlas sin n i n g u n a a y u d a a d i c i o n a l , (4) c o m p a r e el d i b u j o inicial y el d i b u j o r e s u l t a n t e . I bujo: Algoritmo:

25
Haga u n a sntesis de los resultados o b t e n i d o s :

Cuando es el computador el q u e sigue u n algoritmo (en e l c a s o d e l c o m p u t a d o r s e h a b l a d e ejecutar), e s e v i d e n t e q u e las i n s t r u c c i o n e s q u e le d e m o s n o p u e d e n ser c o m o l a s d e f i n i d a s e n e l a l g o r i t m o d e l m e t r o d e P a rs. D a d o q u e e l c o m p u t a d o r n o t i e n e n a d a p a r e c i d o a l " s e n t i d o comn", las instrucciones q u e le d e f i n a m o s d e b e n e s t a r e s c r i t a s e n u n l e n g u a j e q u e n o d e s p a c i o a n i n g u n a ambigedad ( i m a g i n e m o s a l c o m p u t a d o r d e una n a v e e s p a c i a l d i c i e n d o " e s q u e y o cre q u e e s o e r a lo q u e u s t e d e s queran q u e y o h i c i e r a " ) . P o r e s t a razn los a l g o r i t m o s q u e c o n s t i t u y e n l a solucin d e u n p r o b l e m a s e d e b e n t r a d u c i r a u n l e n g u a j e increblemente r e s t r i n g i d o y l i m i t a d o ( p e r o a s u v e z p o d e r o s o si v e m o s t o d o l o q u e c o n l p o d e m o s h a c e r ) , d e n o m i n a d o u n lenguaje de p r o g r a m a c i n . T o d o l e n g u a j e d e p r o gramacin t i e n e s u p r o p i o c o n j u n t o d e r e g l a s p a r a d e c i r las c o s a s , d e n o m i n a d o l a sintaxis d e l l e n g u a j e . E x i s t e n m u c h o s l e n g u a j e s d e programacin e n e l m u n d o , c a d a u n o c o n s u s p r o p i a s caractersticas y v e n t a j a s . C o m o dijimos a n t e r i o r m e n t e , e n este libro utilizaremos el leng u a j e d e programacin Java q u e e s u n l e n g u a j e d e propsito general (no f u e escrito para resolver p r o b l e m a s e n u n d o m i n i o especfico), m u y u t i l i z a d o h o y e n da e n e l m u n d o e n t e r o , t a n t o a n i v e l cientfico c o m o e m p r e s a r i a l . Un p r o g r a m a d e c o m p u t a d o r est c o m p u e s t o por u n c o n j u n t o d e a l g o r i t m o s , escritos e n u n lenguaje d e programacin. Dichos a l g o r i t m o s estn estructurados de t a l f o r m a que, e n c o n j u n t o , son capaces d e resolver el p r o b l e m a .

las

clases r e p r e s e n t a n entidades del m u n d o del propueden

b l e m a (ms a d e l a n t e v e r e m o s q u e tambin

> <

pertenecer a lo q u e d e n o m i n a r e m o s el m u n d o d e la solucin). P o r a h o r a , y p a r a q u e s e p u e d a d a r u n a i d e a de lo q u e es u n programa completo, imagine q u e los a l g o r i t m o s estn d e n t r o d e l a s c l a s e s , y q u e s o n e s t a s ltimas l a s q u e e s t a b l e c e n l a m a n e r a e n q u e l o s a l g o ritmos colaboran para resolver el p r o b l e m a global (ver f i g u r a 1 . 9 ) . E s t a visin l a remos r e t i n a n d o a m e d i d a q u e a v a n c e m o s e n el libro, pero p o r a h o r a es suficiente para c o m e n z a r a trabajar.
Fig. 1 9 - V i s i n i n t u i t i v a d e l a e s t r u c t u r a de un programa programa
Clase3

algoritmos

algoritmos

algoritmos

Hasta a h o r a es claro q u e e n u n p r o g r a m a hay u n a clase p o r c a d a e n t i d a d d e l m u n d o d e l p r o b l e m a . P e r o , qu p a s a si h a y v a r i a s " i n s t a n c i a s " ( e s decir, v a r i o s e j e m p l a res) d e alguna d e esas entidades? Piense por e j e m p l o q u e e n v e z d e crear u n p r o g r a m a para m a n e j a r u n e m pleado, c o m o e n el primer caso de estudio, resolvemos hacer u n programa para manejar todos los empleados de u n a empresa. A u n q u e todos los empleados tienen las m i s m a s caractersticas ( n o m b r e , a p e l l i d o , e t c . ) , c a d a uno tiene valores distintos para ellas (cada u n o v a a t e n e r u n n o m b r e y u n a p e l l i d o d i s t i n t o ) . Es aqu d o n d e a p a r e c e e l c o n c e p t o d e objeto, l a b a s e d e t o d a l a programacin o r i e n t a d a a o b j e t o s . U n o b j e t o e s u n a

6.2.

Clases y Objetos

instancia d e u n a clase (la cual define los a t r i b u t o s q u e debe tener) que tiene sus propios valores para cada u n o de los a t r i b u t o s . El c o n j u n t o d e v a l o r e s d e los a t r i b u t o s se d e n o m i n a e l estado del objeto. P a r a d i f e r e n c i a r

Las c l a s e s s o n l o s e l e m e n t o s q u e d e f i n e n l a e s t r u c t u r a d e un p r o g r a m a . T a l c o m o v i m o s e n l a e t a p a d e anlisis, TI

las c l a s e s d e l o s o b j e t o s , s e p u e d e d e c i r q u e u n a c l a s e define u n tipo d e elemento del mundo, mientras q u e u n objeto representa u n elemento individual. P i e n s e p o r e j e m p l o e n e l c a s o d e l tringulo. C a d a u n o d e los p u n t o s q u e d e f i n e n l a s a r i s t a s d e l a f i g u r a geomtri TI

ca s o n o b j e t o s d i s t i n t o s , t o d o s p e r t e n e c i e n t e s a l a c l a s e P u n t o . E n la f i g u r a 1 . 1 0 s e lustra l a d i f e r e n c i a e n t r e c l a se y o b j e t o p a r a e l c a s o d e l tringulo. Fjese q u e l a c l a s e Punto dice q u e t o d o s los o b j e t o s d e esa clase d e b e n t e ner d o s a t r i b u t o s ( x , y ) , p e r o s o n s u s i n s t a n c i a s l a s q u e t i e n e n l o s v a l o r e s p a r a e s a s d o s caractersticas.

Fig. 1.10 - ^

antre clases y objetos p a r a el c a s o d e estudio d e l tringulo

Triangula
punto2

Punto

punto3

La clase Triangulo tiene tres asociaciones hacia la clase Punto (puntol, punto2 y punto3). Eso quiere decir que cada objeto de la clase Triangulo tendr tres objetos asociados, cada uno de ellos perteneciente a la clase Punto. Lo mismo sucede con las dos asociaciones hacia la clase Color: debe haber dos objetos de la clase Color por cada objeto de la clase Triangulo. Cada tringulo ser entonces representado por 6 objetos conectados entre s: uno de la clase Triangulo, tres de la clase Punto y dos de la clase Color.

Col:-;

Q Q

Cada uno de los objetos tiene asociado el nombre que se defini en el diagrama de clases. El primer punto del tringulo est en las coordenadas (10,10).

:Punto x = 10 y =10

puntol R = 105 G = 100 B = 240 colorRelleno

V
>
/ punto2

J
^

f
:Triangulo
^

fc3 El segundo punto del tringulo est en las coordenadas (20,20). '3 El tercer punto del tringulo est en las coordenadas (50, 70). Q
)

:Punto

Color R = 5 G = 170 "


4 7

^>

x = 20 y = 20 : Punto

colorLinea

punto3
\

x = 50 y = 70

Las lneas del tringulo son del color definido por el cdigo RGB de valor (5,170,47). A qu color corresponde ese cdigo?

) Este es slo un ejemplo de todos los tringulos que podran definirse a partir del diagrama de clases. En la parte superior de cada objeto aparece la clase a la cual pertenece.

m
Para representar los o b j e t o s v a m o s a utilizar la sintaxis propuesta e n U M L (diagrama d e objetos), q u e consiste e n cajas c o n bordes redondeados, e n la cual hay u n valor asociado c o n cada atributo. Podemos p e n s a r e n u n d i a g r a m a d e o b j e t o s c o m o u n e j e m p l o TI de los objetos q u e se pueden construir a partir d e la definicin d e u n d i a g r a m a d e clases. E n e l e j e m p l o 7 s e ilustra la m a n e r a d e visualizar u n c o n j u n t o d e objetos para el caso del e m p l e a d o .

^JJJjJjJ^ "1Z~L\

Objetivo: Ilustrar utilizando u n a extensin del caso de estudio 1 la diferencia entre los conceptos de clase y objeto. La extensin consiste e n s u p o n e r que el p r o g r a m a debe m a n e j a r t o d o s los e m p l e a d o s de u n a empresa, e n lugar de u n o solo de ellos. C a d a o b j e t o d e la clase E m p l e a d o tendr u n valor para cada u n o d e sus a t r i b u t o s y u n o b j e t o para cada u n a de sus asociaciones.

Empleado
nombre apellido sexo salario

fechaNacimiento > fechalngreso ^

Fecha
dia mes anio

Esta clase d e f i n e los a t r i b u t o s d e t o d o s los e m p l e a d o s de la e m p r e s a . De m a n e r a i n t u i t i v a , u n a clase p u e d e verse c o m o u n m o l d e a partir del cul sus o b j e t o s s o n construidos. C a d a e m p l e a d o ser r e p r e s e n t a d o con tres o b j e t o s : u n o d e la clase E m p l e a d o y dos de la clase Fecha. Este es el primer e j e m p l o de u n e m p l e a d o de la e m p r e s a . Se l l a m a Juan Ruiz, naci el 6 d e e n e r o d e 1 9 7 1 , comenz a t r a b a j a r e n la e m p r e s a el 1 de a g o s t o de 1 9 9 0 y s u salario es de d o s m i l l o n e s de pesos. D u r a n t e la ejecucin de u n p r o g r a m a p u e d e n aparecer t a n t o s o b j e t o s c o m o sean necesarios, para representar el m u n d o del p r o b l e m a . Si e n la e m p r e s a h a y 5 0 0 e m p l e a d o s , e n la ejecucin del p r o g r a m a habr 1 5 0 0 o b j e t o s representndolos ( 3 o b j e t o s por e m p l e a d o ) .

fechaNacimiento Empleado nombre = "Juan" apellido = "Ruiz" sexo = Masculino s a l a r i o = 2,000.000

:Fecha dia = 6 mes = 1 anio = 1971

:Fecha dia = 1 mes = 8 anio =1990

fechalngreso

Fecha fechaNacimiento Empleado n o m b r e = "Mara" a p e l l i d o = "Gmez" sexo = Femenino s a l a r i o = 2,500.000 fechalngreso dia = 19 mes = 8 anio -1974

Este g r u p o d e o b j e t o s representa o t r o e m p l e a d o de la e m p r e s a . N o t e q u e cada e m p l e a d o t i e n e sus propios valores para los a t r i b u t o s y q u e l o nico q u e c o m p a r t e n los dos e m p l e a d o s es la clase a la cual p e r t e n e c e n , la cual establece la lista de a t r i b u t o s q u e d e b e n tener.

Fecha dia - 1 mes = 8 a n i o = 2005

6.3. J a v a c o m o L e n g u a j e de Programacin
E x i s t e n m u c h o s l e n g u a j e s d e programacin e n e l m u n do. Los h a y d e distintos tipos, cada u n o a d a p t a d o a resolver distintos tipos de problemas. T e n e m o s los lenguajes funcionales c o m o U S P o C M L , los lenguajes i m p e r a t i v o s c o m o C, P A S C A L o B A S I C , l o s l e n g u a j e s lgicos c o m o P R O L O G y l o s l e n g u a j e s o r i e n t a d o s a o b jetos c o m o Java, C # y SMALLTALK. Java es u n lenguaje creado p o r S u n M i c r o s y s t e m s e n 1 9 9 5 , m u y u t i l i z a d o e n la a c t u a l i d a d e n t o d o el m u n d o , s o b r e t o d o gracias a s u i n d e p e n d e n c i a d e la p l a t a f o r m a e n l a q u e s e e j e c u t a . J a v a e s u n l e n g u a j e d e propsito g e n e r a l , c o n el cual se p u e d e n d e s a r r o l l a r d e s d e pequeos p r o g r a m a s p a r a r e s o l v e r p r o b l e m a s s i m p l e s ,

h a s t a g r a n d e s a p l i c a c i o n e s i n d u s t r i a l e s o d e a p o y o a la investigacin. E n e s t a seccin c o m e n z a m o s a e s t u d i a r l a m a n e r a d e expresar e n el l e n g u a j e Java los e l e m e n t o s identificados h a s t a a h o r a . C o m e n z a m o s p o r las clases, q u e s o n los e l e m e n t o s f u n d a m e n t a l e s de todos los lenguajes orient a d o s a objetos. Lo p r i m e r o q u e d e b e m o s decir es q u e u n p r o g r a m a e n J a v a est f o r m a d o p o r u n c o n j u n t o d e clases, cada u n a d e ellas descrita s i g u i e n d o las reglas sintcticas e x i g i d a s p o r e l l e n g u a j e . C a d a clase se d e b e g u a r d a r e n u n archivo distinto, cuyo n o m b r e d e b e ser igual al n o m b r e d e la clase, y cuya extensin d e b e s e r . j a v a . P o r e j e m p l o , l a c l a s e E m p l e a d o d e b e estar e n el a r c h i v o E m p l e a d o , j a v a y la clase F e c h a e n la clase F e c h a . j a v a .

U n p r o g r a m a e s c r i t o e n Java est f o r m a d o p o r u n c o n j u n t o d e a r c h i v o s , c a d a u n o d e los c u a l e s c o n t i e n e u n a clase. P a r a describir u n a clase e n J a v a , s e d e b e n s e g u i r d e m a n e r a e s t r i c t a l a s r e g l a s sintcticas d e l l e n g u a j e .

Ejemplo 8

" p 7 ^ %

Objetivo: M o s t r a r la sintaxis bsica del lenguaje Java para declarar u n a clase. Utilizamos el caso de estudio del e m p l e a d o para introducir la sintaxis que se debe utilizar para declarar u n a clase.

Clase: Empleado

Archivo: E m p l e a d o . j a v a

public class {

Empleado Empleado

// Aqu v a l a declaracin d e l a c l a s e

Clase: Fecha

Archivo:

Fecha.java

public class

Fecha Fecha

{
// Aqu v a l a declaracin d e l a c l a s e

B e n g u a j e Java, t o d o lo q u e v a entre d o s corche" y " } " ) se llama u n bloque de instrucciones. En ar, entre l o s corchetes d e la clase d e l e j e m p l o d e c l a r a c i n d e l a c l a s e . All s e d e b e n h a c e r rs t a n t o l o s a t r i b u t o s c o m o l o s a l g o r i t m o s d e l a B E . Tambin e s p o s i b l e a g r e g a r comentarios, q u e ar i g n o r a d o s p o r e l c o m p u t a d o r , p e r o q u e l e s i r v e n p r o g r a m a d o r para indicar algo q u e considera importe d e n t r o d e l cdigo. E n J a v a , u n a d e l a s m a n e r a s l u c i r u n c o m e n t a r i o e s c o n l o s c a r a c t e r e s //, t a l se m u e s t r a e n e l e j e m p l o 8 . :crama del simulador bancario, por ejemplo, cons' 0 clases distribuidas d e la s i g u i e n t e m a n e r a : 5 clases para el m o d e l o d e l m u n d o , a l m a c e n a d a s en los archivos CDT. j a v a CuentaBancaria. java, y Mes. java. C u e n t a C o r r i e n t e . j ava, CuentaAhorros. ^ava,

4 clases para la interfaz usuario, e n 4 archivos .j ava 1 clase para las pruebas del p r o g r a m a , e n 1 archivo .j ava Es a c o n s e j a b l e e n e s t e m o m e n t o m i r a r e n l a seccin 8 d e e s t e captulo l a localizacin d e d i c h o s a r c h i v o s d e n t r o d e l C D q u e acompaa e l l i b r o . V a l e l a p e n a tambin dar u n a mirada al contenido d e los archivos q u e v a m o s m e n c i o n a n d o e n esta parte. Puesto q u e u n programa puede estar compuesto por m i l e s d e clases, Java t i e n e e l c o n c e p t o d e p a q u e t e , a travs d e l c u a l e s p o s i b l e e s t r u c t u r a r l a s c l a s e s p o r g r u p o s jerrquicos. E s t o f a c i l i t a s u localizacin y m a n e j o . En l a f i g u r a 1 . 1 1 s e m u e s t r a l a e s t r u c t u r a d e p a q u e t e s del caso del s i m u l a d o r bancario.

1.11 - E j e m p l o d e l a e s t r u c t u r a d e p a q u e t e s d e l c a s o d e e s t u d i o d e l s i m u l a d o r b a n c a r i o

uniandes
e s t a c l a s e est] e n e l p a q u e t e

n4es.cupi2.simula4oi'Banc3rio.interfaz

cupi2

InterfazSimulador PanelDatosCliente PanelOpciones PanelSaldos

CuentaBancaria CuentaCorriente CuentaAhorros CDT

Mes

ClienteTest

Las diez clases del programa se dividen en 4 paquetes: uno con las clases de la interfaz de usuario (aquellas que mplementan la ventana y los botones), uno con el modelo del mundo, otro con las clases que pueden ser compartidas con otros programas (por ejemplo, la clase Mes se podra fcilmente reutilizar) y un ltimo paquete con las pruebas. El nombre completo de una clase es el nombre del paquete en el que se encuentra, seguido del nombre de la clase.

T o d a c l a s e e n J a v a d e b e c o m e n z a r p o r l a definicin d e l p a q u e t e e n el c u a l est s i t u a d a la c l a s e , c o m o se m u e s t r a TI

en el siguiente f r a g m e n t o d e p r o g r a m a del caso d e e s tudio del empleado:

Q package /* * * Esta clase * empleado */ public class { representa u n t uniandes.cupi2.empleado; O

El n o m b r e d e l p a q u e t e es u n a secuencia de identificadores separados p o r u n p u n t o . uniandes.cup2.empleado.Empleado es el n o m b r e c o m p l e t o de la clase. En el m o m e n t o de desarrollar u n p r o g r a m a se d e b e n establecer los p a q u e t e s q u e se v a n a utilizar. En n u e s t r o caso, el n o m b r e del p a q u e t e est c o n f o r m a d o p o r el n o m b r e d e la institucin ( u n i a n d e s ) , seguida p o r el n o m b r e del proyecto (cup2) y l u e g o el n o m b r e del ejercicio del cual f o r m a parte la clase ( e m p l e a d o ) .

Empleado

3 C a d a e m p r e s a de desarrollo sigue sus propias c o n v e n c i o n e s para definir los n o m b r e s de los paquetes.

En t o d o l e n g u a j e d e programacin e x i s t e n l a s q u e s e d e n o m i n a n palabras reservadas. D i c h a s p a l a b r a s n o las p o d e m o s u t i l i z a r p a r a n o m b r a r n u e s t r a s c l a s e s o a t r i b u t o s . H a s t a e l m o m e n t o h e m o s v i s t o las s i g u i e n t e s p a labras reservadas: p a c k a g e , p u b l i c y class.

6.4. T i p o s d e D a t o s
C a d a l e n g u a j e d e programacin c u e n t a c o n u n c o n j u n t o d e t i p o s d e d a t o s a travs d e l o s c u a l e s e l p r o g r a m a d o r p u e d e representar los a t r i b u t o s d e u n a clase. E n este nivel nos v a m o s a concentrar e n d o s tipos simples de datos: los enteros (tipo i n t ) , q u e p e r m i t e n m o d e -

Un e l e m e n t o d e u n a clase s e d e c l a r a p u b l i c cuando q u e r e m o s que sea v i s i b l e d e s d e o t r a s clases.

lar caractersticas c u y o s v a l o r e s p o s i b l e s s o n l o s v a l o r e s numricos d e t i p o e n t e r o ( p o r e j e m p l o , e l da e n l a c l a s e Fecha), y los reales (tipo d o u b i e ) , q u e p e r m i t e n r e p r e s e n t a r v a l o r e s numricos d e t i p o r e a l ( p o r e j e m p l o , el inters d e u n a c u e n t a d e a h o r r o s ) . Tambin v a m o s

En e l e j e m p l o a n t e r i o r s e p u e d e a p r e c i a r o t r a m a n e ra d e i n c l u i r u n c o m e n t a r i o d e n t r o d e u n p r o g r a m a : s e u t i l i z a n l o s smbolos / * * p a r a c o m e n z a r y l o s smbolos * / p a r a t e r m i n a r . El c o m e n t a r i o p u e d e e x t e n d e r s e p o r v a r i o s r e n g l o n e s s i n ningn p r o b l e m a , a d i f e r e n c i a d e los c o m e n t a r i o s q u e c o m i e n z a n p o r l o s smbolos // q u e t e r m i n a n c u a n d o s e a c a b a e l rengln. L o s c o m e n t a r i o s que se introducen c o m o aparece e n el ejemplo sirven para describir los principales e l e m e n t o s d e u n a clase y t i e n e n u n u s o e s p e c i a l q u e s e ver ms a d e l a n t e e n e l libro.

a estudiar u n tipo d e datos para manejar las cadenas de caracteres (tipo s t r i n g ) , q u e permite representar d e n t r o d e u n a c l a s e u n a caracterstica c o m o e l n o m b r e d e u n a p e r s o n a o u n a direccin. E n l o s s i g u i e n t e s niveles, iremos introduciendo n u e v o s tipos d e datos a medida q u e los v a y a m o s necesitando. En J a v a , e n e l m o m e n t o d e d e c l a r a r u n a t r i b u t o , e s n e cesario declarar el tipo d e datos a l cual corresponde, utilizando la sintaxis q u e se ilustra e n el e j e m p l o q u e se m u e s t r a a continuacin:

31
package /** * Esta clase r e p r e s e n t a u n empleado */ public class { // // A t r i // private private private butos S t r i n g nombre; String apellido; i n t salario; Empleado uniandes.cupi2.empleado; I n i c i a l m e n t e se declaran los a t r i b u t o s n o m b r e y apellido, d e t i p o String (cadenas d e caracteres). Los a t r i b u t o s se declaran c o m o privados (private) para evitar s u manipulacin desde f u e r a d e la clase. El a t r i b u t o salario se declara de t i p o int, p u e s t o que e n el anlisis se estableci q u e slo se iban a manejar valores enteros (no centavos). C o n las tres declaraciones q u e aparecen e n el e j e m p l o , el c o m p u t a d o r e n t i e n d e q u e cualquier o b j e t o d e la clase E m p l e a d o debe t e n e r valores para esas tres caractersticas. Slo qued p e n d i e n t e p o r decidir el t i p o d e l a t r i b u t o sexo, q u e n o corresponde a n i n g u n o d e los t i p o s vistos; eso lo h a r e m o s ms a d e l a n t e .

> <

Para m o d e l a r el a t r i b u t o " s e x o " , d e b e m o s utilizar a l g u no d e los tipos de datos c o n los q u e cuenta el lenguaje. Lo m e j o r e n e s t e c a s o e s u t i l i z a r u n a t r i b u t o d e t i p o e n t e r o y u s a r l a convencin d e q u e si d i c h o a t r i b u t o t i e n e el v a l o r 1 s e est r e p r e s e n t a n d o u n e m p l e a d o h o m b r e y, si e s 2 , u n e m p l e a d o m u j e r . E s t e p r o c e s o d e a s o c i a r 71

v a l o r e s e n t e r o s y u n a convencin p a r a i n t e r p r e t a r l o s e s a l g o q u e s e h a c e c a d a v e z q u e los v a l o r e s p o s i b l e s d e u n a t r i b u t o n o c o r r e s p o n d e n d i r e c t a m e n t e c o n l o s d e algn t i p o d e d a t o s . Fjese q u e u n a c o s a e s e l v a l o r q u e u s a m o s ( q u e e s a r b i t r a r i o ) y o t r a l a interpretacin q u e h a c e m o s d e e s e v a l o r . Ese p u n t o ser p r o f u n d i z a d o e n e l n i v e l 2 .

public class {

Empleado

/** 1 = m a s c u l i n o , 2 = f e m e n i n o */ private i n t s e x o ; Q

A l declarar u n a t r i b u t o para el cual se utiliz u n a convencin especial para representar los valores posibles, es i m p o r t a n t e agregar u n c o m e n t a r i o e n la declaracin del m i s m o , e x p l i c a n d o la i n t e r p r e t a cin q u e se d e b e d a r a cada valor. En el e j e m p l o , d e c i d i m o s representar con u n 1 el valor m a s c u l i n o , y con u n 2 el valor f e m e n i n o .

En el d i a g r a m a d e clases d e U M L , p o r su parte, u s a El t i p o d e u n a t r i b u t o d e t e r m i n a e l c o n j u n t o d e v a l o r e s q u e ste p u e d e t o m a r dentro de los objetos de la clase, l o m i s m o q u e las o p e r a c i o n e s q u e s e v a n a p o d e r h a c e r s o b r e d i c h a caracterstica mos u n a sintaxis similar para mostrar los atributos. En la f i g u r a 1 . 1 2 a p a r e c e la m a n e r a e n q u e se i n c l u y e n los a t r i b u t o s y s u t i p o e n el caso d e e s t u d i o d e l e m p l e a d o . D e p e n d i e n d o d e la h e r r a m i e n t a q u e s e utilice para definir el d i a g r a m a d e clases, es posible q u e l a s i n t a x i s vare l e v e m e n t e .

32
Fig. 1.12 - E j e m p l o d e la d e c l a r a c i n e n U M L d e los a t r i b u t o s de la c l a s e E m p l e a d o

Empleado S S i i t r i n g nombre; tring apellido; nt salario; nt sexo;

Lo nico q u e n o s f a l t a i n c l u i r e n e l cdigo J a v a e s l a d e claracin d e l a s a s o c i a c i o n e s . P a r a e s t o , v a m o s a u t i l i zar u n a s i n t a x i s s i m i l a r a l a p r e s e n t a d a a n t e r i o r m e n t e , TI

u t i l i z a n d o e l n o m b r e d e l a asociacin c o m o n o m b r e d e l a t r i b u t o y el n o m b r e d e la clase c o m o s u t i p o , t a l c o m o se p r e s e n t a e n e l s i g u i e n t e f r a g m e n t o d e cdigo:

package

uniandes.cupi2.empleado; Empleado Las asociaciones hacia la clase Fecha las declaramos, c o m o hicimos con el resto de a t r i b u t o s , u s a n d o el n o m b r e de la asociacin c o m o n o m b r e del a t r i b u t o . El t i p o de la asociacin es el n o m b r e d e la clase hacia la cual est dirigida la flecha e n el d i a g r a m a de clases. El o r d e n de declaracin de los a t r i b u t o s n o es importante.

public class // // A t r i // private private private private

butos S t r i n g nombre; String apellido; int s a l a r i o ; int sexo;

private F e c h a f e c h a N a c i m i e n t o ; private F e c h a f e c h a l n g r e s o ;

En l a f i g u r a 1 . 1 3 a p a r e c e e l d i a g r a m a d e c l a s e s c o m p l e to del caso de estudio del empleado.


F i g . 1 . 1 3 - R e p r e s e n t a c i n d e l a c l a s e Empleado e n U M L

Empleado
fechaNacimiento S S i i t t n n ring nombre ring apellido t sexo t salario

Fecha
int d i a int mes int anio

H
fechalngreso y

Objetivo: Crear h a b i l i d a d e n la definicin d e los t i p o s de d a t o s para representar las caractersticas de u n a clase. Escriba e n Java y e n U M L las declaraciones de los a t r i b u t o s (y las asociaciones) para las cinco clases del caso de e s t u d i o d e l s i m u l a d o r bancario.

CuentaBancaria

CuentaCorriente

CuentaAhorros

CDT

Mes

34
6.5. Mtodos
qu informacin, q u e n o t e n g a y a e l o b j e t o , e s i n d i s pensable para poder resolver el problema p u n t u a l ? '. r 5 : ^ e s d e h a b e r d e f i n i d o l o s a t r i b u t o s d e l a s c l a s e s e n : 5 : j e el t u r n o para lo q u e h e m o s l l a m a d o hasta a h o r a " l o s a l g o r i t m o s " d e la clase. C a d a u n o d e e s o s a l g o r i t m o s se d e n o m i n a u n mtodo, y pretende resolver . - : : : e ^ a puntual, dentro del contexto del problema Zz
.-:

U n tipo de respuesta, q u e indica e l t i p o d e d a t o s a l q u e p e r t e n e c e e l r e s u l t a d o q u e v a a r e t o r n a r e l mtodo. Si n o h a y u n a r e s p u e s t a , s e indica e l t i p o v o i d .

El cuerpo del m t o d o , q u e c o r r e s p o n d e a l a lista d e i n s t r u c c i o n e s q u e r e p r e s e n t a e l a l g o r i t m o q u e resuelve el p r o b l e m a p u n t u a l .

: _ 9 se q u i e r e r e s o l v e r . Tambin s e p u e d e v e r u n c l a s e s d e l m o d e l o ( o a e l l a m i s m a si e s e l

: : : : : m o u n servicio q u e la clase debe prestar a


:-.~zS

Tpicamente, u n a c l a s e t i e n e e n t r e c i n c o y v e i n t e m t o d o s ( a u n q u e h a y casos e n los q u e tiene decenas d e ellos), cada u n o capaz d e resolver u n p r o b l e m a p u n t u a l de la clase a la cual p e r t e n e c e . D i c h o p r o b l e m a s i e m p r e est r e l a c i o n a d o c o n l a informacin q u e c o n t i e n e l a c l a se. P i e n s e e n u n a c l a s e c o m o l a r e s p o n s a b l e d e m a n e j a r la informacin q u e s u s o b j e t o s t i e n e n e n s u s a t r i b u t o s , y l o s mtodos c o m o e l m e d i o p a r a h a c e r l o . E n e l c u e r p o d e u n mtodo s e e x p l i c a e n t o n c e s l a f o r m a d e u t i l i z a r los v a l o r e s d e l o s a t r i b u t o s p a r a c a l c u l a r a l g u n a i n f o r macin o l a f o r m a d e m o d i f i c a r l o s s i e s e l c a s o .

zi:

zi"z q u e e l l a s p u e d a n r e s o l v e r s u s r e s p e c t i v o s

problemas. Un mtodo est c o m p u e s t o p o r c u a t r o e l e m e n t o s : Un n o m b r e ( p o r e j e m p l o , c a m b i a r S a i a r i o , para e l c a s o d e e s t u d i o d e l e m p l e a d o , q u e servira para modificar el salario del e m p l e a d o ) . . - 5 lista de p a r m e t r o s , q u e c o r r e s p o n d e a l c o n j u n t o d e valores (cada u n o c o n su tipo) necesarios : vi : : c e r r e s o l v e r e l p r o b l e m a p u n t u a l (Si e l p r o : -~i es c a m b i a r e l s a l a r i o d e l e m p l e a d o , p o r e j e m plo, e s n e c e s a r i o q u e a l g u i e n e x t e r n o a l e m p l e a d o :-. e - . e v o s a l a r i o . S i n e s a informacin e s i m p o s i ble e s c r i b i r e l mtodo). P a r a d e f i n i r l o s parmetros : _f : e c e t e n e r u n mtodo, d e b e m o s p r e g u n t a r n o s a

El encabezado del mtodo (un mtodo sin el cuerpo) se denomina su signatura.

Objetivo: M o s t r a r la sintaxis que se usa e n Java para declarar u n mtodo. U s a m o s para esto el caso de estudio del e m p l e a d o , con tres mtodos sin cuerpo, s u p o n i e n d o q u e cada u n o debe resolver el problema que ah m i s m o se describe. La declaracin q u e aqu se m u e s t r a hace parte de la declaracin de la clase (los mtodos v a n despus de la declaracin de los atributos). Se deja u n cuarto mtodo al final c o m o t a r e a para el lector; e n este caso, a partir de la descripcin, debe d e t e r m i n a r los parmetros, el r e t o r n o y la signatura del mtodo. Nombre: c a m b i a r S a i a r i o frametros: n u e v o S a l a r i o de tipo entero. Si n o se entrega este valor c o m o parmetro es imposible cambiar el salario del empleado. N o t e que al definir u n parmetro se debe dar u n n o m b r e al valor que se espera y un tipo. R e t o m o : n i n g u n o ( v o i d ) p u e s t o q u e el o b j e t i v o del mtodo n o es calcular ningn valor, s i n o m o d i f i c a r el v a l o r d e u n a t r i b u t o del e m p l e a d o . Descripcin: cambia el salario del e m p l e a d o , asignndole el valor q u e se e n t r e g a c o m o parmetro. public void cambiarSaiario( i n t nuevoSalario) { // Aqu v a e l c u e r p o d e l mtodo

Hombre: d a r S a l a r i o ^ m e t r o s : n i n g u n o , p u e s t o q u e con la informacin aue ya t i e n e n los o b j e t o s d e la clase E m p l e a d o es cosible resolver el p r o b l e m a . R e t o r n o : el salario a c t u a l del e m p l e a d o , d e t i p o e n t e r o . E la s i g n a t u r a slo se dice el t i p o de d a t o s q u e se v a a -etornar, pero n o se dice cmo se retornar.
n

public i n t d a r S a l a r i o ( ) { // Aqu v a e l c u e r p o d e l mtodo

Descripcin: r e t o r n a el salario a c t u a l del e m p l e a d o . Nombre: calcularPrestaciones public { // Aqu v a e l c u e r p o d e l mtodo intc a l c u l a r P r e s t a c i o n e s ( )

Parmetros: n i n g u n o . A l igual q u e e n el mtodo anterior, n o se necesita informacin e x t e r n a a l e m p l e a d o para poder calcular sus prestaciones. R e t o r n o : las prestaciones a n u a l e s a las q u e t i e n e derecho el e m p l e a d o . D a d o que el salario es e n t e r o , v a m o s a s u p o n e r q u e las prestaciones tambin lo s o n . Descripcin: r e t o r n a el v a l o r de las prestaciones a n u a l e s a las q u e t i e n e d e r e c h o el e m p l e a d o . Nombre: aumentarSalario

Parmetros: Retorno: Descripcin: a u m e n t a el salario del e m p l e a d o e n u n porcentaje q u e c o r r e s p o n d e a la inflacin a n u a l d e l pas.

Cules s o n l o s mtodos q u e s e d e b e n t e n e r e n u n a c l a s e ? E s a e s u n a p r e g u n t a q u e s e contestar e n n i v e l e s p o s t e r i o r e s . P o r a h o r a , s u p o n g a m o s q u e la clase t i e n e y a d e f i n i d o s l o s mtodos q u e n e c e s i t a p a r a p o der r e s o l v e r la p a r t e d e l p r o b l e m a q u e le c o r r e s p o n d e y t r a b a j e m o s e n el cuerpo de ellos.

En el d i a g r a m a d e clases de U M L , se utiliza la tercera z o n a d e la caja d e u n a clase para p o n e r las s i g n a t u r a s d e l o s mtodos, t a l c o m o s e i l u s t r a e n l a f i g u r a 1.14.

Fig. 1 . 1 4 - S i n t a x i s e n U M L p a r a m o s t r a r l a s s i g n a t u r a s d e l o s m t o d o s d e u n a c l a s e
Empleado
fechaNacimiento S t r i n g nombre String apellido int sexo int salario v o i d cambiarSalarioint n u e v o S a l a r i o ) int darSalarioO int calcularPrestacionesO

Fecha
int int int int i n t i n t dia mes anio darDiaO darMes() d a r A n i o O

>
fechalngreso
7

Tarea 9

Objetivo: Escribir y e n t e n d e r e n Java la s i g n a t u r a d e a l g u n o s mtodos del caso d e e s t u d i o del s i m u l a d o r bancario. C o m p l e t e la siguiente informacin, ya sea escribiendo la s i g n a t u r a d e l mtodo q u e se describe, o i n t e r p r e t a n d o la s i g n a t u r a q u e se d a . T o d o s los mtodos d e esta t a r e a son d e la clase C u e n t a A h o r r o

Nombre: Parmetros: Retorno: Descripcin:

public void c o n s i g n a r V a l o r ( {

intv a l o r )

Nombre:

darSaldo

Parmetros: n i n g u n o . R e t o r n o : valor de t i p o e n t e r o (ignora los c e n t a v o s e n el m o m e n t o d e d a r el saldo). Descripcin: r e t o r n a el saldo de la c u e n t a d e a h o r r o s . Nombre: r e t i r a r V a l o r Parmetros: valor de t i p o e n t e r o , q u e indica el m o n t o que se q u i e r e retirar d e la c u e n t a d e a h o r r o s . Retorno: ninguno. Descripcin: retira d e la c u e n t a de a h o r r o s el valor q u e se e n t r e g a c o m o parmetro. Nombre: darlnteresMensual

Parmetros: n i n g u n o . R e t o r n o : valor de t i p o real. Descripcin: r e t o r n a el inters m e n s u a l q u e paga u n a c u e n t a de a h o r r o s . Nombre: a c t u a l i z a r S a l d o P o r P a s o M e s Parmetros: n i n g u n o . Retorno: ninguno. Descripcin: actualiza el saldo de la c u e n t a de a h o r r o s s i m u l a n d o q u e acaba de transcurrir u n m e s y q u e se d e b e n agregar los c o r r e s p o n d i e n t e s intereses g a n a d o s .

Вам также может понравиться