• No se han encontrado resultados

U4 1a

N/A
N/A
Protected

Academic year: 2020

Share "U4 1a"

Copied!
42
0
0

Texto completo

(1)

L

ENGUAJE

J

AVA

Arreglos, paquetes, +clases…

(2)

A

RREGLOS

 Recordando: Un arreglo es una secuencia de datos

del mismo tipo. Los datos se almacenan en elementos del arreglo y se numeran

consecutivamente del 0,1,2,… n.

 El tipo de elementos almacenados puede ser

cualquier tipo simple de Java o un objeto.

 Al igual que con cualquier tipo de variable, un

arreglo se debe declarar antes de utilizarlo. Por ejemplo

int []v; float w[];

 En Java, los corchetes se pueden colocar de dos formas:

(3)

A

RREGLOS

 Ambas declaraciones son equivalentes si se

refieren solo a una variable, sin embargo tienen diferentes implicaciones, cuando hay mas

variables involucradas, por ejemplo:

 char cad[], p;

 Indica que cad en un arreglo de tipo char y que p es

solamente una variable de tipo char  Int [] v, w;

 Indica que tanto v como w son arreglos unidimensionales de

tipo int.

(4)

A

RREGLOS

 Java no permite en la declaración de un arreglo

especificar el número de elementos, ya que los arreglos en java, son considerados objetos.

 Para especificar el número de elementos se usa el

operador new.

float [] datos; //declaración

datos = new float[40]; //se crean 40 flotantes

 o bien, en una sola línea

float datos = new float[40];

 La sintaxis para declarar un arreglo es entonces:

(5)

A

TRIBUTO LENGTH

 Como comentábamos, Java considera cada

arreglo como un objeto, debido a esto se puede conocer su número de elementos accediendo a su atributo length.

5 import java.util.*;

class ej1 {

public static void main(String [] args) {

Scanner in = new Scanner (System.in);

int w[]= new int[10];

System.out.println(“Introduce “+w.length+“ datos: “); for(int = 0; i< w.length; i++)

w[i] = in.nextInt(); }

(6)

I

NICIALIZACIÓN DE ARREGLOS

 Muchas veces es útil tener un arreglo con valores

por default. Ejemplo

int numeros[] = { 10, 20, 30, 40, 50};

 Automáticamente pone el atributo length a 5

char c[] = {‘H’ , ‘o’, ‘l’, ‘a’};

 Define un arreglo de 4 caracteres

 Nota: en Java, un arreglo de caracteres NO ES lo

mismo que una cadena (String)

(7)

A

RREGLOS V

.

S

. S

TRING

 Una cadena de texto es un conjunto de

caracteres,tales como “ABCDEF”. Java soporta cadenas de texto utilizando la clase String.

 Los strings son objetos en los que se almacenan

las cadenas, tienen diversos constructores y métodos.

 Una vez que un objeto String es creado e

inicializado con una cadena, no puede modificase. Los métodos definidos en String para concatenar, cambiar caracteres, etc. NO modifican la

cadenas, sino que devuelven un objeto String.

(8)

C

LASE

S

TRING

 Constructores (algunos)

 String();

 String (String str);  String (char val[]);

 String (char val[], int offset, int count);

 Métodos (algunos)

 int length() //obtiene el numero de caracteres

