PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA OBJETOS ...

January 6, 2018 | Author: Anonymous | Category: Java
Share Embed


Short Description

Programación II (Java) 30 Declaración de variables miembro Programación II (Java) 31 Declaración de métodos Program...

Description

PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

¿ Orientación a Objetos? 

Paradigma de programación donde los problemas se resuelven identificando un objeto principal del cual se define una clase que ofrezca ese comportamiento, regularmente se trabajan clases secundarias logrando un trabajo cooperativo en la solución de la problemática. Programación II (Java)

2

Objeto 

Entidad con propiedades delimitadas y particulares, es la encapsulación de datos y métodos (funciones).



Los datos indican el estado y los métodos el comportamiento del objeto.

Programación II (Java)

3

Ejemplos: Objeto

Juanita

Pedro

Estado:

nss 25987

nss 45692

puesto secretaria

puesto chofer

sueldo 4500

sueldo 3800

Comportamiento: trabajar cobrar

Programación II (Java)

trabajar cobrar

4

Comunicación entre objetos 

Los objetos se comunican entre si por medio de mensajes, un mensaje esta asociado a un método, esto es cuando un objeto recibe un mensaje en respuesta se ejecuta uno de sus métodos.

Programación II (Java)

5

Clase Es la clasificación de un tipo de objetos, es el molde o tipo de dato con el que se crean los objetos.  Por ejemplo: La clase que generaliza el tipo de objeto al que pertenecen Juanita y Pedro es Empleado. 

Programación II (Java)

6

Clase: Empleado puesto sueldo trabajar( ) cobrar( )

Programación II (Java)

7

JAVA Lenguaje creado por Sun Microsystem, de propósito general Características del lenguaje  Orientado a Objetos,  Interpretado,  Robusto  Seguro,  Arquitectura neutra,  Portátil,  Multihilo,  Dinámico  Distribuido,

Programación II (Java)

8

Instalación de JAVA 

 

El software se encuentra disponible en la página www.java.sun.com , en sus versiones para las plataformas Solaris, Linux, Windows, el kit de instalación a utilizar en este curso es Java 2 Platform, Standard Edition (J2SE) . El directorio de trabajo una vez instalado Java es c:\VersiónJava\bin Después de la instalación es necesario añadir c:\VersiónJava\bin a la variable de entorno PATH., esto permitirá la compilación de archivos no situados en el directorio de trabajo.

Programación II (Java)

9

COMPONENTES DEL LENGUAJE Compilador, produce un código de bytes que será interpretado.  Maquina Virtual, interpreta el código generado por el compilador.  Recolector de basura, libera la memoria que ya no esta en uso. 

Programación II (Java)

10

Tipos de Aplicaciones Stand-alone, aplicaciones estándar, corren en la consola del sistema operativo.  Applet, aplicación para internet , corre incrustada en un navegador, también puede ser visualizado por el appletviewer de Java. 

Programación II (Java)

11

Convenciones o acuerdos Los identificadores :  Pueden comenzar con los caracteres validos: a..z, A..Z , $, _ , pueden estar seguidos de otro carácter de inicio valido o un digito, no pueden estar seguidos de un espacio en blanco.

Programación II (Java)

12

Convenciones o acuerdos Los identificadores de :  Clase e Interfaces siempre deben comenzar con mayúscula  Variables y métodos deben comenzar con minúscula  El nombre de archivo debe ser el mismo que el de la clase contenida con extensión .java

Programación II (Java)

13

Convenciones o acuerdos Si se trata de un nombre compuesto la siguiente palabra debe comenzar con mayúscula.  Por cada archivo solo debe existir una clase, en caso de haber más solo una podrá ser pública (la que contiene al main). 

Programación II (Java)

14

Identificadores Los identificadores nombran variables, funciones, clases , objetos; cualquier cosa que el programador necesite identificar o usar.  Java es u lenguaje sensible al caso (se distinguen las mayúsculas de las minúsculas) y no hay longitud máxima. 

Programación II (Java)

15

COMPILACIÓN E INTERPRETACIÓN 

Los archivos que serán compilados deberán tener la extensión java, una vez que no tengan erres se generará un archivo con extensión class, este es un archivo de byte-code que podrá ser interpretado por cualquier máquina virtual de Java.

Programación II (Java)

16

Separadores Los separadores admitidos en Java son:  () - paréntesis. Para contener listas de parámetros en la definición y llamada a métodos. También se utiliza para definir precedencia en expresiones, contener expresiones para control de flujo y rodear las conversiones de tipo.  {} - llaves. Para contener los valores de arreglos inicializadas automáticamente. También se utiliza para definir un bloque de código, para clases, métodos y ámbitos locales.  [] - corchetes. Para declarar tipos arreglos. También se utiliza cuando se hace referencia a valores de arreglos.  ; - punto y coma. Separa sentencias.  , - coma. Separa identificadores consecutivos en una declaración de variables.  . - punto. Para separar nombres de paquete de subpaquetes y clases. También se utiliza para separar una variable o método de una variable de referencia.

Programación II (Java)

17

COMENTARIOS Java soporta 3 tipos de comentarios:  // comentario de línea  /* comentario de párrafo */  /** comentario especial para generar documentación automática (javaDoc) */

Programación II (Java)

18

TIPOS DE DATO PRIMITIVO Java provee de 8 tipos primitivos:    

Carácter: char Enteros: byte, short, int, long Punto flotante: float y double Logicos: boolean

Programación II (Java)

19

Números enteros Representación del entero en 3 distintas bases:  2 dos en base 10 o decimal  077 El cero indica la base octal  0xBAAC El 0x indica la base hexadecimal.

