novena clase de algoritmica ii

Post on 19-Feb-2016

243 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Clase de Java

TRANSCRIPT

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOSINGENIERIA DE SISTEMAS

ALGORITMICA II

9. Clases Genéricas

Temas DEFINICION DE CLASES GENERICAS RELACION ENTRE CLASES GENERICAS METODOS GENERICOS EJERCICIO

DEFINICION DE CLASES GENERICAS

Los tipos genéricos o tipos parametrizados permiten definir una clase o una interfaz una sola vez y después crear objetos de ella de diferentes tipos.

DEFINICION DE CLASES GENERICAS

Es un mecanismo que permite que un tipo pueda ser utilizado como parámetro en la definición de un método o una clase.

CLASES GENERICAS EN JAVA

Las clases genéricas simplifican la implementación de clases que definen contenedores.

Listas Dinámicas Matrices (vectores).

CLASES GENERICAS EN JAVA

Utilizando la clase genérica ArrayList:

ArrayList<Integer> ai = new ArrayLista<Integer>( );

ArrayList<String> as = new ArrayLista<String>( );

ArrayList<CuentaAhorro> ai = new ArrayLista<CuentaAhorro >( );

Programación Genérica

Una programación que utiliza tipos como parámetros recibe el nombre de programación genérica.

Clases Genericas en Java

La biblioteca estándar de Java, presenta muchas de sus abstracciones como clases genéricas; por ejemplo:

ArrayList, HashMap y TreeMap

DEFINICION DE CLASES GENERICAS

Class nombre_clase <lista de parametros> { … }

Ejemplo:

public class miClase < T1, T2 > { … }

La definición de una clase genérica se hace según la sintaxis siguiente:

CLASES GENERICAS

Los parámetros de la lista serán utilizados para implementar los métodos de la clase, bien como parámetros del método o como tipo del valor retornado.

CLASES GENERICASDiremos que:Se puede utilizar donde utilizamos cualquier otro tipo, aunque con bastantes restricciones.Ejemplo: No se permite crear matrices (vectores) de un tipo parametrizado privarte T[] a = new T[10]

EJEMPLO: DEFINICION DE LA CLASE GENERICA CVECTOR

public class Cvector < T > {//vector private ArrayList < T > vector; // crear un vector con un espacio para n elementos.

public Cvector(int ne) // ne elementos

int nElementos; if (ne.length < 1) nElementos = 10; else nElementos = ne; vector = new ArrayList<T>(nElementos); }

EJEMPLO: DEFINICION DE LA CLASE GENERICA CVECTOR crear un vector a partir de otro vector primitivo

Public CVector(T[ ] m){ int nElementos = m.length; vector = new ArrayList<T>(nElementos); //Copiar los elementos de la matriz m for ( int i = 0; i < nElementos; i++) vector.add( m[i]); }

EJEMPLO: DEFINICION DE LA CLASE GENERICA CVECTOR Constructor Copia

Public CVector (final Cvector v){ copiar(v);}

EJEMPLO: DEFINICION DE LA CLASE GENERICA CVECTOR Constructor Copia

Public CVector copiar (final Cvector v){ int nElementos = v.longitud(); vector = new ArrayList<T>(nElementos); //copia el objeto v for( int i = 0; i < nElementos; i++) vector.add( ( T)v.vector.get(i) ); return this;}

EJEMPLO: DEFINICION DE LA CLASE GENERICA CVECTOR

Public void ponerValorEn (int i, T valor){int nElementos = this.longitud(); if ( i >= 0 && i < nElementos) vector.set(i, valor); else System.out.println(“Indice fuera de limites”);}

EJEMPLO: DEFINICION DE LA CLASE GENERICA CVECTOR

Public T valorEn (int i ){ if ( i >= 0 && i<this.longitud()) return vector.get(i); else {System.out.println(“Indice fuera de limites”); return null; }}

EJEMPLO: DEFINICION DE LA CLASE GENERICA CVECTOR

Public int longitud() { return vector.size(); }}

EJEMPLO: Definición de la clase genérica vector

OBSERVACION:Se observa que los métodos trabajan con objetos de tipo T. Ejemplo , el método ponerValorEn asigna un valor de tipo T y valorEn devuelve un valor

de T.

EJEMPLO: Aplicación que utiliza CVector

Public class Test{ //visualizar un vectorPublic static void visualizarVector (Cvector <Double> v)

{ int ne = v.longitud(); for ( int i =0 ; i < ne; i++) System.out.print(v.valorEn(i) + “ “); System.out.println(); }

EJEMPLO: Aplicación que utiliza CVector

Public static void main(String[] args){ double x[]={1.0,2.0,3.0,4.0,5.0,6.0,7.0}; CVector<Double> vector2 = new CVector<Double>(vector1); for ( int i = 0; i < vector2.longitud() ; i++) { vector2.ponerValorEn(i,(Double) vector2.valorEn(i)*10.0); } visualizarVector(vecor1); //escribe 1.0,2.0,3.0….7.0}

}

EJEMPLO: Aplicación que utiliza CVector

El esquema que construye el compilador Java para la clase CVector es el siguiente:Public class CVector extends java.lang.Object{public CVector ( int[]); public CVector (java.lang.Object[]); public CVector (CVector); public CVector copiar (CVector); public void ponerValorEn(int, java.lang.Object); public java.lang.Object valorEn(int); public int longitud();}

EJEMPLO: Aplicación que utiliza CVector

Esto permitirá declarar el parámetro v del método visualizar Vector de Test de tipo CVector.Public static void visualizarVector (CVector v)

{ //………}

top related