 char charAt(int indice) (obtiene el carácter en la posición

indicada

 Boolean equals(Object obj) //compara 2 cadenas

 Boolean equalsIgnoreCase(Object obj) //ignora mayúsculas o

minúsculas

 Int compareTo(String str2);  String concat(String str);  String toLowerCase();  String toUpperCase();

(9)
(10)

P

AQUETES

E

IMPORT

 Los paquetes (package) en Java son una forma de

agrupar clases (e interfaces) relacionadas en una sola biblioteca o colección.

 El empaquetado es un mecanismo de modularización

que proporciona protección de acceso y administración de nombres en el espacio de trabajo.

 Los paquetes facilitan la localización y uso de las

clases

 Proveen flexibilidad en el control de acceso  Ayudan a evitar conflictos en los nombres

(11)

P

AQUETE

J

AVA

 Las bibliotecas de clases del JDK están

contenidas en un paquete llamado java.

 Las clases del paquete tienen garantía de

disponibilidad en cualquier implementación Java y son las únicas que también garantizan su disponibilidad para diferentes implementaciones.

 Los paquetes tienen nombres que indican

jerarquía.

 Para utilizar una clase en particular de algún

paquete, se tiene que referir a ella listando todos los paquetes donde está contenida esa clase, todo separado por puntos (.).

(12)

P

AQUETES PREDEFINIDOS

 Java proporciona paquetes predefinidos

 java.lang - clases básicas del lenguaje  java.util - clases para tipos de datos

 Java.awt - clases para gráficas, textos,

ventanas (GUI`s Graphical User Interface)

 Java.awt.images - procesamiento de imágenes  Java.io - clases para E/S

 Java.net - clases para redes

 Java.applets - clases para implementar applets  Javax.swing - clases gráficas swing

(13)

P

AQUETES Y ESPECIFICADORES DE ACCESO

 En Java un miembro se etiqueta como público

colocando el identificador public delante de su declaración

 Para los miembros privados utilizaremos el

identificador private

 Los miembros no etiquetados son accesibles por parte

de clases amigas.

 En C++ y otros lenguajes OO las clases amigas a una clase

dada pueden indicarse explícitamente

 En Java se consideran amigas todas aquellas que

forman parte del mismo paquete

 Un archivo fuente java forma en sí un paquete y por

(14)

P

AQUETES Y ESPECIFICADORES DE ACCESO

 Las clases incluidas en varios archivos fuente pueden

agruparse en un único paquete indicando el nombre de paquete al principio de cada archivo mediante el indicador package

(15)

P

AQUETES Y ESPECIFICADORES DE ACCESO

 Todas las clases que no se declaren como

pertenecientes a algún paquete de forma explícita, pertenecen a un “paquete default por defecto” y por tanto son amigas

 Un paquete crea un espacio de nombres propios.

Esto significa que la clase pasa a tener como

prefijo el propio nombre del paquete.

 El resultado es una forma muy cómoda de

restringir el ámbito a "la familia".

(16)

P

AQUETES Y CARPETAS

 Un paquete puede estar situado dentro de otro paquete

formando estructuras jerárquicas. Ejemplo: miapp.prueba.A

 Java obliga a que exista una correspondencia entre la

estructura de paquetes de una clase y la estructura de directorios donde está situada

 La raiz de la estructura de directorios debe estar

incluida en el classpath de Java (parámetro cp <dir>)

 Las clases miapp.prueba.A, miapp.prueba.B y miapp.C deben

estar en la siguiente estructura de directorios

(17)

A

CCEDIENDO A UN PAQUETE

 Para acceder a algún miembro de un paquete

(clase o interfase) se tienen las siguientes opciones:

 Usar el nombre completo del identificador

(incluyendo el nombre del paquete)

 Por ejemplo, si quisiéramos instaciar la clase Vector

incluida en el paquete java.util

 java.util.Vector v = new java.util.Vector();

 Importar una clase o interfase específica

 La preposición import permite importar un miembro

en particular del paquete, de la siguiente forma:

(18)

I

MPORTANDO UNA CLASE

 Por ejemplo, supongamos que queremos usar las

clases Vector y Hashtable del paquete java.util, entonces haríamos lo siguiente:

 import java.util.Vector;

 import java.util.Hashtable;  Vector v = new Vector();

 Hashtable h = new Hashtable();

 import le dice al compilador de java donde mirar

para “darse una idea” de lo que los nombres de las clases significan

 import NO es #include.

(19)

I

MPORTANDO COMPLETO

 Importar todo del paquete

 El import también nos permite importar todos los

miembros de un paquete. La forma de indicarlo es la siguiente:

 import NombrePaquete.*;

 Utilizándolo de esta forma, se puede acceder a

cualquier elemento del paquete sin necesidad de especificar su nombre

 Ejemplo:

 import java.util.*;

 Vector v = new Vector();

 Hashtable h = new Hashtable();

(20)

C

REANDO

P

AQUETES

 Para crear un paquete, solo se debe poner la

clase o la interfase dentro de este.

 Para hacer esto, se coloca la preposición

package en el tope (primer renglón) del

archivo en donde se esta definiendo la clase o interfase, de la siguiente forma:

Package Identificador[.Identificador...]

 El nombre del paquete es una lista de

identificadores separados por punto.

 Java reserva el nombre de paquete “java” para

sus clases de biblioteca.

(21)

PAQUETES

 Ejemplos:

 Package NombreDeMiPaquete;  package FCC;

 package FCC.ingenieria;

 Debe existir un subdirectorio con el nombre del

paquete que contenga las clases e interfaces.

 Toda clase o interfase que sea definida dentro de

un archivo con la preposición package está en el paquete.

 Las clases que no estén incluidas explícitamente

en algún paquete, automáticamente son puestas en el paquete default, el cual es un paquete único

(22)

I

MPORTS ESTÁNDARES

 Java importa automáticamente algunos

paquetes

 Un paquete default (las clases amigas)

 Cualquier clase que no esta incluida en algún paquete,

automáticamente es puesta en el paquete default. Esta es la forma en que las diferentes clases que no están en algún paquete conocen unas de las otras.

 El paquete java.lang (este paquete contiene

clases como String y System)

 El nombre de la clase String es realmente

java.lang.String, pero por default se importa automáticamente todo el paquete, esto es

 import java.lang.*;

(23)

TAREA

 Investigar los objetos (métodos de clase y de

instancia que manejan). Equipos de 2, enviar su presentación el viernes por la mañana con un ejemplo ilustrativo.

 Object  System  Class

 Integer  Character  Double

 Float  Vector

(24)
(25)

C

LASE

O

BJECT

 Todas las clases Java son derivadas o subclases

de la clase raiz Objet.

 Si la clausula extends es omitida en alguna

declaración entonces esa clase tiene como superclase inmediata a la clase Objet.

 boolean equals(Object obj) // compara dos

instancias para ver igualdad de sus componentes

 Class getClass() // regresa el objeto Class para el

objeto actual.

 String toString() // regresa una cadena que

representa los valores de las variables de

(26)

M

ÉTODOS DE LA CLASE

O

BJETC

 ToString: Devuelve un valor de tipo String listo

para imprimirse

 Este método debe ser redefinido en cada clase

Por ejemplo

// dar formato a la fecha public String ToString() {

return dia + “/” + mes + “/” + año; }

Si se tiene un objeto Fecha (fecha1) se invoca como: fecha1.toString();

o

System.out.println(fecha1); //invoca automáticamente

(27)

M

ÉTODOS DE LA CLASE

O

BJETC

 Equals: El método equals se usa para comparar si dos

referencias describen el mismo valor

 (ojo: es diferente que ==)

 Su definición es la siguiente:

public boolean equals (Objet lder)

Será true solo cuando lder sea una instancia de la Clase y todos sus atributos primitivos sean iguales (componente a componente)

Ejemplo:

public boolean equals(Objet lder) { if (!(lder instanceof Fecha)) return false;

Fecha lderFecha = (Fecha) lder;

return (ldeFecha.dia == dia && lderFecha.mes == mes && lderFecha.año == año);

}

(28)

C

LASE

S

YSTEM

 Métodos clase

 static void exit (int code)

 Ejemplo exit(0) //termina la ejecución de un programa

 static void arraycopy( Object fuente,

 int indiceFuente,Object destino, int indiceDestino, int

tamaño)

(29)

C

LASE

C

LASS

 Encapsula información de una clase o interface.  String getName() //regresa el nombre de la clase

 Class getSuperclass() //regresa el objeto Class para la

superclase

 static Class forName(String clsName) throws

ClassNotFoundException //regresa el objeto Class para la clase nombrada.

29

class ClaseEntero{

public static void main(String args[ ]) { Integer obj = new Integer(8);

Class cls = obj.getClass( );

System.out.println(cls); // Salida: class java.lang.Integer

(30)

C

LASE

C

HARACTER

 Constructor

 Character(char c)

 Métodos de clase

 boolean static isDigit(char c)  boolean static isLetter(char c)

 boolena static isLowerCase(char c)

 boolean static isSpaceChar(char c)  boolean static isUperCase(char c)  char static toLowerCase(char c)

 char static toUpperCase(char c)

 Método de instancia

 char charValue()

(31)

C

LASE

I

NTEGER

 Constructor

 Integer(int i)  Integer(String s)

 Métodos de clase

 Static String Integer.toString( int i,int base );  Static String Integer.toString( int i );

 Static int Integer.parseInt( String s,int base );  Static int Integer.parseInt( String s );

 Static Integer Integer.valueOf(String s,int base );  Static Integer Integer.valueOf( String s );

 Métodos de instancia

 int I.intValue();  float I.floatValue();

 double I.doubleValue();  String I.toString();

(32)

C

LASE

F

LOAT

 Constructor  Float(float f)  Float(double f)

 Float(String s) throws NumberFormatException  Métodos clase

 static boolean isNaN(float f)

 static Float valueOf(String s) throws

NumberFormatException

 Método instancia  byte byteValue( )

 double doubleValue( )  float floatValue( )

 int intValue( )  long longValue( )  short shortValue( )

(33)

C

LASE

D

OUBLE

 Constructor

 Double(double d)

 Double(String s) throws NumberFormatException  Métodos clase

 static boolean isNaN(double d)

 static Double valueOf(String s) throws

NumberFormatException

 Método instancia  byte byteValue( )

 double doubleValue( )  float floatValue( )

 int intValue( )  long longValue( )  short shortValue( )

(34)

C

LASE

V

ECTOR

Object elementAt(int index) para acceder elementos int capacity( ) regresa la capacidad

actual del vector

int size( ) regresa el número de

objetos en el vector boolean contains(Object obj) prueba si el vector

contiene un objeto boolean isEmpty() Prueba si el vector es

vacío Object firstElement( ) y

Object LastElement( )

Obtiene el primero y el

último respectivamente 34

 La clase Vector extiende la clase Object e implementa

las interfaces Cloneable y Serializable.

 Además define métodos para inserción, eliminación y

(35)

C

LASE

V

ECTOR

void addElement(Object obj) Añade un objeto al final del vector int indexOf(Object obj) Busca la primera ocurrencia de un

objeto

int indexOf(Object obj, int start) Busca la primera ocurrencia de un objeto dentro de un vector a partir de un índice

int lastIndexOf(object obj) Busca la última ocurrencia de un objeto dentro de un vector

void insertElementAt(Object obj, int

index) Inserta un objeto en un vector mediante un índice y se incrementa en uno el tamaño de dicho vector

void setElementAt(Object obj, int index) Coloca el elemento especificado del vector con un objeto

(36)

C

LASE

V

ECTOR

void removeAllElements( ) vacía el vector (limpia el vector)

boolean removeElement(Object obj) Borra la primera ocurrencia del objeto

void removeElementAt(int index) Borra el elemento del vector en la posición index

void setSize(int nuevoTamaño) Cambia el tamaño del vector, añadiendo referencias nulas

Enumeration elements( ) Regresa una enumeración de los objetos

(37)

E

JEMPLO

V

ECTOR

37

import java.util.Vector;

class Cliente { String nombre; String Direccion; String Telefono;

Cliente(String n, String d, String t) { //constructor nombre=n;

Direccion=d; Telefono=t; }

} //termina clase Cliente

class VectorClientes extends Vector {

public void AgregarCliente(Cliente c) { addElement(c); } public void InsertarClienteEn(Cliente c, int i) {

(38)

E

JEMPLO

V

ECTOR

...

38

public Cliente PrimerCliente( ) {

return (Cliente) firtElement( ); }

public Cliente UltimoCliente( ) {

return (Cliente) lastElement( ); }

} //termina clase VectorClientes

public static void main( String[ ] args) {

Cliente cliente1=new Cliente(“Elías”, “Cuernavaca”, “3183811”);

VectorClientes clientes = new VectorClientes( ); clientes.AgregarCliente(cliente1);

Cliente x = clientes.PrimerCliente( ); }

(39)

C

LASE

S

TRING

T

OKENIZER

 En algunos casos puede haber más de un

elemento (token) en la misma línea. Por ejemplo, una línea que contiene dos valores de tipo int.

 Esta clase permite separar en tokens (elementos)

una cadena

 Para usarlo debemos emplear

 Import java.util.*;

 Permite analizar una cadena.

(40)

C

LASE

S

TRING

T

OKENIZER

 Puede especificarse el carácter que actua como

separador entre elementos

 StringTokenizer(String str)

 StringTokenizer(String str, String del)

 Implementa la interface Enumeration

 Métodos

 int countTokens( ) // Devuelve el número de tokens

 boolean hasMoreTokens( )

 String nextToken( ) //Devuelve el siguiente token como

un string

 String nextToken(String delimiters)

(41)

E

JEMPLO

S

TRING

T

OKENIZER

import java.io.*; import java.util.*;

public class Maxtest {

public static void main(String [] args) { BufferedReader in =

newBufferedreader(new InputStreamReader (system.in ) );

String UnaLinea; String Tokenizer str; Int x;

Int y;

System.out.printl("Introduzca 2 enteros en una misma línea:

(42)

E

JEMPLO

S

TRING

T

OKENIZER

Try {

unaLinea = in.readLine ( );

str = new StringTokenizer ( unaLinea); if (str.countTokens ( ) != 2)

throw new NumberFormatException ( ); x = Integer.parseInt(str.nextToken( ) );

y = Integer.parseInt(str.nextToken( ) );

System.out.printl("Max: " + Math.max(x, y) )); }

Catch (Exception e)

{ System.err.printl(" Error: se necesita dos enteros" ); } }

}

Referencias

Documento similar

Aquí podemos incluir desde las re- formas que se mueven dentro de un sector supranacional que tien- de a homologar los sistemas educativos —por ejemplo, la Declara- ción de Bolonia

_Solo hay una manera de vencer a satanás no soltarse de mano de Jesús es la única manera de vencer a satanás. _Entonces el hombre espiritual su enemigo más peligroso es satanás

ofrece-esa necesidad.. Foto de Manuel.. Hay en ella muchas cosas que muestran cómo fue la vida de esas personas, todas ellas marcadas por la República, a la que primero

Veamos ahora la burocracia. A este respecto', uno de los principales cui- dados de la Revolución, ha sido impedir por todos los medios la burocratiza- ción del régimen. Ha

&#34;EL CONTRATISTA&#34; SE OBLIGA A PRESENTAR lA DOCUMENTACiÓN COMPLETA DE FINIQUITO DE lA OBRA A LA COORDINACiÓN GENERAL DE GESTiÓN INTEGRAL DE LA CIUDAD A MÁS TARDAR 15 (QUINCE)

Ahora Nahily mencionaba antes también un tema queMe imagino que lo pueden llevar también al CRM, pero ella mencionaba algo de las grabaciones e Nahily cuéntame las grabaciones que

PREGUNTAS BASICAS: (UNICAMENTE PARA MUJERES) Para ayudarte a crecer y conocer a Dios mediante la verdad revelada en tu tiempo de meditación.. ¿Le has entregado tu corazón

Al igual que los adultos, es posible que los niños necesiten ayuda para comprender y adaptarse a la vida después de la pérdida.. Recuerde que el modo en que su niño manifieste su