• No se han encontrado resultados

Temas Selectos de Java

N/A
N/A
Protected

Academic year: 2019

Share "Temas Selectos de Java"

Copied!
40
0
0

Texto completo

(1)

Temas Selectos de Java

Oscar Ch´

avez

(2)

Arreglos de tipos de datos primitivos

Declaraci´

on

de un arreglo de enteros:

int a[];

Creaci´

on

de un arreglo de enteros:

a = new int[10];

En un s´

olo paso:

int a[] = new int[10];

¡Un arreglo s´

olo es un objeto!

(3)

Arreglos de tipos de datos primitivos

Declaraci´

on

de un arreglo de enteros:

int a[];

Creaci´

on

de un arreglo de enteros:

a = new int[10];

En un s´

olo paso:

int a[] = new int[10];

¡Un arreglo s´

olo es un objeto!

(4)

Arreglos de tipos de datos primitivos

Declaraci´

on

de un arreglo de enteros:

int a[];

Creaci´

on

de un arreglo de enteros:

a = new int[10];

En un s´

olo paso:

int a[] = new int[10];

¡Un arreglo s´

olo es un objeto!

(5)

Arreglos de tipos de datos primitivos

Declaraci´

on

de un arreglo de enteros:

int a[];

Creaci´

on

de un arreglo de enteros:

a = new int[10];

En un s´

olo paso:

int a[] = new int[10];

¡Un arreglo s´

olo es un objeto!

(6)

Arreglos de tipos de datos primitivos

Declaraci´

on

de un arreglo de enteros:

int a[];

Creaci´

on

de un arreglo de enteros:

a = new int[10];

En un s´

olo paso:

int a[] = new int[10];

¡Un arreglo s´

olo es un objeto!

(7)

Arreglos de objetos

Arreglo de objetos:

Calculadora []x = new Calculadora[10];

¡Un arreglo s´

olo es un objeto!

Crear los objetos de tipo

Calculadora

x[0] = new Calculadora();

x[1] = new Calculadora();

..

.

(8)

Arreglos de objetos

Arreglo de objetos:

Calculadora []x = new Calculadora[10];

¡Un arreglo s´

olo es un objeto!

Crear los objetos de tipo

Calculadora

x[0] = new Calculadora();

x[1] = new Calculadora();

..

.

(9)

Arreglos de objetos

Arreglo de objetos:

Calculadora []x = new Calculadora[10];

¡Un arreglo s´

olo es un objeto!

Crear los objetos de tipo

Calculadora

x[0] = new Calculadora();

x[1] = new Calculadora();

..

.

(10)

Arreglos inicializados

1 c l a s s A r r e g l o {

2 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 3 i n t a r r e g l o [ ] [ ] = { {1 , 2 , 3},

4 {4},

5 {5 , 6},

6 {7 , 8 , 9 , 1 0}

7 };

8 System . o u t . p r i n t l n ( a r r e g l o . l e n g t h ) ;

9 }

(11)

Matrices

Declaraci´

on

de una matriz de enteros:

int m[][];

Creaci´

on

de una matriz de enteros:

m = new int[10][5];

En un s´

olo paso:

(12)

Matrices

Declaraci´

on

de una matriz de enteros:

int m[][];

Creaci´

on

de una matriz de enteros:

m = new int[10][5];

En un s´

olo paso:

(13)

Matrices

Declaraci´

on

de una matriz de enteros:

int m[][];

Creaci´

on

de una matriz de enteros:

m = new int[10][5];

En un s´

olo paso:

(14)

Matrices

Declaraci´

on

de una matriz de enteros:

int m[][];

Creaci´

on

de una matriz de enteros:

m = new int[10][5];

En un s´

olo paso:

(15)

¿Es correcto este c´

odigo?

1 c l a s s A r r e g l o {

2 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 3 i n t [ ] [ ] m = new i n t [ 1 0 ] [ ] ;

4 }

(16)

¿Y que tal este otro?

1 c l a s s A r r e g l o {

2 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 3 i n t b [ ] ;

4 b = {1 , 2 , 4};

5 }

(17)

Polimorfismo

Tratar un objeto espec´ıfico como uno m´

as general, permite

aprovechar el funcionamiento gen´

erico de la clase para tratar

objetos diferentes

Generalizaci´

on: Compartir informaci´

on entre dos entidades

evitando la redundancia,