Programación II (Java)

20

Números enteros Nombre

Longitud

byte

8 bits

short

16 bits

int

32 bits

long

64 bits

Programación II (Java)

21



Para definir un entero Largo se utiliza la letra L o l, ejemplo: 45L



Para definir un double se utiliza la letra D, ejemplo: 5.2D

Programación II (Java)

22

Palabras reservadas abstract

do

implements

private

this

boolean

double

import

protected

thow

break

else

instanceof

public

throws

byte

extends

int

return

transient

case

false

interface

short

true

catch

final

long

static

try

char

finally

native

strictfp

void

class

float

new

super

volatile

continue

for

null

switch

while

default

if

package

synchronize

Programación II (Java)

23

MODIFICADORES DE ACCESO Nombre

clase

subclase paquete

private

X

protected

X

X

X

public

X

X

X

package

X

mundo

X

X

Programación II (Java)

24

Modificadores de acceso  





public -Cualquier clase desde cualquier lugar puede acceder a las variables y métodos de instacia públicos. protected -Sólo las subclases de la clase y nadie más puede acceder a las variables y métodos de instancia protegidos. private-Las variables y métodos de instancia privados sólo pueden ser accedidos desde dentro de la clase. No son accesibles desde las subclases. friendly (sin declaración específica)

Programación II (Java)

25

OPERADORES Java realiza las expresiones en corto circuito, esto es no se evalúa la segunda expresión a menos que el resultado de la primera sea satisfactorio, aplica a los operadores AND (&&), OR (| | ) y NOT ( ! )

Programación II (Java)

26

Operadores de desplazamiento de bits operador uso op1 >> op2 >> op1 >op2 >>> Op1 & op2 & op1 | op2 | op1 ^ op2 ^ ~ op ~

descripción Desp derecha op2 bits de op1 Desp izq op2 bits de op1 desplaza a la derecha op2 bits de op1(sin signo) and or xor Complemento

Programación II (Java)

27

Precedencia de operadores Precedencia

Operador(es)

separadores

. [] () ; ,

DaI

++ -- + - ~ ! (cast)

IaD

*/%

IaD

+-

IaD

+ -> >>>

IaD

< > = instanceof

IaD

== !=

IaD

&

IaD

^

IaD

|

IaD

&&

IaD

||

IaD

?:

DaI

= *= /= %= += -= =

DaI

D a I>>>= &= ^= |= Programación II (Java)

28

Ejemplo: 13 >> 1; 

desplaza los bits del entero 13 una posición a la derecha. La representación binaria del número 13 es 1101. El resultado de la operación de desplazamiento es 110 o el 6 decimal. Programación II (Java)

29

Caracteres de escape Secuencia de escape \b

Valor del caracter retroceso

\t

Tabulador horizontal

\n

Nueva línea

\f

Alimentación continua

\r

Retorno de carro

\”

Comillas dobles

\’

Comilla sencilla

\\

Diagonal invertida

\xxx

Carácter correspondiente al valor octal xxx, donde xxx esta entre 000 y 377.

\uxxx

El carácter Unicote con codificación xxxx, donde xxxx es uno de cuatro dígitos hexadecimales. Programación II (Java)

30

Declaración de variables miembro

Programación II (Java)

31

Declaración de métodos

Programación II (Java)

32

significado de algunos de los modificadores mencionados modificador

Usado en significado

native

método

Método se implementa en C, no se proporciona un cuerpo.

synchronized método

Los hilos no pueden modificar la instancia al mismo tiempo.

transient

campo

El campo no es parte del estado persistente del objeto, y no se debe serializar con el objeto.

volatile

campo

Se puede acceder al campo mediante hilos no sincrónicos.

Programación II (Java)

33

