1. Curso Básico de Java Facilitador: Prof. Bassam Asfur Republica Bolivariana de Venezuela Área de Computación
2. El paquete java.io Los streams. Cualquier programa realizado en Java que necesite llevar a cabo una operación de I/O lo hará a través de un stream. Un stream, cuya traducción literal es "flujo", es una abstracción de todo aquello que produzca o consuma información. Podemos ver a este stream como una entidad lógica. La vinculación de este stream al dispositivo físico la hace el sistema de entrada y salida de Java. Se ve pues la eficacia de esta implementación pues las clases y métodos de I/O que necesitamos emplear son las mismas independientemente del dispositivo con el que estemos actuando, luego, el núcleo de Java, sabrá si tiene que tratar con el teclado, el monitor, un sistema de archivos o un socket de red liberando a nuestro código de tener que saber con quién está interactuando.
3.
4.
5. La entrada de consola, se obtiene a través de la instrucción System.in. Para conseguir un flujo de caracteres envolvemos dicha clase en un objeto del tipo BufferedReader, el cual soporta un flujo de entrada del buffer. Atendiendo a las especificaciones de esta clase, el parámetro que se le pasa es el stream de entrada que es de tipo Reader, el cual es abstracto por lo que recurriremos a una de sus subclases, en nuestro caso será InputStreamReader que convierte bytes a caracteres. Otra vez más, atendiendo a la especificación de esta última clase vemos que el parámetro que se le pasa es de tipo InputStream, o sea, la entrada orientada a byte que en nuestro caso es System.in, ya hemos asociado un dispositivo físico (el teclado) a un stream orientado a caracteres mediante la clase System con la clase BufferedReader Lectura de consola. BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
6. Definición La Herencia es el mecanismo por el que se crean nuevos objetos definidos en términos de objetos ya existentes. Por ejemplo, si se tiene la clase Pelota, se puede crear la subclase Pelota_Futbol, que es una especialización de Pelota. class Pelota_Futbol extends Pelota{ String color; int diametro; } La palabra clave extends se usa para generar una subclase (especialización) de un objeto. Pelota_Futbol es una subclase de Pelota. Cualquier cosa que contenga la definición de Pelota será copiada a la clase Pelota_Futbol. Pero, además de heredar la funcionalidad de la clase padre, una clase hija puede sobreescribirla. Herencia en Java
9. class Padre { String nombre, edad; public void mover() { System.out.println("Funcion implmetado en el padre"); } } class Hijo extends Padre { String madre; public void mover() { super.mover(); System.out.println("Funcion implemetado en el hijo"); } } public class Ejemplo{ public static void main(String[] args) { Hijo Alejandro= new Hijo(); Alejandro.mover(); } } Ejemplo Herencia
10. Interfases y Clases Abstractas. Clases Abstractas. Al ser utilizado Herencias y/o Polimorfismo es muy común que en la Clase Base existan métodos diseñados únicamente con el propósito de ofrecer una guia para las Clases heredadas, en Java existe un vocablo que permite prohibir el uso de métodos en Clases Base, este calificativo es : abstract . Al ser definido un método como abstract se restringe que éste sea llamado directamente, cuando una Clase contiene un método de este tipo a ésta se le llama: Clase Abstracta . Una de las características de las Clases que Heredande una Clase abstracta, es que éstas deben definir los mismos métodos definidos en la Clase Base.
11.
12. Definición: Un interface es una colección de definiciones de métodos (sin implementaciones) y de valores constantes. Los interfaces se utilizan para definir un protocolo de comportamiento que puede ser implementado por cualquier clase del árbol de clases. En Java, un interface es un tipo de dato de referencia, y por tanto, puede utilizarse en cualquier parte del código. Interface
13. Interface Una Interfase básicamente no indica que todas las Clases que implementen esta Interfase deben contener su misma estructura, para definir una Interfase se utiliza el vocablo interface y para especificar que una Clase debe utilizar determinada Interfase se utiliza el vocablo implements. Una característica especifica de Interfases que no es posible a través de Clases Abstractas es el uso de Herencias Múltiples, este concepto reside en diseñar Clases que adoptan el comportamiento de más de una Clase class Clase_Hijo extends Clase_Padre implements Interface1, Interface2, Interface3{ … }
14. interface Instrumento { // Constante al compilar, automáticamente static y final int i = 5; // Métodos Automáticamente Públicos void tocar(); String tipo(); void afinar(); } class Guitarra implements Instrumento { public void tocar() { System.out.println("Guitarra.tocar()"); } public String tipo() { return "Guitarra"; } public void afinar() {} } Interface (Ejemplo)
15. El polimorfismo es un concepto de la programación orientada a objetos que nos permite programar en forma general, en lugar de hacerlo en forma específica. En general nos sirve para programar objetos con características comunes y que todos estos compartan la misma superclase en una jerarquía de clases, como si todas fueran objetos de la superclase. Esto nos simplifica la programación. Ejemplo Polimorfismo Sumar Sumar(4,6); Sumar(4.5,6.5); Sumar(‘e’,’t’);
16. class Hijo2 extends Padre { String Ruta; public void mover() { System.out.println("La funcion del Hijo 2"); } } class Ejemplo4{ public static void Ejecutar(Padre m) { m.mover(); } public static void main(String[] args) { Hijo jose= new Hijo(); Hijo2 anibal = new Hijo2(); Ejecutar(jose); Ejecutar(anibal); } } Ejemplo Polimorfismo
17. public class Ejemplo{ int i; public Ejemplo() { i = 10; } // Este constructor establece el valor de i public Ejemplo( int valor ) { this.i = valor; // i = valor } public void Suma_a_i( int j ) { i = i + j; } } Al acceder a variables de instancia de una clase, la palabra clave this hace referencia a los miembros de la propia clase en el objeto actual; es decir, this se refiere al objeto actual sobre el que está actuando un método determinado y se utiliza siempre que se quiera hace referencia al objeto. Operador This
18. Operador super class Clase{ void imprimir(){ System.out.println("Funcion Padre"); } } class Nueva_Clase extends Clase{ void imprimir(){ super.imprimir(); } } class Ejemplo { public static void main(String []y){ new Nueva_Clase().imprimir(); } } Si se necesita llamar al método padre dentro de una clase que ha reemplazado ese método, se puede hacer referencia al método padre con la palabra clave super: Si un método sobrescribe un método de su superclase, se puede utilizar la palabra clave super para eludir la versión sobrescrita de la clase e invocar a la versión original del método en la supreclase.