Herencia: Un

Animal

es una clase

as general que un

Perro.

(18)

Polimorfismo

Tratar un objeto espec´ıfico como uno m´

as general, permite

aprovechar el funcionamiento gen´

erico de la clase para tratar

objetos diferentes

Generalizaci´

on

: Compartir informaci´

on entre dos entidades

evitando la redundancia,

Herencia

: Un

Animal

es una clase

as general que un

Perro

.

(19)

Polimorfismo

Tratar un objeto espec´ıfico como uno m´

as general, permite

aprovechar el funcionamiento gen´

erico de la clase para tratar

objetos diferentes

Generalizaci´

on

: Compartir informaci´

on entre dos entidades

evitando la redundancia,

Herencia

: Un

Animal

es una clase

as general que un

Perro

.

Especializaci´

on

: Definir nuevas clases a partir de otras ya

existentes.

Herencia

: Un

Perro

es una clase m´

as especializada

(20)

Ejemplo: ¿Es correcto este c´

odigo?

1 c l a s s C a l c u l a d o r a { 2 p u b l i c v o i d suma ( ) { } 3 }

4

5 c l a s s C a l c u l a d o r a C i e n t i f i c a e x t e n d s C a l c u l a d o r a { 6 p u b l i c v o i d r a i z ( ) { }

7 } 8

9 p u b l i c c l a s s P o l i m o r f i s m o {

10 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 11 C a l c u l a d o r a c = new C a l c u l a d o r a ( ) ; 12 C a l c u l a d o r a C i e n t i f i c a c c = new

13 C a l c u l a d o r a C i e n t i f i c a ( ) ; 14 c = c c ;

15 c . suma ( ) ; 16 }

(21)

¿Y que tal este otro?

1 c l a s s C a l c u l a d o r a { 2 p u b l i c v o i d suma ( ) { } 3 }

4

5 c l a s s C a l c u l a d o r a C i e n t i f i c a e x t e n d s C a l c u l a d o r a { 6 p u b l i c v o i d r a i z ( ) { }

7 } 8

9 p u b l i c c l a s s P o l i m o r f i s m o {

10 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 11 C a l c u l a d o r a c = new C a l c u l a d o r a ( ) ; 12 C a l c u l a d o r a C i e n t i f i c a c c = new

13 C a l c u l a d o r a C i e n t i f i c a ( ) ; 14 c = c c ;

15 c . r a i z ( ) ; 16 }

(22)

Polimorfismo en arreglos: ¿Es correcto este c´

odigo?

1 p u b l i c c l a s s P o l i m o r f i s m o {

2 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 3 C a l c u l a d o r a c [ ] = new C a l c u l a d o r a [ 2 ] ; 4

5 c [ 0 ] = new C a l c u l a d o r a ( ) ;

6 c [ 1 ] = new C a l c u l a d o r a C i e n t i f i c a ( ) ; 7

8 c [ 0 ] . sumar ( ) ; 9 c [ 1 ] . sumar ( ) ; 10 }

(23)

Casting

: ¿Es correcto este c´

odigo?

1 c l a s s C a l c u l a d o r a { 2 p u b l i c v o i d suma ( ) { } 3 }

4

5 c l a s s C a l c u l a d o r a C i e n t i f i c a e x t e n d s C a l c u l a d o r a { 6 p u b l i c v o i d r a i z ( ) { }

7 } 8

9 p u b l i c c l a s s P o l i m o r f i s m o {

10 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 11 C a l c u l a d o r a c = new C a l c u l a d o r a ( ) ; 12 C a l c u l a d o r a C i e n t i f i c a c c = new

13 C a l c u l a d o r a C i e n t i f i c a ( ) ; 14 c = c c ;

15 c c = ( C a l c u l a d o r a C i e n t i f i c a ) c ; 16 }

(24)

¿Y que tal este otro?

1 c l a s s C a l c u l a d o r a { 2 p u b l i c v o i d suma ( ) { } 3 }

4

5 c l a s s C a l c u l a d o r a C i e n t i f i c a e x t e n d s C a l c u l a d o r a { 6 p u b l i c v o i d r a i z ( ) { }

7 } 8