Clase Empleado public class Empleado { int nss; String puesto; double sueldo; public void trabajar ( ) { // trabaja de alguna manera } public void cobrar ( ) { // se le deposita quincenalmente su sueldo } }

Programación II (Java)

34

CREACIÓN DE UN OBJETO 



El operador new crea variables (asigna memoria) del tipo de clase que se le especifique, por ejemplo si creamos objetos de la clase Empleado: Empleado Juanita; Juanita = new Empleado(); Empleado Pedro = new Empleado(); Una vez creado el objeto se le pueden asignar valores o llamar sus métodos.

Programación II (Java)

35

MÉTODO CONSTRUCTOR Método especial que se invoca siempre que es creado un objeto, su tarea es inicializar el objeto (actualiza la tabla virtual de métodos), no especifica tipo de dato a retornar y su identificador es el mismo que la clase.  Si el constructor no es definido por el programador Java provee uno por default. 

Programación II (Java)

36

Ejemplo de un constructor para la clase Empleado: Empleado (int n, String p, double s ) { nss =n; puesto =p; sueldo = s; }

Programación II (Java)

37

ESTRUCTURAS DE CONTROL DEL FLUJO Tipo de estructura

Palabra reservada

Selecciones

if-else, switch-case

Ciclos

while, do-while , for

Manejo de excepciones

try-catch-finally, throw

branching

break, continue, label:, return Programación II (Java)

38

MODIFICADOR static 

Reserva memoria, si es aplicado a un dato de la clase al crear los objetos estos comparten la misma variable.



Si un método es declarado static puede ser utilizado sin necesidad de crear una instancia de la clase (objeto). Programación II (Java)

39

PAQUETES La palabra clave package permite agrupar clases e interfaces. Los nombres de los paquetes son palabras separadas por puntos y se almacenan en directorios que coinciden con esos nombres. Por ejemplo, los ficheros siguientes, que contienen código fuente Java: Applet.java, AudioClip.java contienen en su código la línea: package java.applet; Y las clases que se obtienen de la compilación de los ficheros anteriores, se encuentran con el nombre nombre_de_clase.class, en el directorio: java/applet

Programación II (Java)

40

Import 



Los paquetes de clases se cargan con la palabra clave import, especificando el nombre del paquete como ruta y nombre de clase. Se pueden utilizar el comodín asterisco para clases .Ejemplo: import java.applet.Applet; import java.awt.*; Si un fichero fuente Java no contiene ningún package, se coloca en el paquete por defecto sin nombre. Es decir, en el mismo directorio que el fichero fuente.

Programación II (Java)

41

Algunos paquetes de Java 

   

java.applet, este paquete contiene clases diseñadas para usar con applets. java.awt, el paquete Abstract Windowing Toolkit (awt) contiene clases para generar widgets y componentes GUI (Interfaz Gráfico de Usuario). java.io, el paquete de entrada/salida contiene las clases de acceso a ficheros. java.lang, este paquete incluye las clases del lenguaje Java propiamente dicho: Object, Thread, Exception, System, Integer, Float, Math, String, etc. java.net, este paquete da soporte a las conexiones del protocolo TCP/IP y, además, incluye las clases Socket, URL y URLConnection. java.util, paquete que contiene una miscelánea de clases útiles para muchas cosas en programación. Se incluyen, entre otras, Date (fecha), Dictionary (diccionario), Random (números aleatorios) y Stack (pila FIFO).

Programación II (Java)

42

CLASES ENVOLVENTES Clases que contienen el tipo de dato básico o primitivo y los métodos para trabajarlo.  CLASE String Java posee gran capacidad para el manejo de cadenas dentro de sus clases String y StringBuffer.  String representa una cadena alfanumérica de un valor constante que no puede ser cambiada después de haber sido creada.  StringBuffer representa una cadena cuyo tamaño puede variar.

Programación II (Java)

43

Clase envolvente String Los Strings son objetos constantes y por lo tanto muy baratos para el sistema. La mayoría de las funciones relacionadas con cadenas esperan valores String como argumentos y devuelven valores String. Algunos métodos de la clase La primera devuelve la longitud de la cadena y la segunda devuelve el carácter que se encuentra en la posición que se indica en indice:  int length(); char charAt( int indice );  boolean equals( Object obj ); boolean equalsIgnoreCase( Object obj ); Comparan dos cadenasla segunda no tiene en cuenta mayúsculas o minúsculas.  int compareTo( String str2 ); Devuelve un entero menor que cero si la cadena es léxicamente menor que str2. Devuelve cero si las dos cadenas son léxicamente iguales y un entero mayor que cero si la cadena es léxicamente mayor que str2. 

Programación II (Java)

44

Clase envolvente String           

String substring( int beginindex ); String substring( int beginindex,int endindex ); String concat( String str ); String replace( char oldchar,char newchar ); String toLowerCase(); String toUpperCase(); String trim(); void getChars( int srcBegin,int srcEnd,char dst[],int dstBegin ); void getBytes( int srcBegin,int srcEnd,byte dst[],int dstBegin ); String toString(); char toCharArray();

Programación II (Java)

45

Clase envolvente String 

La clase String posee numerosas funciones para transformar valores de otros tipos de datos a su representación como cadena. Todas estas funciones tienen el nombre de valueOf, estando el método sobrecargado para todos los tipos de datos básicos.

Funciones ValueOf: String valueOf( boolean b ); String valueOf( int i ); String valueOf( long l ); String valueOf( float f ); String valueOf( double d ); String valueOf( Object obj ); String valueOf( char data[] ); String valueOf( char data[],int offset,int count );

Programación II (Java)

46

Clase envolvente String Ejemplo de su utilización: String Uno = new String( "Hola Mundo" ); float f = 3.141592; String PI = Uno.valueOf( f ); String PI = String.valueOf( f ); Programación II (Java)

47

Clase envolvente Integer String toString( int i,int base ); String toString( int i ); int parseInt( String s,int base ); int parseInt( String s ); Integer valueOf( String s,int base ); Integer valueOf( String s ); int intValue(); long longValue(); float floatValue(); double doubleValue(); String toString(); int hashCode(); boolean equals( Object obj );

Programación II (Java)

48

Clases envolventes 

En los métodos toString(), parseInt() y valueOf() que no se especifica la base sobre la que se trabaja, se asume que es base 10.

Igual existen las clases: Double,Float, Character, Long, Boolean.



Programación II (Java)

49

LA CLASE Math 

La clase Math representa la librería matemática de Java. Las funciones que contiene son las de todos los lenguajes, parece que se han metido en una clase solamente a propósito de agrupación, por eso se encapsulan en Math. El constructor de la clase es privado, por los que no se pueden crear instancias de la clase. Sin embargo, Math es public para que se pueda llamar desde cualquier sitio y static para que no haya que inicializarla.

Programación II (Java)

50

Funciones matemáticas Math.abs( x ) // para int, long, float y double Math.sin( double ) Math.cos( double ) Math.tan( double ) Math.asin( double ) Math.acos( double ) Math.atan( double ) Math.atan2( double,double ) Math.exp( double ) Math.log( double ) Math.sqrt( double ) Math.ceil( double ) Math.floor( double ) Math.rint( double ) Math.pow( a,b ) Math.round( x ) // para double y float Math.random() // devuelve un double Math.max( a,b ) // para int, long, float y double Math.min( a,b ) // para int, long, float y double Math.E // para la base exponencial Math.PI // para PI

Programación II (Java)

51

Ejemplo de uso de las funciones class Mates { public static void main( String args[] ) { int x; double rand,y,z; rand = Math.random(); x = Math.abs( -123 ); y = Math.round( 123.567 ); z = Math.pow( 2,4 ); System.out.println( rand ); System.out.println( x ); System.out.println( y ); System.out.println( z ); System.out.println( max ); } }

Programación II (Java)

52

Arreglos Un arreglo es una colección de datos del mismo tipo, almacenados en celdas numeradas a partir de la cero.  Se pueden declarar en Java arreglos de cualquier tipo, para trabajarlo necesitamos: 1) Declararlo, establece el tipo de dato de las celdas y el nombre de la variable. 2) Crearlo, reserva de memoria para el número de celdas que se especifiquen. 

