Java POO PDF
Java POO PDF
Java Fundamentos
&
Programación Orientada a Objetos
Java Fundamentos & Programación Orientada a Objetos
Contenido
CAPÍTULO 1 FUNDAMENTOS DE JAVA ............................................................................................................ 6
INTRODUCCIÓN ................................................................................................................................................ 6
BREVE HISTORIA ............................................................................................................................................... 6
¿QUÉ ES JAVA? ................................................................................................................................................. 7
¿QUÉ APLICACIONES HAY EN EL SDK? ............................................................................................................... 8
COMPILACIÓN: javac ........................................................................................................................................ 9
EJECUCIÓN DE APLICACIONES: java ................................................................................................................ 10
CONCEPTOS GENERALES ................................................................................................................................. 10
Comentarios ............................................................................................................................................... 10
Identificadores ............................................................................................................................................ 10
Palabras reservadas .................................................................................................................................... 11
Tipos de datos primitivos ............................................................................................................................ 11
Enteros ........................................................................................................................................................................ 11
Tipos en coma flotante ............................................................................................................................................... 11
Caracteres: char .......................................................................................................................................................... 11
Booleanos: boolean .................................................................................................................................................... 12
DECLARACIONES DE VARIABLES ...................................................................................................................... 12
CONSTANTES .................................................................................................................................................. 12
ASIGNACIONES ............................................................................................................................................... 13
STRINGS .......................................................................................................................................................... 14
OPERADORES .................................................................................................................................................. 15
ESTRUCTURAS DE CONTROL DE FLUJO ........................................................................................................... 15
Condicionales .............................................................................................................................................. 16
Bucles ......................................................................................................................................................... 17
EL MÉTODO main ........................................................................................................................................... 17
TRABAJANDO CON ARREGLOS ........................................................................................................................ 18
Definición .................................................................................................................................................... 18
Arreglos multidimensionales ....................................................................................................................... 20
CADENAS ........................................................................................................................................................ 21
Construcción de cadenas. ............................................................................................................................ 21
Concatenación ............................................................................................................................................ 21
Operaciones con cadenas ........................................................................................................................... 22
Longitud de una cadena. ............................................................................................................................................. 22
Ubicar un carácter mediante un índice ....................................................................................................................... 22
Extraer una subcadena ................................................................................................................................................ 22
Convertir a mayúsculas o minúsculas. ........................................................................................................................ 22
Eliminar espacios del inicio y el final de la cadena. ..................................................................................................... 22
Ubicar una subcadena desde una ubicación. .............................................................................................................. 22
Comparando dos cadenas. .......................................................................................................................................... 22
Página 2 de 91
Java Fundamentos & Programación Orientada a Objetos
Comparando regiones de una cadena. ....................................................................................................................... 23
Obtener cadenas desde las primitivas. ....................................................................................................................... 23
Obtener primitivas desde las cadenas. ....................................................................................................................... 23
Arreglos de cadenas .................................................................................................................................... 23
Método main .............................................................................................................................................. 24
CAPÍTULO 2 PROGRAMACIÓN ORIENTADA A OBJETOS ................................................................................. 25
UN NUEVO PARADIGMA ................................................................................................................................. 25
¿QUE ES UN OBJETO? ..................................................................................................................................... 25
Los objetos realizan operaciones................................................................................................................. 25
Los objetos tiene valores. ............................................................................................................................ 25
Los objetos son una abstracción ................................................................................................................. 26
Encapsulamiento ........................................................................................................................................ 26
Relaciones entre objetos ............................................................................................................................. 26
Asociación entre objetos ............................................................................................................................. 27
Composición de objetos. ............................................................................................................................. 27
CLASES ............................................................................................................................................................ 27
HERENCIA ....................................................................................................................................................... 28
POLIMORFISMO .............................................................................................................................................. 28
CLASES EN JAVA .............................................................................................................................................. 28
Paquetes ..................................................................................................................................................... 28
Modificadores de acceso ............................................................................................................................. 29
Creación de objetos .................................................................................................................................... 29
La referencia null ........................................................................................................................................ 30
Asignando referencias ................................................................................................................................ 31
MÉTODOS ....................................................................................................................................................... 31
Argumentos ................................................................................................................................................ 31
Valores de retorno ...................................................................................................................................... 32
Invocando métodos .................................................................................................................................... 32
ENCAPSULAMIENTO ....................................................................................................................................... 33
Código de una clase. ................................................................................................................................... 33
Paso de variables a métodos ....................................................................................................................... 34
SOBRECARGA DE MÉTODOS ........................................................................................................................... 35
INICIACIÓN DE VARIABLES DE INSTANCIA ....................................................................................................... 35
CONSTRUCTORES ........................................................................................................................................... 36
La referencia: this ....................................................................................................................................... 37
VARIABLES DE CLASE ...................................................................................................................................... 38
MÉTODOS DE CLASE ....................................................................................................................................... 39
HERENCIA Y POLIMORFISMO .......................................................................................................................... 39
Herencia ..................................................................................................................................................... 39
Página 3 de 91
Java Fundamentos & Programación Orientada a Objetos
La herencia en Java ..................................................................................................................................... 40
La referencia super ..................................................................................................................................... 40
Métodos ..................................................................................................................................................... 41
La referencia super ..................................................................................................................................... 43
Polimorfismo .............................................................................................................................................. 44
El operador instanceof y cast ..................................................................................................................... 46
ATRIBUTOS, MÉTODOS Y CLASES FINAL .......................................................................................................... 47
Variables finales ......................................................................................................................................... 47
Métodos finales .......................................................................................................................................... 47
Clases finales .............................................................................................................................................. 47
EL MÉTODO finalize() ...................................................................................................................................... 48
CAPÍTULO 3 CLASES ABSTRACTAS E INTERFASES .......................................................................................... 49
CLASES ABSTRACTAS....................................................................................................................................... 49
Clases abstractas ........................................................................................................................................ 49
Métodos abstractos .................................................................................................................................... 49
INTERFACES .................................................................................................................................................... 50
CAPÍTULO 4 UTILIDADES .............................................................................................................................. 53
LA CLASE Object.............................................................................................................................................. 53
CONVERTIR DATOS PRIMITIVOS EN REFERENCIAS .......................................................................................... 53
COLECCIONES ................................................................................................................................................. 54
Arquitectura ............................................................................................................................................... 54
Interfaces de colecciones ............................................................................................................................ 55
La interface Collection ................................................................................................................................ 55
La interface List ........................................................................................................................................... 56
La interface Map ......................................................................................................................................... 57
Clases implementadas ................................................................................................................................ 57
Definiendo una clase ................................................................................................................................... 58
Mostrar los elementos de una colección: ArrayList ..................................................................................... 58
Evitar objetos duplicados: HashSet ............................................................................................................. 60
Manejar colecciones ordenadas: TreeSet .................................................................................................... 62
Ordenar y buscar en Colecciones: Collections .............................................................................................. 65
Ejemplo de clases implementadas: Map ..................................................................................................... 68
Ejemplo de HashMap .................................................................................................................................................. 68
Ejemplo de TreeMap ................................................................................................................................................... 69
CAPÍTULO 5 MANEJO DE EXCEPCIONES. ....................................................................................................... 72
¿QUÉ ES UNA EXCEPCIÓN? ............................................................................................................................. 72
¿QUÉ ES UN ERROR? ...................................................................................................................................... 72
Página 4 de 91
Java Fundamentos & Programación Orientada a Objetos
¿CUÁL ES LA DIFERENCIA? .............................................................................................................................. 72
CARACTERÍSTICAS DEL JAVA ........................................................................................................................... 72
SEPARANDO EL MANEJO DE ERRORES ............................................................................................................ 72
EXCEPCIONES ................................................................................................................................................. 73
Las excepciones no pueden ignorarse ......................................................................................................... 74
Throwable ................................................................................................................................................... 74
Errores ........................................................................................................................................................ 75
Excepciones no controladas ........................................................................................................................ 75
Excepciones controladas ............................................................................................................................. 75
¿Qué se puede hacer con una Excepción? ................................................................................................... 75
EXCEPCIONES NO CONTROLADAS ................................................................................................................... 75
Como capturar y manejar una excepción .................................................................................................... 76
Capturando una excepción ......................................................................................................................... 76
Capturando múltiples excepciones .............................................................................................................. 77
Ejecución del bloque finally ......................................................................................................................... 77
Como pasar la excepción al método invocado ............................................................................................. 78
Como lanzar una excepción ........................................................................................................................ 79
COMO CREAR UNA EXCEPCIÓN ...................................................................................................................... 79
COMO CAPTURAR UNA EXCEPCIÓN Y LANZAR OTRA DIFERENTE. ................................................................... 80
CAPÍTULO 6 STREAM Y ARCHIVOS. ............................................................................................................... 81
INTRODUCCIÓN .............................................................................................................................................. 81
java.io.InputStream y java.io.OutputStream ............................................................................................... 81
java.io.Writer y java.io.Reader .................................................................................................................... 82
ENTRADA Y SALIDA ESTANDAR ....................................................................................................................... 83
System.out .................................................................................................................................................. 83
System.in .................................................................................................................................................... 83
LECTURA DE ARCHIVOS .................................................................................................................................. 84
ESCRITURA DE ARCHIVOS ............................................................................................................................... 85
LA CLASE File .................................................................................................................................................. 87
DIRECTORIOS .................................................................................................................................................. 88
CASO DE ESTUDIO .......................................................................................................................................... 89
Parte 1 ........................................................................................................................................................ 89
Parte 2 ........................................................................................................................................................ 91
Página 5 de 91
Java Fundamentos & Programación Orientada a Objetos
Capítulo 1
FUNDAMENTOS DE JAVA
INTRODUCCIÓN
Java es un leguaje de programación orientado a objetos desarrollado por SUN cuya sintaxis está
basada en C++, por lo que todos aquellos que estén acostumbrados a trabajar en este lenguaje
encontrarán que la migración a Java se produce de forma sencilla y podrán verlo como su evolución
natural: un lenguaje con toda la potencia de C++ que elimina todas las estructuras que inducían a
confusión y que aumentaban la complejidad del código y que cumple todos los requerimientos
actualmente del paradigma de programación orientada a objetos.
BREVE HISTORIA
Java no surgió inicialmente como un lenguaje de programación orientado a la web. Los orígenes se
remontan al año 1991 cuando Mosaic (uno de los primeros browsers) o la World Wide Web no eran
más que meras ideas interesantes. Los ingenieros de Sun Microsystems estaban desarrollando un
lenguaje capaz de ejecutarse sobre productos electrónicos de consumo tales como
electrodomésticos.
Simultáneamente James Gosling, el que podría considerarse el padre de Java, estaba trabajando en
el desarrollo de una plataforma software de bajo costo e independiente del hardware mediante C++.
Por una serie de razones técnicas se decidió crear un nuevo lenguaje, al que se llamó Oak, que debía
superar algunas de las deficiencias de C++ tales como problemas relacionados con la herencia
múltiple, la conversión automática de tipos, el uso de punteros y la gestión de memoria.
En 1994 eclosionó el fenómeno web y Oak fue rebautizado como Java. En un momento de
inspiración, sus creadores decidieron utilizar el lenguaje para desarrollar un browser al que se llamó
WebRunner, que fue ensayado con éxito, arrancando en ese momento el proyecto Java/HotJava.
HotJava fue un browser totalmente programado en Java y capaz así mismo de ejecutar código Java.
A lo largo de 1995 tanto Java, su documentación y su código fuente como HotJava pudieron
obtenerse para múltiples plataformas al tiempo que se introducía soporte para Java en la versión 2.0
del navegador Netscape.
Página 6 de 91
Java Fundamentos & Programación Orientada a Objetos
La versión beta 1 de Java despertó un inusitado interés y se empezó a trabajar para que Java fuera
portable a todos los sistemas operativos existentes. En diciembre de 1995 cuando se dio a conocer la
versión beta 2 de Java y Microsoft e IBM dieron a conocer su intención de solicitar licencia para
aplicar la tecnología Java, su éxito fue ya inevitable.
El 23 de enero 1996 se publicó oficialmente la versión Java 1.0 que ya se podía obtener
descargándola de la web. A principios de 1997 aparece la versión 1.1 mejorando mucho la primera
versión. Java 1.2 (Java 2) apareció a finales de 1998 incorporando nuevos elementos. Según Sun
esta era la primera versión realmente profesional. En mayo del 2000 se lanza la versión 1.3 del J2SE
(Java 2 Standar Edition), luego tenemos la versión 1.4, 1.5 (Java 5.0) y 1.6 (Java 6).
¿QUÉ ES JAVA?
Página 7 de 91
Java Fundamentos & Programación Orientada a Objetos
El entorno de SDK es de tipo línea de comando. Constituye todas las herramientas necesarias para
desarrollar aplicaciones Java, así pues consta del compilador/linkador, del intérprete de aplicaciones,
de un debugger, de un visor de applets y de un programa de generación automática de
documentación, entre otros. Existen entornos de desarrollo Java ajenos a Sun como pueden ser
JCreator, NetBeans, Eclipse, JDeveloper entre otros.
Página 8 de 91
Java Fundamentos & Programación Orientada a Objetos
COMPILACIÓN: javac
Para generar el archivo .class, que es el bytecode que recibe el entorno de ejecución, se usa el
compilador javac que recibe el código fuente en un archivo con extensión .java. Para compilar una
aplicación basta con compilar la clase principal, aquella donde está el método main, y después de
forma automática se va llamando para compilar todas las clases que necesite. Estas clases deben ser
accesibles a través de la variable de entorno CLASSPATH.
Vamos a hacer un pequeño ejemplo para probar el compilador. Abrir el NotePad y copiar las
siguientes líneas y a continuación guardar el archivo como HolaMundo.java
Página 9 de 91
Java Fundamentos & Programación Orientada a Objetos
Ahora que ya hemos compilado nuestro flamante HolaMundo.java y estamos ansiosos por ver el
resultado de nuestro primer programa, usaremos el intérprete Java para ejecutarlo.
CONCEPTOS GENERALES
En Java todos los programas se construyen a partir de clases, dentro de esas clases encontramos
declaraciones de variables (instrucciones atómicas) y procedimientos o funciones (conjuntos de
instrucciones).
Comentarios
Los comentarios son cadenas de texto que el programa usa para entender y hacer inteligible su
código a otros. Los comentarios son ignorados por el compilador. Java tiene tres tipos de comentarios
como los que ilustraremos en el siguiente programa:
/* Clasico HolaMundo.java */
public class HolaMundo {
/*
** Clásico Programa "Hola Mundo!"
*/
public static void main(String[] args) {
// Escribe por la salida estándar
System.out.println("Hola mundo!");
}
Identificadores
Los identificadores se usan para nombrar y referirnos a las entidades del lenguaje Java, entidades
tales como clases, variables o métodos. Java es sensible a la diferenciación de mayúsculas y
minúsculas, así pues una variable contador no es la misma que otra Contador y pueden, aunque no
Página 10 de 91
Java Fundamentos & Programación Orientada a Objetos
sea aconsejable, coexistir sin problemas. Un identificador tampoco puede ser igual a una palabra
reservada.
Palabras reservadas
Las palabras reservadas por el lenguaje Java son las que se muestran a continuación. Al final de este
curso conoceremos el significado de la mayoría de ellas:
abstract, default , if, this, implements, package, throw, boolean, double, import, private, break, else,
byte, extends, instanceof, public, try, case, final, int, cast, finally, return, void
Java es un lenguaje fuertemente tipificado, lo que quiere decir toda variable debe ser declarada de un
tipo. De los ocho tipos primitivos, hay seis numéricos (cuatro enteros y dos en coma flotante), otro es
el carácter y el último es el booleano. La portabilidad de Java garantiza todos los tipos tendrán el
mismo tamaño independientemente de la plataforma.
Enteros
Caracteres: char
Los caracteres se almacenan en el tipo char. Java utiliza el código Unicode de 16 bits
(diferenciándose de la mayor parte de lenguajes clásicos, como C/C++, que utilizan ASCII de 8 bits).
Unicode es un superconjunto de ASCII, es decir ASCII está contenido en Unicode, pero este último
proporciona muchísimos caracteres más (los dos bytes permiten tener 216=65.536 caracteres
diferentes frente a los 28=256 caracteres del ASCII extendido). Los caracteres se encierran entre
comillas sencillas (‘’) y no dobles (“”). Los caracteres de escape, al igual que en C/C++, se preceden
de la barra invertida (\). Tenemos lo siguiente códigos de escape:
Página 11 de 91
Java Fundamentos & Programación Orientada a Objetos
Booleanos: boolean
A diferencia de C/C++ los valores cierto y falso que se utilizan en expresiones lógicas, no se
representan con un entero que toma los valores 1 y 0, sino que existe un tipo destinado a tal efecto, el
tipo boolean que toma valores true y false.
DECLARACIONES DE VARIABLES
Una variable es una estructura que se referencia mediante un identificador que nos sirve para
almacenar los valores que usamos en nuestra aplicación. Para usar una variable debemos declararla
previamente de un tipo. Veamos algunos ejemplos:
boolean b;
int numero
float decimal=43.32e3f
int contador=0;
char c='a';
Donde primero indicamos el tipo al que pertenece la variable, a continuación el identificador o nombre
de la variable, opcionalmente un valor inicial y finalmente acabamos con un punto y coma (;). A
diferencia de otros lenguajes, Java permite declarar las variables en cualquier parte de un bloque de
instrucciones (no tiene porqué ser al principio).
CONSTANTES
Página 12 de 91
Java Fundamentos & Programación Orientada a Objetos
detalle cuando pasemos al capítulo de orientación a objetos, por el momento diremos que lo más
parecido que tenemos a una constante es una variable de clase no modificable que se declara de la
siguiente manera:
Por ejemplo:
ASIGNACIONES
El operador de asignación, como ya hemos visto en las inicializaciones de variables, es el "=", por
ejemplo:
bool javaEsGenial;
javaEsGenial=true;
int edad;
edad=22;
Es posible hacer asignaciones entre tipos numéricos diferentes. Esto es posible de una manera
implícita en el sentido de las flechas (no puede haber pérdida de información):
byte -> short -> int -> long -> float -> double
También puede hacerse en forma explícita cuando tiene ser al revés mediante un casting, siendo
responsabilidad del programador la posible pérdida de información ya que Java no producirá ningún
error. Por ejemplo:
float radio;
radio = 5; // no es necesaria la conversión explícita de int a float
int perimetro;
perimetro = radio * 2 * PI; // error! no se puede guardar en un int
// el resultado de una operación con float
perimetro = (int) (radio * 2 * PI) // Ahora es correcto porque el
// casting fuerza la conversión
Página 13 de 91
Java Fundamentos & Programación Orientada a Objetos
STRINGS
Ante todo dejar claro que los strings no son tipos primitivos en Java. Son una clase implementada en
la biblioteca estándar aunque con ciertas funcionalidades que hacen que su uso sea comparable al
de los tipos primitivos en ciertos aspectos. Podemos declarar e inicializar strings como:
La cadena st3 contiene una concatenación de las cadenas st1, un espacio en blanco y st2. Para
concatenar Strings basta con operarlos mediante el símbolo “+”. Cuando concatenamos un
String con algo que no lo es, este valor es automáticamente convertido a String.
Además de la concatenación, también podemos usar otras operaciones de la clase String para
trabajar con ellos. Algunos ejemplos pueden ser (veremos la forma general de llamar operaciones
que actúan sobre objetos en el próximo capítulo):
st.equals(st2) Devuelve un booleano que evalúa a cierto si los dos String st y st2 son
iguales, en este caso valdrá true.
Cabe destacar que cuando consideramos posiciones dentro de un String, si la longitud es n, las
posiciones válidas van de la 0 a la n-1. Otro aspecto a tener en cuenta es que una variable de tipo
String es un puntero a una zona de memoria (ya veremos que ocurre en general con todos los
objetos). Así pues, (si no hay ciertas optimizaciones por parte del compilador) la comparación st ==
st2 evalúa a falso.
Página 14 de 91
Java Fundamentos & Programación Orientada a Objetos
OPERADORES
Antes de ingresar a fondo con las estructuras de control de flujo debemos tener claro qué es un
bloque. Los bloques consisten en secuencias de declaraciones e instrucciones de variables locales.
Se escribe como sigue:
Página 15 de 91
Java Fundamentos & Programación Orientada a Objetos
bloqueCuerpo
}
Condicionales
Permiten desviar el flujo de ejecución por una rama u otra dependiendo de la evaluación de una
condición. Existen dos estructuras condicionales, el if :
if (condición1)
{bloque1}
[else if (condición2)
{bloque2}
...]
[else
{bloqueN}]
Que puede tener una o más ramas que evalúen condiciones y opcionalmente un else cuyo bloque se
ejecutará sólo si no se ha cumplido ninguna de las condiciones anteriores. Toda condición (en estas
estructura y en adelante) debe evaluarse a un valor booleano no pudiéndose utilizar valores enteros
como en C/C++. La otra estructura condicional es el switch que permite elegir un bloque en función
del valor de una variable de referencia:
switch (variableReferencia) {
case valor1:
{bloque1}
[case valor2:
{bloque2}
...]
[default:
{bloqueN}
]
}
variableReferencia sólo puede ser una expresión que evalúe a los tipos primitivos enteros o char. Se
evalúa la expresión y sucesivamente se va comprobando que coincida con alguno de los valores, en
caso de que así sea se ejecuta el bloque correspondiente. Hay que tener en cuenta que la última
instrucción de cada bloque debe ser un break porque en caso contrario el flujo del programa seguiría
por la primera instrucción del siguiente bloque y así sucesivamente (esto puede ser útil en alguna
circunstancia pero no es deseable generalmente). Si variableReferencia no coincide con ninguna de
Página 16 de 91
Java Fundamentos & Programación Orientada a Objetos
los valores del case, se ejecutará, caso de existir, el bloque correspondiente al default; en caso
contrario, simplemente se seguiría con la próxima instrucción después del switch.
Bucles
Los bucles son estructuras iterativas que ejecutan un cierto bucle mientras se da una cierta condición.
Java dispone de tres tipos de bucles. Tenemos en primer lugar el while:
while (condicion){
bloque
Que ejecutará el código del bloque mientras condición se evalúe a cierto. La sentencia do ..while:
do{
bloque
}while (condicion)
Es muy similar sólo que garantiza que el bloque se ejecutará al menos una vez, ya que la evaluación
de la condición se produce después de la ejecución del bloque. Finalmente tenemos el clásico for:
for(inicializazion;condicion;incremento)
{
bloque
}
Que de forma análoga permite ejecutar un bloque mientras se da una cierta condición. El for tiene de
particular que la inicialización (generalmente un contador) y el incremento queda encapsulado en la
misma estructura. Es útil para recorrer estructuras de datos secuenciales. La palabra reservada break
en cualquiera de los tres bucles fuerza la salida del bucle pasándose a ejecutar la siguiente
instrucción después del mismo. La sentencia continue fuerza el abandono de la iteración actual
haciendo que se ejecute la siguiente; también para todos los tipos de bucle.
EL MÉTODO main
El método main es la primera operación que se ejecuta en un programa Java, el que se encarga de
poner todo en marcha, y sólo puede haber uno. Su declaración es como sigue: public static
void main(String[]args) y siempre debe ser exactamente así, ya que si modificamos (u
olvidamos) alguno de los modificadores Java no lo interpreta como el método main y cuando
Página 17 de 91
Java Fundamentos & Programación Orientada a Objetos
intentáramos ejecutar la aplicación obtendríamos un error que precisamente nos diría esto más o
menos: “no puedo ejecutar el programa porque no existe un método main”. Como puede observar, el
método main siempre recibe un parámetro que es un array de String.
Este array contiene los parámetros que opcionalmente le hemos podido pasar por la línea de
comandos. ¿Qué significa esto? Habitualmente cuando ejecutamos un programa lo hacemos de la
siguiente manera:
En este caso hemos llamado a nuestra aplicación y le hemos pasado tres parámetros, p1, p2 y p3,
que se almacenan precisamente en el parámetro args del método main. Para acceder a ellos nada
más fácil que hacer:
Tener en cuenta que args es un array de String’s por lo que aunque nosotros pasemos desde la línea
de parámetros números, estos son interpretados como String y si queremos el int, por ejemplo,
correspondiente a esa representación tendremos que aplicar el método de conversión adecuado.
El número de parámetros que se han pasado por la línea de comandos puede consultarse mirando la
longitud del array:
Definición
Un arreglo es una colección de variables del mismo tipo. La longitud de un arreglo es fija cuando se
crea.
Página 18 de 91
Java Fundamentos & Programación Orientada a Objetos
Se declara el arreglo
int potencias[];
Se crea el arreglo
Página 19 de 91
Java Fundamentos & Programación Orientada a Objetos
Los arreglos son muy usados para buscar datos, especialmente si se conocen sus valores cuando se
crean.
Arreglos multidimensionales
Ejemplo:
Definir una matriz de enteros colocando como valores la suma de su número de fila y columna en la
matriz
{
int n= 10;
int p= 20;
double[][] m = new double[n][p];
for (int i= 0; i<n; i++)
for (int j= 0; j<p; j++)
m[i][j]= i+j;
}
Página 20 de 91
Java Fundamentos & Programación Orientada a Objetos
CADENAS
Una cadena es una secuencia de caracteres. La librería String (o clase String) se usa para definir
todas las cadenas en Java. Las cadenas se delimitan con comillas dobles.
System.out.println("Hola Mundo.");
String camara = "Camara";
String luces = camara + " Accion";
String vacio = "";
Construcción de cadenas.
Concatenación
// Usando el operador +
System.out.println(" Nombre = " + nombreEmpleado );
Página 21 de 91
Java Fundamentos & Programación Orientada a Objetos
// 01234567890123
String nombre = "Stephanie Cayo";
// 12345678901234
String subCadena = nombre.substring(2,6);
// 0123456789012
String alcalde = "Salvor Hardin";
int ubicacion1 = alcalde.indexOf("vor");
int ubicacion2 = alcalde.indexOf("r",7);
int ubicacion3 = alcalde.indexOf("h");
Página 22 de 91
Java Fundamentos & Programación Orientada a Objetos
System.out.println("Error!");
Arreglos de cadenas
Página 23 de 91
Java Fundamentos & Programación Orientada a Objetos
Método main
main() cuenta con un único parámetro que es un arreglo de cadenas. Este arreglo de cadenas son los
parámetros de la línea de comandos.
// Eco.java
package ejercicios;
Página 24 de 91
Java Fundamentos & Programación Orientada a Objetos
Capítulo 2
UN NUEVO PARADIGMA
¿QUE ES UN OBJETO?
Algunos ejemplos de objetos en POO son: Cliente, Factura, Contrato, Película. Un Cliente tiene un
nombre, dirección, crédito (atributo). Un Cliente podría alquilar una película, pagar una factura,
devolver una película (comportamiento).
Los objetos conocen cual es su estado actual. Cada conocimiento del objeto se denomina atributo.
Página 25 de 91
Java Fundamentos & Programación Orientada a Objetos
Todo depende del contexto. Cuando se modela un objeto, solo se requiere modelar las operaciones y
atributos que son relevantes para el problema
Encapsulamiento
El encapsulamiento oculta como las cosas funcionan dentro de un objeto. Solo nos comunicamos con
el objeto a través sus métodos. Los métodos son una interfaz que permite ignorar como están
implementados. No es posible evadir el encapsulamiento en OO
Los objetos se comunican unos con otros enviando mensajes. El trasmisor del mensaje pide que el
receptor realice una operación. El receptor ejecuta el método correspondiente. En programación
estructurada se invocan funciones o procedimientos. En OO se envía un mensaje a un objeto antes
que invocarse un procedimiento. Los métodos presentan polimorfismo (varias formas).
Persona
getEdad
Cliente getNombre Edad
o Mensaje getDireccion Nombre
Transmisor getEdad() setEdad Direccion
setNombre
setDireccion
Página 26 de 91
Java Fundamentos & Programación Orientada a Objetos
Para que un objeto envíe un mensaje a otro, el receptor debe ser visible para el transmisor. Esta
visibilidad se da a través de enlaces (métodos públicos). Un objeto envía mensajes a otro invocando
sus métodos.
Composición de objetos.
Los objetos están compuestos de otros objetos. Los objetos son partes de otros objetos. Esta relación
entre objetos se conoce como Agregación
El lector de la tarjeta
CLASES
Una clase es un molde para crear objetos. Para definir una clase se tiene que indicar las operaciones
y atributos. Los objetos son instancias de la clase. Cuando se cree un cajero automático P3 no se
requiere indicar sus operaciones y atributos.
cambiarDireccion() cambiarPrecio()
Página 27 de 91
Java Fundamentos & Programación Orientada a Objetos
HERENCIA
Entre diferentes clases puede haber similitudes. La herencia es una relación entre clases donde una
es padre de otra. Las propiedades comunes definen la superclase. Clase padre. Las subclases
heredan estas propiedades. Clase hija. Un objeto de una clase hija es un-tipo-de una superclase. Un
Helicóptero es un tipo de Nave Aérea.
Dirigible
Helicóptero
Jumbo
Globo
POLIMORFISMO
Significa que la misma operación se realiza en las clases de diferente forma. Estas operaciones
tienen el mismo significado, comportamiento. Internamente cada operación se realiza de diferente
forma.
Abordar pasajeros
CLASES EN JAVA
Una clase es un molde para crear múltiples objetos que encapsulan datos y comportamiento.
Paquetes
Página 28 de 91
Java Fundamentos & Programación Orientada a Objetos
Modificadores de acceso
Java controla el acceso a las variables y métodos a través de modificadores de acceso como:
private, public y protected. Un elemento público puede invocarse en cualquier clase. Un elemento
sin modificador solo se puede invocar desde la misma clase. Un elemento protegido solo se invocar
en clases heredadas. Un elemento privado no puede ser invocado por otra clase.
NO NO
private
SOLO SOLO
protected
SI SI
HEREDA HEREDA
SI SI
public
SI NO
Creación de objetos
Página 29 de 91
Java Fundamentos & Programación Orientada a Objetos
Pelicula
La Strada
La referencia null
Página 30 de 91
Java Fundamentos & Programación Orientada a Objetos
Asignando referencias
Se puede asignar una variable referencia a otra resultado en dos referencias al mismo objeto.
MÉTODOS
Un método es equivalente a una función o subrutina de otros lenguajes. Los métodos solo se definen
dentro de una clase.
Argumentos
En la definición del método se indica el tipo y el nombre de los argumentos del método.
Página 31 de 91
Java Fundamentos & Programación Orientada a Objetos
Valores de retorno
Se usa la sentencia return para salir del método retornando un valor. No se requiere return si el tipo
de retorno es void.
Invocando métodos
Se utiliza el operador punto para invocar el método de una clase, si el método es de la misma clase,
no se requiere el calificador de la clase.
Pelicula.java
Página 32 de 91
Java Fundamentos & Programación Orientada a Objetos
PruebaPeliculas.java
ENCAPSULAMIENTO
Las variables de instancia de una clase deberían ser declaradas como privadas. Solo un método
debería acceder a las variables privadas. No se debe acceder a las variables de instancia
directamente, sino a través de un método.
Pelicula.java
Página 33 de 91
Java Fundamentos & Programación Orientada a Objetos
Cuando el argumento es de tipo primitivo, se genera una copia de la variable para el método.
TestPrimitivas.java
Cuando se pasa como argumento un objeto referencia, no se genera copia. El argumento referencia
al objeto original.
Página 34 de 91
Java Fundamentos & Programación Orientada a Objetos
TestReferencias.java
SOBRECARGA DE MÉTODOS
Algunos métodos en una clase pueden tener el mismo nombre. Estos métodos deben contar con
diferentes argumentos. El compilador decide que método invocar comparando los argumentos. Se
generara un error si los métodos solo varian en el tipo de retorno.
Las variables de instancia se pueden iniciar en la declaración. Esta iniciación ocurre cuando se crea
un objeto.
Página 35 de 91
Java Fundamentos & Programación Orientada a Objetos
char '0'
boolean false
CONSTRUCTORES
Para una adecuada iniciación de variables de instancia, la clase debe tener un constructor. Un
constructor se invoca automáticamente cuando se crea un objeto. Se declaran de forma pública.
Tiene el mismo nombre que la clase. No retorna ningún valor. Si no se codifica un constructor, el
compilador crea uno por defecto sin argumentos que solo inicia las variables de instancia.
Pelicula.java
public Pelicula() {
titulo = "Pelicula sin definir.";
}
Página 36 de 91
Java Fundamentos & Programación Orientada a Objetos
TestConstructores.java
La referencia: this
Los métodos de instancia reciben el argumento this implícitamente que se refiere al mismo objeto.
Se puede compartir código entre constructores usando la referencia this. Un constructor invoca a otro
pasándole los argumentos que requiere.
Pelicula.java
Página 37 de 91
Java Fundamentos & Programación Orientada a Objetos
public Pelicula()
{
this("Pelicula sin definir");
}
public Pelicula (String titulo) {
this.titulo = titulo;
}
public String getTitulo() {
return titulo;
}
}
TestThis.java
VARIABLES DE CLASE
Las variables de clase comparten un único valor entre todas las instancias de la clase. Se declaran
con el calificador static.
Las variables de clase se pueden iniciar en la declaración. La iniciación ocurre cuando se carga la
clase en memoria. Para una iniciación compleja se usara un bloque static
Página 38 de 91
Java Fundamentos & Programación Orientada a Objetos
// Iniciación explicita
private static double precioMinimo = 3.29;
MÉTODOS DE CLASE
Estos métodos son compartidos por todas las instancias. Se usan estos métodos principalmente para
manipular variables de instancia. Se les declara con el calificador static. Se invoca a este método
de clase con el nombre de la clase o con el nombre de una instancia.
HERENCIA Y POLIMORFISMO
Herencia
Permite a una clase compartir la misma estructura de datos y comportamiento de otra clase. La
herencia minimiza la necesidad de duplicar código. El Polimorfismo permite utilizar el método de
acuerdo al objeto heredado.
Superclase
Item
Subclase
Pelicula Libro Equipo
Página 39 de 91
Java Fundamentos & Programación Orientada a Objetos
La herencia en Java
Una subclase hereda todas las variables instancia de la superclase. Las variables de instancia deben
ser private para que instancias de la subclase hereden sus valores.
Una subclase no hereda ningún constructor de la superclase, debe declararse explícitamente. Solo en
caso no se declare explícitamente, se ejecutaran los constructores por defecto de las superclases y
finalmente de la subclase.
La referencia super
Se refiere a la clase padre. Se usa para invocar constructores de la clase padre. Debe ser la primera
sentencia del constructor de la clase hijo. Esta referencia también se usa para invocar cualquier
método del padre.
Página 40 de 91
Java Fundamentos & Programación Orientada a Objetos
}
}
Métodos
La superclase define los métodos para todas las subclases. La subclase puede especificar métodos
propios.
Item0.java
Pelicula0.java
Página 41 de 91
Java Fundamentos & Programación Orientada a Objetos
}
}
TestSuper.java
}
}
¿Qué diferencia existe entre this y super?. ¿Se puede reemplazar super(precio); por
this.precio = precio;?. ¿Que métodos puede invocar una subclase?. La subclase hereda
todos los métodos del padre. La subclase puede re-escribir un método del padre.
Item1.java
Pelicula1.java
TestSobrescribir.java
Página 42 de 91
Java Fundamentos & Programación Orientada a Objetos
}
}
La referencia super
Item2.java
Equipo2.java
TestSuper2.java
Página 43 de 91
Java Fundamentos & Programación Orientada a Objetos
}
}
Polimorfismo
TacoraFilms inicia sus operaciones alquilando únicamente películas. Tres meses después amplia el
alquiler a equipos, juegos y libros. El alquiler de una película es 2 soles por día de alquiler. El alquiler
de un equipo consta de un seguro de 50 soles además de 5 soles por día. El alquiler de juegos
depende del fabricante. PlayStation 2 soles/día, Nintendo 1 sol/día. Los libros no se alquilan, se
prestan uno a la vez, mientras sean clientes de la tienda.
Alquiler3.java
Item3.java
Pelicula3.java
Página 44 de 91
Java Fundamentos & Programación Orientada a Objetos
}
}
Equipo3.java
Juego3.java
Libro3.java
TestPolimorfismo.java
Página 45 de 91
Java Fundamentos & Programación Orientada a Objetos
}
}
testOperador(oscar);
testOperador(vhs);
testOperador(mu);
testOperador(agua);
}
Página 46 de 91
Java Fundamentos & Programación Orientada a Objetos
}
}
Variables finales
Una variable final es una constante. Una variable final no puede ser modificada. Una variable final
debe ser iniciada. Una variable final por lo general es pública para que pueda ser accesada
externamente.
Métodos finales
Un método puede ser definida como final para evitar la sobre-escritura en una subclase. Un método
final no se puede redefinir en una clase hijo.
if (password.equals(...
}
Clases finales
Una clase final no puede ser padre de otra clase. Una clase puede ser definida como final para evitar
la herencia. El compilador es más eficiente con definiciones final por qué no buscara estas clases o
métodos al tratar clases heredadas.
Página 47 de 91
Java Fundamentos & Programación Orientada a Objetos
EL MÉTODO finalize()
Cuando todas las referencias de un objeto se pierden, se marcan para que el Garbage Collector los
recoja y libere ese espacio en memoria.
El objeto "Zelig" que estaba referenciado por pelicula ha perdido todas sus referencias. Luego el
Garbage Collector liberara el espacio ocupado por "Zelig". El método finalize es llamado justo antes
que el Garbage Collector libere la memoria. En este instante se puede aprovechar para realizar otras
operaciones.
Página 48 de 91
Java Fundamentos & Programación Orientada a Objetos
Capítulo 3
CLASES ABSTRACTAS
Clases abstractas
Sirven para modelar objetos de alto nivel, no contienen código, sino solo declaraciones. Todos sus
métodos deben existir en sus clases hijas. Una clase abstracta no puede ser instanciada (Crear un
objeto a partir de ella).
Métodos abstractos
Estos métodos son parte de clases abstractas. Un método abstracto debe ser redefinido en las
subclases. Cada subclase puede definir el método de manera diferente. Las clases abstractas
pueden contener métodos que no son abstractos.
Item.java
Pelicula.java
Libro.java
Página 49 de 91
Java Fundamentos & Programación Orientada a Objetos
Abstracto.java
System.out.println(pelicula.esAlquilable());
System.out.println(pelicula.getPrecio());
System.out.println(libro.esAlquilable());
System.out.println(libro.getPrecio());
}
}
INTERFACES
Una interface es totalmente abstracta; todos sus métodos son abstractos, sus atributos son públicos
estáticos y final. Una interface define los métodos que otras clases pueden implementar pero no
provee ninguna línea de código. Una clase solo puede heredar de una superclase. Una clase puede
implementar muchas interfaces; por lo que las interfaces permiten herencia múltiple.
Conducible
No Conducible
Página 50 de 91
Java Fundamentos & Programación Orientada a Objetos
Las interfaces describen la conducta que requiere muchas clases. El nombre de una interface por lo
general es un adjetivo como Conducible, Ordenable, Ubicable.
Aquí se diferencia de una clase que usualmente es un sustantivo como Pelicula, Cliente,
Alquiler. Las clases implementadas por una interface pueden no tener ninguna relación unas con
otras. A diferencia de las clases heredadas de una superclase tiene similitudes. Las clases que
implementan una interface deben definir todos los métodos de la interface.
Conducible.java
También se puede definir la interface sin los calificadores public static final abstract,
puesto que son implícitos. Para declarar que una clase que implementa una interface se usa
implements
Conducible.java
NaveArea.java
Globo.java
Página 51 de 91
Java Fundamentos & Programación Orientada a Objetos
Patin.java
TestInterface.java
Página 52 de 91
Java Fundamentos & Programación Orientada a Objetos
Capítulo 4
UTILIDADES
Se estudiara el uso de colecciones de objetos y una técnica de ordenación mediante interfaces.
LA CLASE Object
Todas las clases en java heredan de la clase java.lang.Object. Los siguientes métodos se heredan de
la clase Object
Los datos primitivos no se comparan con null. Los datos primitivos no pueden integrar una
Colección.
Para cada dato primitivo java provee una clase para convertirlo en referencia y tratarlo como un
objeto y resolver los problemas previos.
int precio ;
System.out.println(precio);
precio = 2;
System.out.println(precio + 5);
Integer objetoPrecio;
objetoPrecio = new Integer(precio);
System.out.println(objetoPrecio.toString());
System.out.println(objetoPrecio);
System.out.println(objetoPrecio+5);
System.out.println(objetoPrecio.intValue());
System.out.println(objetoPrecio.intValue()+5);
Página 53 de 91
Java Fundamentos & Programación Orientada a Objetos
COLECCIONES
Es un conjunto librerías para manipular y almacenar datos. Estas librerías se llaman colecciones.
Arquitectura
Referencia: http://java.sun.com/j2se/1.4.2/docs/api/java/util/package-tree.html
Las interfaces y las clases están relacionadas en un armazón (framework) de colecciones para
facilitar su uso.
Métodos estáticos que son algoritmos (por ejemplo ordenar una lista).
Página 54 de 91
Java Fundamentos & Programación Orientada a Objetos
Interfaces de colecciones
Referencia: http://java.sun.com/j2se/1.4.2/docs/api/java/util/package-tree.html
Interface
La interface Collection
Referencia: http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html
Métodos de la interface
Página 55 de 91
Java Fundamentos & Programación Orientada a Objetos
La interface List
Referencia: http://java.sun.com/j2se/1.4.2/docs/api/java/util/List.html
Colecciones ordenadas (secuencias) en las que cada elemento ocupa una posición identificada por
un índice. El primer índice es el 0. Las listas admiten duplicados.
Métodos de la interface
ListIterator listIterator(int) Devuelve un iterador de lista para la sublista que inicia en int
Página 56 de 91
Java Fundamentos & Programación Orientada a Objetos
List subList(int, int) Devuelve la sublista que comienza en el índice del primer
argumento hasta el indice del segundo argumento.
La interface Map
Referencia: http://java.sun.com/j2se/1.4.2/docs/api/java/util/Map.html
Son pares de datos (clave, valor). No puede haber claves duplicadas y cada clave se corresponde
con al menos un valor.
Métodos de la interface
put(Object clave, Object valor) Asocia la clave proporcionada con el valor proporcionado
Clases implementadas
El concepto de Polimorfismo aplica para todas las clases que implementan estas interfases.
Página 57 de 91
Java Fundamentos & Programación Orientada a Objetos
Para manipular las colecciones usaremos la clase Producto compuesta por dos atributos, un
constructor y un método get.
Producto.java
Primero se importan las librerías de java.util.* donde se concentran la gran mayoría de las
Clases del "Collection Framework".
Página 58 de 91
Java Fundamentos & Programación Orientada a Objetos
import java.util.*;
// Definir un ArrayList
ArrayList lista = new ArrayList();
Página 59 de 91
Java Fundamentos & Programación Orientada a Objetos
Producto.java
Página 60 de 91
Java Fundamentos & Programación Orientada a Objetos
Aun cuando se agregaron 6 elementos, la lista solo cuenta con 5. Set no permite duplicados.
Un Set no cuenta con índice, por lo que para eliminar un elemento se indica el objeto.
MercadoHashSet.java
import java.util.*;
// Definir un HashSet
HashSet lista = new HashSet();
lista.add(pan);
Página 61 de 91
Java Fundamentos & Programación Orientada a Objetos
lista.add(leche);
lista.add(manzanas);
lista.add(brocoli);
lista.add(carne);
lista.add(res);
Página 62 de 91
Java Fundamentos & Programación Orientada a Objetos
import java.util.*;
Página 63 de 91
Java Fundamentos & Programación Orientada a Objetos
MercadoTreeSet.java
import java.util.*;
// Definir un TreeSet
TreeSet lista = new TreeSet();
lista.add(pan);
lista.add(leche);
lista.add(manzanas);
lista.add(brocoli);
lista.add(carne);
lista.add(res);
Página 64 de 91
Java Fundamentos & Programación Orientada a Objetos
La clase Collections (que no es la interface Collection) nos permite ordenar y buscar elementos
en listas.
Los objetos de la lista deben tener métodos equals, hashCode y compareTo adecuados.
MercadoCollections.java
import java.util.*;
Página 65 de 91
Java Fundamentos & Programación Orientada a Objetos
// Definir un ArrayList
ArrayList lista = new ArrayList();
Producto.java
import java.util.*;
Página 66 de 91
Java Fundamentos & Programación Orientada a Objetos
Página 67 de 91
Java Fundamentos & Programación Orientada a Objetos
} else {
nombreObjeto = "";
}
Ejemplo de HashMap
Se muestra el contenido mediante un iterador que extrae los valores del HashMap
AgendaHashMap.java
import java.util.*;
Página 68 de 91
Java Fundamentos & Programación Orientada a Objetos
agenda.put("Suegros", "(334)-6105-4334");
agenda.put("Oficina", "(304)-5205-8454");
agenda.put("Abogado", "(756)-1205-3454");
agenda.put("Papa", "(55)-9555-3270");
agenda.put("Tienda", "(874)-2400-8600");
Ejemplo de TreeMap
En la primera se colocan las claves que se encuentran entre A y O. Metodo submap("A", "O")
Otras clases deberán definir sus propios métodos compareTo, equals y hashCode.
Página 69 de 91
Java Fundamentos & Programación Orientada a Objetos
AgendaTreeMap.java
import java.util.*;
// Definir un TreeMap
TreeMap agenda = new TreeMap();
Página 70 de 91
Java Fundamentos & Programación Orientada a Objetos
Página 71 de 91
Java Fundamentos & Programación Orientada a Objetos
Capítulo 5
MANEJO DE EXCEPCIONES.
¿QUÉ ES UN ERROR?
¿CUÁL ES LA DIFERENCIA?
Cuando ocurre una excepción en un método, Java lanza (throw) una excepcion (Exception).
El objeto Exception generado contiene el tipo de excepción, y el estado del programa cuando ocurrió
el error.
Página 72 de 91
Java Fundamentos & Programación Orientada a Objetos
abrirArchivo(); abrirArchivo();
if (errorAbrirArchivo) { leerArchivo();
}else { }
if (errorLeerArchivo) { manejarErrorAbrirArchivo;
errorCode = READ_ERROR; }
} catch (errorLeerArchivo) {
cerrarArchivo(); manejarErrorLeerArchivo;
if (errorCerrarArchivo) { }
} manejarErrorCerrarArchivo;
} }
return errorCode; }
Java separa los detalles del manejo de errores del código principal, obteniéndose un código mas
legible y menos propenso a errores de codificación.
EXCEPCIONES
Página 73 de 91
Java Fundamentos & Programación Orientada a Objetos
Metodo1 Metodo1
Manejo de errores Manejo de excepciones
Código de error
Metodo2 Metodo2
Código de error
Metodo3 Metodo3
Código de error
Excepcion
Metodo4 Metodo4
Una vez que un método lanza un error no puede ignorarse a diferencia de la programación tradicional
donde se debe controlar en cada punto de invocación.
Metodo1 Metodo1
Manejo de errores Manejo de excepciones
Metodo2 Metodo2
Metodo3 Metodo3
Código de error
Excepcion
Metodo4 Metodo4
Throwable
Página 74 de 91
Java Fundamentos & Programación Orientada a Objetos
Throwable
Error Exception
Errores
Heredan de la clase Error; estos se generan cuando ocurren errores fatales para el programa como
por ejemplo: cuando la memoria esta llena o cuando es imposible encontrar una clase requerida.
Excepciones no controladas
Heredan de la clase RuntimeException. Estas ocurren cuando por ejemplo se divide entre cero o
se intenta acceder a un elemento del arreglo fuera de sus límites. Mediante código se puede capturar,
manipular o ignorar estas excepciones. Si no maneja el error, java terminara el programa indicando el
estado del error.
Excepciones controladas
Heredan de la clase Exception. Estas deben ser capturadas y manejadas en algun lugar de la
aplicación. Las excepciones creadas por el programador seran heredadas de la clase Exception.
EXCEPCIONES NO CONTROLADAS
Página 75 de 91
Java Fundamentos & Programación Orientada a Objetos
try {
Encierre el código del método en un bloque try
// código del método
Maneje cada exception en un bloque catch.
}
Cualquier proceso final realícelo en un bloque catch (exception1) {
finally. Este bloque siempre se ejecutara,
// manejar la excepción1
ocurra o no una excepción.
}
catch (exception2) {
// manejar la excepción2
...
finally {
La documentación del java indicara que excepciones lanza los métodos del java.
Clase : java.io.FileInputStream
Referencia: http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileInputStream.html
int cantidad;
String cadena = "5";
try {
cantidad = Integer.parseInt(cadena);
}
catch ( NumberFormatException e) {
System.err.println(cadena + " no es un entero");
}
Página 76 de 91
Java Fundamentos & Programación Orientada a Objetos
Página 77 de 91
Java Fundamentos & Programación Orientada a Objetos
return;
cantidad = Integer.parseInt(cadena);
System.out.println(cantidad);
int resultado = cantidad / divisor;
System.out.println(resultado);
}
catch ( NumberFormatException e) {
System.err.println(cadena + " no es un entero");
}
catch ( ArithmeticException e) {
System.err.println("Error en "+cantidad+"/"+divisor);
}
finally {
System.err.println("Se trabajo con "+cadena+" y "+divisor);
}
}
Para pasar el método al invocador, se declara con la declaración throws. La excepción se propaga
al método que lo invoco.En el ejemplo, las excepciones de los métodos se manejan en el método
invocador.
Página 78 de 91
Java Fundamentos & Programación Orientada a Objetos
TestThrows.java
Para lanzar una excepción use las declaraciones throws y throw. Puede crear excepciones para
manejar posibles problemas en el código.
Para crear su propia excepción tiene que heredarla de la clase Exception. Puede ser usado en caso
quiera tratar cada problema en el código en forma diferente. Por ejemplo el manejo del archivo1
puede tratarlo con una excepción1. El manejo de un archivo2 puede tratarlo con una excepcion2.
Cada archivo tendria su propia excepción.
Página 79 de 91
Java Fundamentos & Programación Orientada a Objetos
UserFileException.java
Página 80 de 91
Java Fundamentos & Programación Orientada a Objetos
Capítulo 6
STREAM Y ARCHIVOS.
INTRODUCCIÓN
Stream
Origen
Informacion Destino
Informacion
abrir stream
mientras existan datos
leer o escribir datos
cerrar strem
Un stream es un flujo de datos y puede estar compuesto por archivos de texto, datos ingresados por
teclado, datos descargados desde Internet.
java.io.InputStream y java.io.OutputStream
java.io.InputStream
FileInputStream
Página 81 de 91
Java Fundamentos & Programación Orientada a Objetos
AudioInputStream
ObjectInputStream
FilterInputStream
BufferedInputStream
java.io.OutputStream
FileOutputStream
ByteArrayOutputStream
ObjectOutputStream ...
FilterOutputStream
BufferedOutputStream
http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStream.html
http://java.sun.com/j2se/1.4.2/docs/api/java/io/OutputStream.html
java.io.Writer y java.io.Reader
Las clases Writer y Reader fueron desarrolladas posteriormente y son más veloces que
InputStream y OutputStream.
http://java.sun.com/j2se/1.4.2/docs/api/java/io/Writer.html
http://java.sun.com/j2se/1.4.2/docs/api/java/io/Reader.html
java.io.Reader
BufferedReader
InputStreamReader
FileReader
Página 82 de 91
Java Fundamentos & Programación Orientada a Objetos
StringReader
java.io.Writer
BufferedWriter
PrintWriter
OutputStreamWriter
FileWriter
System.out
println es un método
El atributo out de la clase System cuenta con el metodo println que conforman el conocido
System.out.println
System.in
Página 83 de 91
Java Fundamentos & Programación Orientada a Objetos
LECTURA DE ARCHIVOS
Este programa pide el nombre del archivo para leer su contenido y finalmente indicar cuantas líneas
tiene. Ingrese por teclado un archivo java.
import java.io.*;
String lineaJava;
int lineas = 1;
try {
Página 84 de 91
Java Fundamentos & Programación Orientada a Objetos
lineas++;
System.out.println("El archivo " + archivoJava +
" contiene " + lineas + " lineas.");
} finally {
System.out.println("");
System.out.println("Asi funcionan los Streams!");
}
ESCRITURA DE ARCHIVOS
Este programa lee un archivo java y lo modifica para escribirlo en otro archivo.
import java.io.*;
try {
// Se define el stream para leer codigo fuente
// de un archivo java
BufferedReader archivoEntrada;
archivoEntrada = new BufferedReader(
new FileReader("C:\\TestWriter.java"));
String lineaArchivo;
String fuenteArchivo = new String();
Página 85 de 91
Java Fundamentos & Programación Orientada a Objetos
} catch (EOFException e) {
System.out.println("Final de Stream");
} catch (IOException e) {
System.out.println("Excepcion Entrada/Salida");
Página 86 de 91
Java Fundamentos & Programación Orientada a Objetos
} finally {
System.out.println("Revise C:\\TestWriterNew.java");
}
LA CLASE File
http://java.sun.com/j2se/1.4.2/docs/api/java/io/File.html
TestFile.java
import java.io.*;
Página 87 de 91
Java Fundamentos & Programación Orientada a Objetos
System.out.println( "." );
System.out.println( "La longitud del archivo es " +
f.length()+" bytes" );
} else
System.out.println( "El archivo no existe." );
}
}else
System.out.println( "Debe indicar un archivo." );
}
}
DIRECTORIOS
TestFilenameFilter.java
import java.io.*;
Página 88 de 91
Java Fundamentos & Programación Orientada a Objetos
FilterJava.java
import java.io.*;
CASO DE ESTUDIO
Parte 1
Se cuenta con el archivo texto Pelicula.def que define una tabla para películas, indicando el nombre
del campo, tipo, longitud y en caso sea clave primaria el campo.
Pelicula.def
codigo int 4 PK
titulo String 20
director String 20
categoría String 3
duracion int 3
Página 89 de 91
Java Fundamentos & Programación Orientada a Objetos
Tabla.java
MicroCase.java
import java.util.*;
import java.io.*;
El siguiente es un ejemplo para “Tokenizar” una cadena. El ejemplo divide la cadena en sus
componentes separados por espacios.
TestTokenizer.java
import java.util.*;
Página 90 de 91
Java Fundamentos & Programación Orientada a Objetos
Parte 2
PeliculaDispatcher.java
public PeliculaDispatcher() {}
Página 91 de 91