9 p u b l i c c l a s s P o l i m o r f i s m o {

10 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 11 C a l c u l a d o r a c = new C a l c u l a d o r a ( ) ; 12 C a l c u l a d o r a C i e n t i f i c a c c = new

13 C a l c u l a d o r a C i e n t i f i c a ( ) ; 14 c c = ( C a l c u l a d o r a C i e n t i f i c a ) c ;

15 c c . r a i z ( ) ; 16 }

(25)

Generalizaci´

on vs. especializaci´

on

Generalizaci´

on

: Una

CalculadoraCientifica

puede ser

vista como una

Calculadora

, pero con p´

erdida de

funcionalidad

Especializaci´

on: Una

Calculadora

puede ser vista como una

CalculadoraCientifica

haciendo un

casting

obligatorio

(26)

Generalizaci´

on vs. especializaci´

on

Generalizaci´

on

: Una

CalculadoraCientifica

puede ser

vista como una

Calculadora

, pero con p´

erdida de

funcionalidad

Especializaci´

on

: Una

Calculadora

puede ser vista como una

CalculadoraCientifica

haciendo un

casting

obligatorio

(27)

Generalizaci´

on vs. especializaci´

on

Generalizaci´

on

: Una

CalculadoraCientifica

puede ser

vista como una

Calculadora

, pero con p´

erdida de

funcionalidad

Especializaci´

on

: Una

Calculadora

puede ser vista como una

CalculadoraCientifica

haciendo un

casting

obligatorio

(28)

¿Es correcto este c´

odigo?

1 c l a s s A { v o i d metodoA ( ) {} }

2 c l a s s B e x t e n d s A { v o i d metodoB ( ) {} } 3 c l a s s C e x t e n d s A { v o i d metodoC ( ) {} } 4

5 p u b l i c c l a s s P o l i m o r f i s m o {

6 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 7 A a = new A ( ) ;

8 C c = (C) a ; 9 c . metodoC ( ) ; 10 }

11 }

Si compila!, pero

(29)

¿Es correcto este c´

odigo?

1 c l a s s A { v o i d metodoA ( ) {} }

2 c l a s s B e x t e n d s A { v o i d metodoB ( ) {} } 3 c l a s s C e x t e n d s A { v o i d metodoC ( ) {} } 4

5 p u b l i c c l a s s P o l i m o r f i s m o {

6 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 7 A a = new A ( ) ;

8 C c = (C) a ; 9 c . metodoC ( ) ; 10 }

11 }

Si compila!

, pero

(30)

¿Y este otro?

1 c l a s s A { v o i d metodoA ( ) {} }

2 c l a s s B e x t e n d s A { v o i d metodoB ( ) {} } 3 c l a s s C e x t e n d s A { v o i d metodoC ( ) {} } 4

5 p u b l i c c l a s s P o l i m o r f i s m o {

6 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 7 A a = new C ( ) ;

8 C c = (C) a ; 9 c . metodoC ( ) ; 10 }

(31)

Ejemplo 1: Generalizaci´

on

1 i n t e r f a c e A n i m a l { 2 v o i d comer ( ) ; 3 }

4

5 c l a s s P e r r o i m p l e m e n t s A n i m a l { 6 f i n a l p u b l i c v o i d comer ( ) { } 7 }

8

