PDF de programación - Objetos

Imágen de pdf Objetos

Objetosgráfica de visualizaciones

Publicado el 31 de Julio del 2017
488 visualizaciones desde el 31 de Julio del 2017
286,2 KB
34 paginas
Creado hace 17a (15/04/2007)
Objetos

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y Computación

Universidad Complutense de Madrid

15 de abril de 2007

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Objetos

Objeto es un ejemplar de una clase.

Estado interno, no manipulable directamente.
Métodos de manipulación.

Programa colección de clases.

Clase definición de objetos.
Similar a RECORD de Pascal + métodos de manipulación.

Java no es un lenguaje orientado a objetos puro, tiene tipos
primitivos.

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Objetos

Implementación de fechas

Implementación de fecha:

Representación de una fecha ordinaria (día/mes/año)
moderna (desde 01/01/1601).

Dada una fecha, pasar a la siguiente, anterior, añadir/restar
días.

Comparar fechas.

¿Cuántos días hay entre 2 fechas?

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Objetos

Uso de fechas

import fecha . Fecha ;
public class P r F e c h a {

public static void main ( String [] args ) {

Fecha f1 = new Fecha (30 , Fecha . DICIEMBRE , 1 9 9 9 ) ;
Fecha f2 = new Fecha (1 , Fecha . MARZO , 2 0 0 4 ) ;
while ( f1 . c o m p a r e T o ( f2 ) <=0) {

System . out . p r i n t l n ( f1 . d i a S e m a n a ()+ " : " + f1 );
f1 . s i g u i e n t e ();

}

}

}

1
2
3
4
5
6
7
8
9
10
11

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Objetos

Implementación de fechas

p a c k a g e fecha ;
public class Fecha i m p l e m e n t s C o m p a r a b l e {

p r i v a t e int dia ;
p r i v a t e int mes ;
p r i v a t e int anyo ;
public Fecha ( int _dia , int _mes , int _anyo ) {

dia = _dia ; mes = _mes ; anyo = _anyo ;

}
public String t o S t r i n g ( ) {

return dia + " / " + mes + " / " + anyo ;

}
public int c o m p a r e ( Object o )

. . . . . . . . . .

}
public void a n y a d i r ( int días ) {

. . . . . . . . . .

}
public void s i g u i e n t e () {

a n y a d i r (1);

}
public void a n t e r i o r () {

a n y a d i r (1);

}
public int d i a s H a s t a ( Fecha otra ) {

......

}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Objetos

Implementación más real

Establecemos una fecha inicial el día 0, para simplificar el
01/01/1601 ¿por qué?.

Representamos cada fecha como el número de días
transcurridos desde el día 0.

Necesitamos métodos de traducción

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Objetos

Clase Fecha

p a c k a g e fecha ;