Programación II (Java)

53

Ejemplos de Arreglos

 



char s[]; s=new char[25]; ó char s=new char[25]; int iArray[]; iArray=new int[10]; Se puede crear el arreglo con sus valores iniciales: int cal[] = {100,95,98,87}; Para acceder a una de las celdas del arreglo es nombreArreglo [numCelda], por ejemplo: cal[2]=85; Incluso se pueden construir arreglo de arreglos: int tabla[][] = new int[4][5];

Programación II (Java)

54

Arreglos 





En Java un array es realmente un objeto, porque tiene redefinido el operador []. Tiene una función miembro: length. Se puede utilizar este método para conocer la longitud de cualquier arreglo Una vez establecido la longitud de un arreglo esta no podrá cambiar, es decir, todos los arreglos en Java son estáticos. Si queremos un arreglo en el equivalente a un array dinámico, se usa la clase vector, que permite operaciones de inserción, borrado, etc. en el arreglo.

Programación II (Java)

55

EXCEPCIONES 

Facilitan la construcción de código robusto. Cuando ocurre un error en un programa, el código que encuentra el error lanza una excepción, que se puede capturar y recuperarse de ella. Java provee excepciones predefinidas.

Programación II (Java)

56

Jerarquía de Excepciones

Programación II (Java)

57

CAPTURAR EXCEPCIONES 

  

Las excepciones lanzadas por un método que pueda hacerlo, deben recogerse en bloque try/catch o try/finally. try - Es el bloque de código donde se prevé que se genere una excepción. catch - Es el código que se ejecuta cuando se produce la excepción. Se pueden colocar sentencias catch sucesivas, cada una controlando una excepción diferente. No debería intentarse capturar todas las excepciones con una sola cláusula.

Programación II (Java)

58

Excepciones finally - Es el bloque de código que se ejecuta siempre, haya o no excepción  Este bloque finally puede ser útil cuando no hay ninguna excepción. Es un trozo de código que se ejecuta independiente de lo que se haga en el bloque try. 

Programación II (Java)

59

Ejemplo captura de excepciones public class UsoExcepciones{ public static void main(String arg[]){ int a=0,b=0; try { a=Integer.parseInt(arg[0]); b=Integer.parseInt(arg[0]); } catch(NumberFormatException e){ System.out.println("Solo numeros!"); } catch(ArrayIndexOutOfBoundsException e){ System.out.println("Teclea por lo menos un numero.."); } } }

Programación II (Java)

60

Clase Lectora 