9 p u b l i c c l a s s C a c h o r r o e x t e n d s P e r r o { 10 v o i d d o r m i r ( ) { }

11 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 12 C a c h o r r o s c r a p p y = new C a c h o r r o ( ) ; 13 P e r r o s c o o b y = s c r a p p y ;

(32)

Ejemplo 2: Especializaci´

on (enga˜

nando al compilador)

1 i n t e r f a c e A n i m a l { 2 v o i d comer ( ) ; 3 }

4

5 c l a s s P e r r o i m p l e m e n t s A n i m a l { 6 f i n a l p u b l i c v o i d comer ( ) { } 7 }

8

9 p u b l i c c l a s s C a c h o r r o e x t e n d s P e r r o { 10 v o i d d o r m i r ( ) { }

11 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 12 P e r r o s c o o b y = new P e r r o ( ) ;

13 C a c h o r r o s c r a p p y = ( C a c h o r r o ) s c o o b y ; 14 }

(33)

Ejemplo 3: Especializaci´

on

1 i n t e r f a c e A n i m a l { 2 v o i d comer ( ) ; 3 }

4

5 c l a s s P e r r o i m p l e m e n t s A n i m a l { 6 f i n a l p u b l i c v o i d comer ( ) { } 7 }

8

9 p u b l i c c l a s s C a c h o r r o e x t e n d s P e r r o { 10 v o i d d o r m i r ( ) { }

11 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 12 P e r r o s c o o b y = new C a c h o r r o ( ) ;

13 C a c h o r r o s c r a p p y = ( C a c h o r r o ) s c o o b y ; 14 }

(34)

Ejemplo 4: ¿Especializaci´

on?

1 i n t e r f a c e A n i m a l { 2 v o i d comer ( ) ; 3 }

4

5 c l a s s P e r r o i m p l e m e n t s A n i m a l { 6 f i n a l p u b l i c v o i d comer ( ) { } 7 }

8

9 p u b l i c c l a s s C a c h o r r o e x t e n d s P e r r o { 10 v o i d d o r m i r ( ) { }

11 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 12 P e r r o s c o o b y = new P e r r o ( ) ;

13 C a c h o r r o s c r a p p y = ( C a c h o r r o ) s c o o b y ; 14 s c r a p p y . d o r m i r ( ) ;

(35)

Ejemplo 5: ¿Generalizaci´

on?

1 i n t e r f a c e A n i m a l { 2 v o i d comer ( ) ; 3 }

4

5 c l a s s P e r r o i m p l e m e n t s A n i m a l { 6 f i n a l p u b l i c v o i d comer ( ) { } 7 }

8

9 p u b l i c c l a s s C a c h o r r o e x t e n d s P e r r o { 10 v o i d d o r m i r ( ) { }

11 p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) { 12 C a c h o r r o s c r a p p y = new C a c h o r r o ( ) ; 13 P e r r o s c o o b y = s c r a p p y ;

14 s c o o b y . d o r m i r ( ) ; 15 }

(36)

Sobrecarga vs. Polimorfismo

1 a b s t r a c t c l a s s A n i m a l { } 2 c l a s s P e r r o e x t e n d s A n i m a l { } 3 c l a s s Gato e x t e n d s A n i m a l { } 4

5 c l a s s V e t e r i n a r i o 1 {

6 v o i d v a c u n a r ( P e r r o p ) { } 7 v o i d v a c u n a r ( Gato g ) { } 8 }

9

10 c l a s s V e t e r i n a r i o 2 {

(37)

Composici´

on vs. agregaci´

on

Composici´

on

: Una clase

A

tiene una instancia de la clase

B

Agregaci´

on

: Una clase

A

tiene una declaraci´

on de clase

B

(o

viceversa). No es posible una agregaci´

on circular

(38)

Ejemplo

1 i m p o r t j a v a . awt . D i m e n s i o n ; 2 i m p o r t j a v a . awt . C o l o r ; 3

4 c l a s s C a l c u l a d o r a { 5 P a n t a l l a p ;

6 c l a s s C u b i e r t a { 7 C o l o r c o l o r ;

8 }

9 } 10

(39)

Composici´

on vs. agregaci´

on

Composici´

on

: ?

(40)

Referencias

Documento similar

La invalidez en el MMPI por no respuestas no se considera criterio positivo (sólo se puede considerar tal posibilidad en caso de daño neurológico que justifique tal estilo

De este modo se constituye un espacio ontológico y epistemológico a la vez, en el que cada elemento (cada principio) ocupa un lugar determinado en la totalidad, y desde ahí está

Pinchamos en el botón edit y  añadimos dos o tres columnas de  categorías en las que agrupar los 

Nuestro objetivo de partida es que se puede modelizar la representaci´on de las propiedades m´etricas de los objetos, informaci ´on que es necesaria para coger dicho objeto, mediante

En otra de las secciones se tratar´ a la adquisici´ on de los datos electromiogr´ aficos procedentes de los m´ usculos del antebrazo, as´ı como el dise˜ no del amplificador de se˜

20 revisaron la bibliografía sobre el tra- tamiento de espondilolistesis del axis y concluyen en que la osteosíntesis directa de C2 podría ser una opción de tratamiento

Ademais, a introduci´ on dunha funci´ on (de densidade) sobre a variedade permite modificar a medida e xorde as´ı o concepto de variedades con densidade. Para m´ ais informaci´ on

A pesar de que no sea viable especificar un conjunto de Borel gen´erico, ni proporcionar un m´etodo operativo para calcular la longitud de uno cualquiera de ellos, a efectos