public class Fecha i m p l e m e n t s Comparable , C l o n e a b l e {

// C o n s t a n t e s para los m e s e s
public final static int ENERO =0;
public final static int F E B R E R O =1;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

public final static int D I C I E M B R E =11;

// C o n s t a n t e s para los días
public final static int LUNES =0;
public final static int MARTES =1;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
public final static int D O M I N G O =6;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

// Días t r a n s c u r r i d o s d e s d e del 1 de e n e r o de 1601
p r i v a t e int d i a s D e s d e I n i c i o ;
public Fecha ( int dia , int mes , int anyo ) {

c o m p r u e b a F e c h a ( dia , mes , anyo );
d i a s D e s d e I n i c i o = c a l c u l a D i a s D e s d e I n i c i o ( dia , mes , anyo );

}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Objetos

Clase Fecha

public void a n y a d i r D i a s ( int inc ) {

int d = d i a s D e s d e I n i c i o + inc ;
if (d <0) throw new F e c h a F u e r a D e R a n g o ( " Día a n t e r o r al p e r m i t i d o " );
d i a s D e s d e I n i c i o = d ;

}

public void s i g u i e n t e () {

a n y a d i r D i a s (1);

}
public void a n t e r i o r () {

a n y a d i r D i a s ( -1);

}

public b o o l e a n equals ( Object obj ) {

if (! ( obj i n s t a n c e o f Fecha )) return false ;
return d i a s D e s d e I n i c i o ==(( Fecha ) obj ). d i a s D e s d e I n i c i o ;

}

public int c o m p a r e T o ( Object o ) {

if (!( o i n s t a n c e o f Fecha ))

throw new C l a s s C a s t E x c e p t i o n ( " Se r e q u i e r e un objeto de clase Fecha " );

return d i a s D e s d e I n i c i o -(( Fecha ) o ). d i a s D e s d e I n i c i o ;

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Objetos

Clase Fecha

p r i v a t e static int c a l c u l a D i a s D e s d e I n i c i o ( int elDia , int elMes , int elAnyo ){

int dias ;

dias = c a l u l a D i a s H a s t a P r i m e r o D e ( elAnyo );
dias = dias + c a l c u l a D i a s H a s t a P r i m e r o D e l M e s ( elMes , elAnyo );
dias = dias + elDia -1; // el 1 / 1 / 1 6 0 1 es el dia 0
return dias ;

}

1
2
3
4
5
6
7
8

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Objetos

Clase Fecha

p r o t e c t e d static int d i a s M e s ( int mes , int anyo ) {

int [] d i a s M e s ={31 , 28 , 31 ,
30 , 31 , 30 ,
31 , 31 , 30 ,
31 , 30 , 31};

int dias = d i a s M e s [ mes ] + ( ( mes == F E B R E R O )? a n y o B i s i e s t o ( anyo ):0 );
return dias ;

}
p r i v a t e static int c a l c u l a D i a s H a s t a P r i m e r o D e l M e s ( int mes , int anyo ){

int dias = 0;
for ( int i = 0; i < mes ; i ++) {

dias = dias + d i a s M e s (i , anyo );

}
return dias ;

}

p r i v a t e static int c a l u l a D i a s H a s t a P r i m e r o D e ( int elAnyo ){

int dias ;
int diff = elAnyo - A N Y O _ I N I C I O ;
dias = diff *365; // se a n y a d e n 365 dias por cada año
dias = dias + diff / 4; // a ñ a d i m o s 1 por cada m ú l t i p l o de 4
dias = dias - ( diff /100); // se q u i d a 1 por cada m ú l t i m o de 100
dias = dias + ( diff /400); // se a ñ a d e 1 por cada m ú l t i m o de 400

return dias ;

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Objetos

Clase Fecha

public String t o S t r i n g (){

F e c h a T e r n a f = new F e c h a T e r n a ( d i a s D e s d e I n i c i o );
return f . t o S t r i n g ();

}

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
class F e c h a T e r n a {

p r i v a t e int dia ;
p r i v a t e int mes ;
p r i v a t e int anyo ;
public F e c h a T e r n a ( int _dia , int _mes , int _anyo ) {

dia = _dia ; mes = _mes ; anyo = _anyo ;

}
public String t o S t r i n g () {

return dia + " / " + mes + " / " + anyo ;

}

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Objetos

Clase Fecha

p r i v a t e static final int grupo1 = 365;
p r i v a t e static final int grupo4 = 4 * 3 6 5 + 1 ;
p r i v a t e static final int g r u p o 1 0 0 = 25* grupo4 -1;
p r i v a t e static final int g r u p o 4 0 0 = 4* g r u p o 1 0 0 +1;

public F e c h a T e r n a ( int dias ) {

int quedan = dias ;
int g r u p o s 4 0 0 = quedan / g r u p o 4 0 0 ;
quedan = quedan % g r u p o 4 0 0 ;
int g r u p o s 1 0 0 = quedan / g r u p o 1 0 0 ;
quedan = quedan % g r u p o 1 0 0 ;
int g r u p o s 4 = quedan / grupo4 ;
quedan = quedan % grupo4 ;
int g r u p o s 1 = quedan / grupo1 ;
quedan = quedan % grupo1 ;
int anyo = Fecha . A N Y O _ I N I C I O +

g r u p o s 1 + 4* g r u p o s 4 +
100* g r u p o s 1 0 0 + 400* g r u p o s 4 0 0 ;

int mes =0;
while ( quedan >= Fecha . d i a s M e s ( mes , anyo )) {

quedan = quedan - Fecha . d i a s M e s ( mes , anyo );
mes ++;

}
this . dia = quedan +1;
this . mes = mes +1;
this . anyo = anyo ;

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Objetos

Terminología

clase

Definición de objetos. Todo objeto pertenece a una clase.

Fecha f1 = new Fecha (30 , Fecha . DICIEMBRE , 1 9 9 9 ) ;
Fecha f2 = new Fecha (1 , Fecha . MARZO , 2 0 0 4 ) ;

p a c k a g e fecha ;

public class Fecha i m p l e m e n t s C o m p a r a b l e {
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
}

class F e c h a T e r n a {
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
}

1
2

1
2
3
4
5
6
7
8
9
10
11

Luis Fernando Llana Díaz

Departamento de Sistemas Informáticos y ComputaciónUniversidad Complutense de Madrid

Objetos

Terminología

constructor

Procedimiento que construye objetos

public Fecha ( int dia , int mes , int anyo ) {

c o m p r u e b a F e c h a ( dia , mes , anyo );
d i a s D e s d e I n i c i o = c a l c u l a D i a s D e s d e I
  • Links de descarga
http://lwp-l.com/pdf5885

Comentarios de: Objetos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad