Professional Documents
Culture Documents
java.io
Taller de
Algoritmos y
Estructuras
de Datos I
1
Entrada /Salida básica
El paquete java.io contiene todas las clases necesarias para la lectura y
escritura de datos en archivos y conexiones a sistemas que necesitan
transmitir flujos de datos. En el paquete se encuentran distintas
implementaciones, que se caracterizan por el origen y forma de los
datos.
Entre los objetivos que cumplen todas las clases del paquete, podemos
nombrar:
Parseo de datos
Ejemplo:
import java.io.*;
public class Test{
public static void main(String[] arg) {
InputStream entrada1 = System.in;
InputStreamReader entrada2 = new InputStreamReader(entrada1);
BufferedReader entrada = new BufferedReader(entrada2);
PrintStream salida = System.out;
PrintStream salidaError = System.err;
Ejemplo:
import java.io.*;
public class Test{
public static void main(String[] arg) {
Console consola=System.console();
consola.writer().println("Programa de prueba de entrada salida por consola");
consola.writer().println("Ingrese una frase y presione Enter");
try {
String cadena = consola.readLine();
consola.writer().println(“La cadena ingresada es ” + cadena);
} catch (IOException e) {
consola.writer().println(e.toString()); //#9
}
}
}
import java.io.*;
1- Sufijos de archivo
Nombre de
Uso
archivo
Cada archivo de código fuente Java contiene una única clase o interfaz
público. Cuando una clase pública tiene clases privadas e interfaces
asociados, se pueden poner en el mismo archivo de código fuente que la
clase pública. La clase pública debería ser la primera clase o interfaz en el
archivo.
Comentarios iniciales
Comentarios iniciales:
/*
* Nombre de la clase
* Fecha
* Copyright
*/
import java.util.List;
Declaraciones
Ejemplo:
Inicialización
Colocación
Coloque las declaraciones sólo al principio de los bloques. (Se entiende por
bloque cualquier código rodeado por llaves "{" y "}".)
void metodo() {
if (condición) {
...
Excepción a esta regla: se da con el índice de los bucles for, que en Java se
puede declarar dentro de la sentencia for:
Evite declaraciones locales que oculten declaraciones de más alto nivel. Por
ejemplo, no declare el mismo nombre de variable en un bloque interno:
int count;
...
metodo() {
if (condición) {
int count = 0; // EVITAR
...
}
...
}
Declaraciones de clase e interfaz
Ningún espacio entre el nombre del método y el paréntesis "(" que abre su
lista de parámetros.
La llave de cierre "}" comienza una línea nueva tabulada para coincidir con
su sentencia de apertura correspondiente, excepto cuando es un bloque
vacío que se presentan juntas {}
int ivar1;
int ivar2;
Ejemplo(int i, int j) {
ivar1 = i;
ivar2 = j;
int emptyMethod() {}
...
Sentencias
Sentencias simples
Cada línea debe contener una sentencia como mucho. Por ejemplo:
argv++; // Correcto
argc--; // Correcto
argv++; argc--; // ¡EVITAR!
Sentencias compuestas
Las sentencias internas deben estar tabuladas un nivel más que la sentencia
compuesta.
Sentencia return
return;
return metodo();
Sentencia try-catch
try {
sentencias;
} catch (ExceptionClass e) {
sentencias;
try {
sentencias;
} catch (ExceptionClass e) {
sentencias;
} finally {
sentencias;
Espacios en blanco
Líneas en blanco
Entre métodos.
Espacios en blanco
Una palabra clave seguida por un paréntesis debe estar separado por un
espacio. Por ejemplo:
while (true) {
...
Todos los operadores binarios, excepto el operador punto (.) deben estar
separados de sus operandos por espacios. Los operadores unarios
(incremento ++, decremento --, negativo -) nunca deben estar separados de
sus operandos. Por ejemplo:
a += c + d;
a = (a + b) / (c * d);
n++;
}
print("el resultado es " + n + "\n");
Las expresiones de una sentencia for deben estar separadas por espacios en
blanco. Por ejemplo:
+ 1);
Convenciones de nombrado
Tipo de
Reglas de nombrado Ejemplos
identificador
es.nom.aperez
No debe ser pública ninguna variable de clase o instancia, a no ser que sea
necesario y justificable. Por lo general, las variables de instancia no
necesitan ser accedidas o modificadas explícitamente.
classMethod(); // OK
AClass.classMethod(); // OK
anObject.classMethod(); // ¡EVITAR!
Constantes
Asignaciones de variables
...
if ((c++ = d++) != 0) {
...
a = b + c;
d = a + r;
Prácticas varias
Paréntesis
if (a == b && c == d) // ¡EVITAR!
Devolver valores
if (expresiónBoolean) {
return true;
} else {
return false;
return expresiónBoolean;
Igualmente,
if (condición) {
return x;
return y;
(x >= 0) ? x : -x;
Comentarios especiales
Use XXX en un comentario para indicar algo que funciona pero que no está
del todo bien.
Use FIXME (fix me, corrígeme) para indicar algo que no funciona del todo y
debe corregirse.
Use TODO (to do, hacer) para indicar algo que no está totalmente
terminado.
Integración
Reuso de Software
Conclusión
Deitel y Deitel, “Java cómo programar ”, séptima edición, ed. Pearson, 2008.