El siguiente código define La clase Lector con los métodos de utilería leeCadena() , leeInt(), y leeDouble() para leer de teclado en aplicaciones de consola. import java.io.*; public class Lector{ static String cad; public static String leeCadena(){ InputStreamReader tec=new InputStreamReader(System.in); BufferedReader ent=new BufferedReader(tec); try{ cad=ent.readLine(); }catch(IOException e){ System.out.println("Errores en la entrada..."); } return cad; }

Programación II (Java)

61

Clase Lectora public static int leeInt(){ int i=0; leeCadena(); try{ i=Integer.parseInt(cad); }catch(NumberFormatException e){ System.out.println("Debe insertarse un Entero..."); } return i; } Programación II (Java)

62

Clase Lectora public static double leeDoble(){ double d=0; leeCadena(); try{ d=Double.parseDouble(cad); }catch(NumberFormatException e){ System.out.println("insertar un real..."); } return d; }

Programación II (Java)

63

Clase Lectora public static void main(String arg[]) { int num=0; double ndoble=0; String cad=null; System.out.println("Teclea un numero entero"); num=Lector.leeInt(); System.out.println("Teclea un numero Doble"); ndoble=Lector.leeDoble(); System.out.println("Teclea una cadena"); cad=Lector.leeCadena(); System.out.println("num="+num*5+"doble="+ndoble*5+"Cadena=“ +cad); } // fin main } // fin clase

Programación II (Java)

64

SOBRECARGA DE MÉTODOS 

Se dice que hay sobrecarga cuando existe más de un método con el mismo identificador o nombre, solo se requiere exista diferencia en el tipo, orden o cantidad de parámetros para resolver la invocación al método adecuado.

Programación II (Java)

65

Ejemplo Sobrecarga void incremento( int num){ num+=10; } void incremento( int num, int inc){ num+=inc; } Programación II (Java)

66

HERENCIA 

Mecanismo mediante el cual una clase llamada superclase o clase-padre puede transmitir a otras denominadas sub-clases clases-hijas sus atributos, esto permite extender de una clase general o crear una clase especializada. Por ejemplo de la clase Empleado podemos especializar a la clase EmpleadoAdministrativo y EmpleadoObrero.



La declaración en código para la herencia es con la palabra extends.

Programación II (Java)

67

Ejemplo Herencia class EmpleadoAdministrativo extends Empleado { /* datos y métodos especiales para un administrativo */

}

Programación II (Java)

68

Sobreescritura 

 

Solo se da cuando existe herencia, al heredar una clase de otra puede disponer de las definiciones hechas en la superclase, pero en algunos casos las subclases requieren un cambio en el comportamiento de algún método heredado, puede ser rechazo por completo o adicionar sentencias. Rechazo: el método vuelve a definirse por completo (exactamente con la misma cabecera) Adición: a la nueva definición de método se agrega la invocación al método de la clase padre, esto se logra con la referencia super. Programación II (Java)

69

Referencias this 

Al acceder a variables de instancia de una clase, la palabra clave this hace referencia a los miembros de la propia clase. Por Ejemplo:

public class MiClase { int i; public MiClase() { i = 10; } // Este constructor establece el valor de i MiClase( int i ) { this.i = i; } public void Suma_a_i( int k ) { i = i +k; } }

Programación II (Java)

public

70

Referencia super public class MiNuevaClase extends MiClase { public void Suma_a_i( int j ) { i = i + ( j/2 ); super.Suma_a_i( j ); } } Programación II (Java)

71

Ejemplo uso de la clase MiNuevaClase 

En el siguiente código, el constructor establecerá el valor de i a 10, después lo cambiará a 15 y finalmente el método Suma_a_i() de la clase padre (MiClase) lo dejará en 25: MiNuevaClase mnc; mnc = new MiNuevaClase(); mnc.Suma_a_i( 10 );

Programación II (Java)

72

CLASE ABSTRACTA 

Permiten una implementación específica para cada usuario. Cuando una clase contiene un método abstracto tiene que declararse abstracta. No obstante, no todos los métodos de una clase abstracta tienen que ser abstractos. Las clases abstractas no pueden tener métodos privados (no se podrían implementar) ni tampoco estáticos. Una clase abstracta tiene que derivarse obligatoriamente, no se puede hacer un new de una clase abstracta, y se obliga a que al derivar de la clase haya que implementar forzosamente los métodos abstractos de ésta.

Programación II (Java)

73

Ejemplo Clase Abstraca 

Si se definiera la clase SerVivo sabemos que todo ser vivo se alimenta, pero al no saber exactamente que tipo de ser vivo es, la tarea no puede ser implementada.

Programación II (Java)

74

Implementación Clase SerVivo public abstract class SerVivo{ String raza; int edad; public void morir( ){ System.out.println(“Todo ser vivo muere”); } public abstract void alimentar(); } Programación II (Java)

75

MÉTODO ABSTRACTO 

Método que no tiene cuerpo, su implementación esta pendiente y obligada en las subclases de la clase abstracta, permitiendo que cada una de ellas tenga un diferente comportamiento.



Si de la clase SerVivo extendemos la clase Pollo, esta declara como es que se alimentara .

Programación II (Java)

76

Implementación de una subclase de SerVivo public class Pollo extends SerVivo{ public void alimentar( ){ System.out.println(“Se alimenta de gusanos, insectos y piedritas”); } } // Así nuestro Pollo tiene una raza, edad, sabe morir y alimentarse.

Programación II (Java)

77

POLIMORFISMO 

Capacidad que tienen objetos distintos de responder de manera congruente a su naturaleza a un mismo llamado.



Si crearamos una subclase más de SerVivo como un Gato, este se alimentara de distinta manera, al invocar el método alimentar de objetos de ambas clases cada uno lo hará de distinta forma. Programación II (Java)

78

MODIFICADOR FINAL 

En una clase, indica que esta ya no podrá ser extendida.



En un dato, una vez asignado el primer valor no podrá ser cambiado.



En un método, ya no podrá ser sobrescrito.

Programación II (Java)

79

PAQUETE awt 

AWT es el acrónimo del Abstract Window Toolkit, para Java es una biblioteca de clases para el desarrollo de Interfaces de Usuario Gráficas.

Programación II (Java)

80

Jerarquía de las clases gráficas

Programación II (Java)

81

Ejemplo: import java.awt.*; public class FrameExample { private Frame f; public FrameExample() { f = new Frame("Hello Out There!"); f.setSize(170,170); f.setBackground(Color.blue); f.setVisible(true);} public static void main(String args[]) { FrameExample guiWindow = new FrameExample(); } }

Programación II (Java)

82

Layout Managers FlowLayout  BorderLayout  GridLayout  CardLayout  GridBagLayout 

Programación II (Java)

83

Jerarquía de las clases contenedoras

Programación II (Java)

84

Ejemplo FlowLayout: import java.awt.*; public class FlowExample { Frame f; Button button1, button2, button3; public FlowExample() { f = new Frame("Flow Layout"); button1 = new Button("Ok"); button2 = new Button("Open"); button3 = new Button("Close"); f.setLayout(new FlowLayout()); f.add(button1); f.add(button2); f.add(button3); f.setSize(100,100); f.setVisible(true); } public static void main(String args[]) { FlowExample guiWindow = new FlowExample(); } }

Programación II (Java)

85

Ejemplo BorderLayout: import java.awt.*; public class BorderExample { Frame f; Button bn, bs, bw, be, bc; public BorderExample() { f = new Frame("Border Layout"); bn = new Button("B1"); bs = new Button("B2"); bw = new Button("B3"); be = new Button("B4"); bc = new Button("B5"); f.add(bn, BorderLayout.NORTH); f.add(bs, BorderLayout.SOUTH); f.add(bw, BorderLayout.WEST); f.add(be, BorderLayout.EAST); f.add(bc, BorderLayout.CENTER); f.setSize(200,200); f.setVisible(true); } public static void main(String args[]) { BorderExample guiWindow2 = new BorderExample(); } }

Programación II (Java)

86

Ejemplo GridLayout: import java.awt.*; public class GridExample { Frame f; Button b1, b2, b3, b4, b5, b6; public GridExample() { f = new Frame("Grid Example"); b1 = new Button("1"); b2 = new Button("2"); b3 = new Button("3"); b4 = new Button("4"); b5 = new Button("5"); b6 = new Button("6"); f.setLayout (new GridLayout(3,2)); f.add(b1); f.add(b2); f.add(b3); f.add(b4); f.add(b5); f.add(b6); f.pack(); f.setVisible(true); } public static void main(String args[]) { GridExample grid = new GridExample(); } }

Programación II (Java)

87

Ejemplo CardLayout: import java.awt.*; import java.awt.event.*; public class CardExample extends MouseAdapter{ Panel p1, p2, p3, p4, p5; Label lb1, lb2, lb3, lb4, lb5; CardLayout myCard; Frame f; CardExample() { f = new Frame ("Card Test"); myCard = new CardLayout(); p1 = new Panel(); p2 = new Panel(); p3 = new Panel(); p4 = new Panel(); p5 = new Panel(); lb1 = new Label(“Primer Panel"); l b2 = new Label(“Segundo Panel"); lb3 = new Label(“Tercer Panel"); lb4 = new Label(“Cuarto Panel"); lb5 = new Label(“Quinto Panel"); }

Programación II (Java)

88

public void launchFrame() { f.setLayout(myCard); p1.setBackground(Color.yellow); p1.add(lb1); p2.setBackground(Color.green); p2.add(lb2); p3.setBackground(Color.magenta); p3.add(lb3); p4.setBackground(Color.white); p4.add(lb4); p5.setBackground(Color.cyan); p5.add(lb5); p1.addMouseListener(this); p2.addMouseListener(this); p3.addMouseListener(this); p4.addMouseListener(this); p5.addMouseListener(this); f.add(p1, "First"); f.add(p2, "Second"); f.add(p3, "Third"); f.add(p4, "Fourth"); f.add(p5, "Fifth"); myCard.show(f, "First"); f.setSize(200,200); f.setVisible(true); }

Programación II (Java)

89

public void mousePressed(MouseEvent e) { myCard.next(f); } public void mouseReleased(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { }

Programación II (Java)

90

public static void main(String arg[]){ CardExample ce= new CardExample(); ce.launchFrame(); } }

Programación II (Java)

91

EVENTOS

Programación II (Java)

92

Categoria de Eventos:

Programación II (Java)

93

Java GUI Behavior Categoria

Interface

Métodos

Action

ActionListener

actionPerformed(ActionEvent)

Item

ItemListener

itemStateChanged(ItemEvent)

Mouse

MouseListener

mousePressed(MouseEvent) mouseReleased(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) mouseClicked(MouseEvent)

Mouse Motion

MouseMotionListener

mouseDragged(MouseEvent) mouseMoved(MouseEvent)

Programación II (Java)

94

Categoria

Interface

Métodos

Key

KeyListener

keyPressed(KeyEvent) keyReleased(KeyEvent) keyTyped(KeyEvent)

Focus

FocusListener

focusGained(FocusEvent) focusLost(FocusEvent)

Adjustmen

AdjustmenListener

AdjustmentValueChanged( AdjustmentEvent)

Component

ComponenetListener

componentMoved(ComponentEvent) componentHidden(ComponentEvent) componentResized(ComponentEvent) componentShown(ComponentEvent)

Programación II (Java)

95

Window

WindowListener

windowClosing(WindowEvent) windowOpened(WindowEvent) windowIconified(WindowEvent) windowDeiconified(WindowEvent) windowClosed(WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent)

Container

ContaineListener componentAdded(ContainerEvent) componentRemoved(ContainerEvent)

Text

TextListener

textValueChanged(TextEvent)

Programación II (Java)

96

INTERFACES   

  

Las interfaces proporcionan un mecanismo para abstraer los métodos a un nivel superior. Un interface contiene una colección de métodos que se implementan en otro lugar. La principal diferencia entre interface y abstract es que un interface proporciona un mecanismo de encapsulación de los protocolos de los métodos, sin forzar al usuario a utilizar la herencia. Podemos trabajar jerarquía de herencia entre interfaces. Una interface solo puede ser implementada por una clase. Por definición los datos de una interface son final y sus métodos públicos y abstractos.

Programación II (Java)

97

Por ejemplo: public interface VideoClip // comienza la reproduccion del video void play(); // reproduce el clip en un bucle void bucle(); // detiene la reproduccio void stop(); } Programación II (Java)

98



Las clases que quieran utilizar el interface VideoClip utilizarán la palabra implements y proporcionarán el código necesario para implementar los métodos que se han definido para el interface

Programación II (Java)

99

Ejemplo: class MiClase implements VideoClip { void play() { } void bucle() { } void stop() { }

Programación II (Java)

100





Al utilizar implements para el interface es como si se hiciese una acción de copiar-y-pegar del código del interface, con lo cual no se hereda nada, solamente se pueden usar los métodos. La ventaja principal del uso de interfaces es que una clase interface puede ser implementada por cualquier número de clases, permitiendo a cada clase compartir la interface de programación sin tener que ser consciente de la implementación que hagan las otras clases que implementen el interface

Programación II (Java)

101

Trabajo con varias interfaces import java.awt.*; import java.awt.event.*; class Interfaces implements WindowListener,ActionListener{ Frame f; Button b; public Interfaces(){ f=new Frame(); b=new Button("Salir"); f.addWindowListener(this); b.addActionListener(this); f.setLayout(new FlowLayout()); f.add(b); f.pack(); f.setVisible(true); } Programación II (Java)

102

//metodos de el escuchador de Ventana public void windowIconified(WindowEvent e){} public void windowDeiconified(WindowEvent e){} public void windowClosed(WindowEvent e){} public void windowClosing(WindowEvent e){ System.exit(0); } public void windowOpened(WindowEvent e){} public void windowActivated(WindowEvent e){} public void windowDeactivated(WindowEvent e){} //metodos de el escuchador de boton public void actionPerformed(ActionEvent e){ System.exit(0); } 

Programación II (Java)

103

public static void main(String arg[]){  Interfaces obj=new Interfaces(); } } 

Programación II (Java)

104

ADAPTADORES de eventos 

Un Adaptador es una clase que implementa las interfaces previamente y al heredarla ya no obliga a la subclase ponerle cuerpo, existen algunas clases adaptadoras ya predefinidos de Java como:

Programación II (Java)

105

Adaptador MouseAdapter: import java.awt.*; import java.awt.event.*; class Interfaces extends WindowAdapter implements ActionListener{ Frame f; Button b; public Interfaces(){ f=new Frame(); b=new Button("Salir"); f.addWindowListener(this); b.addActionListener(this); f.setLayout(new FlowLayout()); f.add(b); f.pack(); f.setVisible(true); } public static void main(String arg[]){ Interfaces obj=new Interfaces(); } } Programación II (Java)

106

Programación II (Java)

107

//solo es sobrescrito el método que nos interesa public void windowClosing(WindowEvent e){ System.exit(0); } //metodos de el escuchador de boton public void actionPerformed(ActionEvent e){ System.exit(0); }

Programación II (Java)

108

Trabajo con varios componentes en respuesta a un solo evento import java.awt.*; import java.awt.event.*; class Interfaces extends WindowAdapter implements ActionListener{ Frame f; Button b,b1; Label l; public Interfaces(){ f=new Frame(); b=new Button("Salir"); b1=new Button("Salir"); f.addWindowListener(this); b.addActionListener(this); b1.addActionListener(this); f.setLayout(new FlowLayout()); f.add(b); f.add(b1); f.pack(); f.setVisible(true); } Programación II (Java)

109

//metodos de el escuchador de Ventana public void windowClosing(WindowEvent e){ System.exit(0); } //metodos de el escuchador de boton public void actionPerformed(ActionEvent e){ if(e.getActionCommand()=="Salir") System.exit(0); else{ l=new Label (“Hola a todos….”); f.add(l); f.show(); } } public static void main(String arg[]){ Interfaces obj=new Interfaces(); } }

Programación II (Java)

110

Ejemplo eventos del mouse import java.awt.*; import java.awt.event.*; public class DosListener implements MouseMotionListener, MouseListener { Frame f; TextField tf; public DosListener() { f = new Frame(); tf = new TextField(30); } public void launchFrame() { Label label = new Label("Haz Click y Arrastra el Mouse "); f.add(label, BorderLayout.NORTH); f.add(tf, BorderLayout.SOUTH); f.addMouseMotionListener(this); f.addMouseListener(this); f.setSize(300, 200); f.setVisible(true); } Programación II (Java)

111

// Eventos de MouseMotionListener public void mouseDragged(MouseEvent e) { String s = "Mouse dragging: X = " + e.getX()+ " Y = " + e.getY(); tf.setText(s); } public void mouseEntered(MouseEvent e) { String s = "The mouse entered"; tf.setText(s); } public void mouseExited(MouseEvent e) { String s = "The mouse has left the building"; tf.setText(s); }

Programación II (Java)

112

public void mouseMoved(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public static void main(String args[]) { DosListener two = new DosListener(); two.launchFrame(); } } Programación II (Java)

113

APPLETS Aplicación para Internet, ésta se carga y ejecuta desde cualquier explorador que soporte Java (actualmente la mayoria lo hacen) o desde el appletviewer (viene con el kit de Java).  Para crear un applet este deberá ser una extensión de la clase predefinida Applet de Java. 

Programación II (Java)

114

Jerarquía de un applet

Programación II (Java)

115

Cabe destacar los siguientes métodos: public void init( ); Se llama una sola vez, cuando se carga el applet. En el podríamos inicializar variables.  public void start( ); Se invoca cada que se inicia la ejecución del applet , (cuando ya es visible).  public void paint(Graphics g); Permite dibujar con los métodos de la clase Graphics.  public void stop( ); Se ejecuta cuando el applet no esta visible, cuando minimizamos la ventana, encimamos otra ventana, etc.  public void destroy( ); Libera los recursos o memoria asignada al applet, es invocado cuando el applet será descargado del navegador. 

Programación II (Java)

116

Ejemplo “Hola Mundo” en applet.            

import java.awt.*; public class AppletHolaMundo extends java.applet.Applet { public void init() { resize(300,300); } public void paint(Graphics g) { g.drawString("Hello !", 50, 50); } }

Programación II (Java)

117



Para interpretar el código anterior debe estar incrustado en el código de HTML las siguiente etiqueta como sigue:

Primer Applet Prueba del Applet

Programación II (Java)

118

FICHEROS 

La clase File proporciona muchas utilidades relacionadas con ficheros y con la obtención de información básica sobre esos ficheros.

Programación II (Java)

119

Comprobaciones y Utilidades Una vez creado un objeto File, se puede utilizar uno de los siguientes métodos para reunir información sobre el fichero:  Nombres de fichero String getName() String getPath() String getAbsolutePath() String getParent() boolean renameTo( File nuevoNombre )  Comprobaciones boolean exists() boolean canWrite() boolean canRead() boolean isFile() boolean isDirectory() boolean isAbsolute()  Información general del fichero long lastModified() long length()  Utilidades de directorio boolean mkdir() String[] list()

Programación II (Java)

120

Ejemplo: import java.io.*; class Fichero { public static void main( String args[] ) { if( args.length > 0 ){ File f = new File( args[0] ); System.out.println( "Nombre: "+f.getName() ); System.out.println( "Camino: "+f.getPath() ); if( f.exists() ) { System.out.println( "Fichero existente " ); System.out.println( (f.canRead() ? " y se puede Leer" : "No se puede leer" ) ); System.out.println( (f.canWrite() ? " y se puede Escribir" : "No se puede escribir" ) ); System.out.println( "La longitud del fichero son "+ f.length()+" bytes" ); } else System.out.println( "El fichero no existe." ); } else System.out.println( "Debe indicar un fichero." ); } }

Programación II (Java)

121

STREAMS DE ENTRADA 

Objetos FileInputStream

Los objetos FileInputStream típicamente representan ficheros de texto accedidos en orden secuencial, byte a byte. Con FileInputStream, se puede elegir acceder a un byte, varios bytes o al fichero completo.  Lectura de un FileInputStream Una vez abierto el FileInputStream, se puede leer de él. El método read() tiene muchas opciones:  int read(); // Lee un byte y devuelve -1 al final del stream.  int read( byte b[] ); // Llena todo el array, si es posible. Devuelve el número de bytes leídos o -1 si se alcanzó el final del stream.  int read( byte b[],int offset,int longitud ); // Lee longitud bytes en b comenzando por b[offset]. Devuelve el número de bytes leídos o -1 si se alcanzó el final del stream. 

Programación II (Java)

122

Cierre de FileInputStream * Cuando se termina con un fichero, existen dos opciones para cerrarlo: explícitamente, o implícitamente cuando se recicla el objeto (el garbage collector se encarga de ello). * Para cerrarlo explícitamente, se utiliza el método close(): 

Programación II (Java)

123

El siguiente código realiza la copia de un fichero a otro. import java.io.*; class CopiaArchivo{ public static void main(String[] args) { try {File inputFile = new File("farrago.txt"); File outputFile = new File("outagain.txt"); FileInputStream fis = new FileInputStream(inputFile); FileOutputStream fos = new FileOutputStream(outputFile); int c; while ((c = fis.read()) != -1) { fos.write(c); } fis.close(); fos.close(); } catch (FileNotFoundException e) { System.err.println("FileStreamsTest: " + e); } catch (IOException e) { System.err.println("FileStreamsTest: " + e); } } } Programación II (Java)

124

Objetos DataInputStream 



Los objetos DataInputStream se comportan como los FileInputStream. Los streams de datos pueden leer cualquiera de las variables de tipo nativo, como floats, ints o chars. Generalmente se utilizan DataInputStream con ficheros binarios. Lectura de un DataInputStream, al acceder a un fichero como DataInputStream, se pueden utilizar los mismos métodos read() de los objetos FileInputStream. No obstante, también se tiene acceso a otros métodos diseñados para leer cada uno de los tipos de datos:

Programación II (Java)

125

Lectura de un DataInputStream          

byte readByte() int readUnsignedByte() short readShort() int readUnsignedShort() char readChar() int readInt() long readLong() float readFloat() double readDouble() String readLine()

Cada método leerá un objeto del tipo pedido.  Para el método String readLine(), se marca el final de la cadena con \n, \r, \r\n o con EOF.

Programación II (Java)

126

 Para

leer un long, por ejemplo:  long numeroSerie;  ...  numeroSerie = miDStream.readLong();

Programación II (Java)

127

Eejemplo realiza la escritura y lectura de varios tipos de dato import java.io.*; public class Tipos{ public static void main(String a[]){ FileInputStream fis=null; FileOutputStream fos=null; DataInputStream dis=null; DataOutputStream dos=null; int e=0; double d=0.0; String cad=null; try{ fos=new FileOutputStream("datos.dat"); dos=new DataOutputStream(fos); System.out.print("Insertar un Entero: ");e=Lector.leeI(); System.out.print("Insertar un Flotante: ");d=Lector.leeD(); System.out.print("Insertar una Cadena: ");cad=Lector.leeC(); dos.writeInt(e); dos.writeDouble(d); dos.writeChars(cad); Programación II (Java)

128

fis=new FileInputStream("datos.dat"); dis=new DataInputStream(fis); BufferedReader br=new BufferedReader(new InputStreamReader(fis)); System.out.println("Entero: "+dis.readInt()); System.out.println("Flotante: "+dis.readDouble()); System.out.println("Cadena: "+br.readLine()); }catch (IOException E){ System.out.print("Error..."); E.printStackTrace(); } } }

Programación II (Java)

129

Ejemplo de un fichero de acceso aleatorio. import java.io.*; public class AccesoAleatorio{ public static void main(String args[]){ try{ RandomAccessFile raf=new RandomAccessFile("dat_ale.dat","rw"); int e=0; for (int i=0;i
View more...

Comments

Copyright © 2017 DATENPDF Inc.