Publicado el 19 de Enero del 2019
573 visualizaciones desde el 19 de Enero del 2019
234,1 KB
48 paginas
Creado hace 11a (26/09/2012)
Experto Universitario Java Enterprise
Lenguaje Java Avanzado
Sesión 1: Introducción al Lenguaje Java
© 2012-2013 Depto. Ciencia de la Computación e IA
Experto Universitario Java Enterprise
Índice
• Introducción a Java
• Conceptos de POO
• Elementos de un programa Java
• Herencia, interfaces, polimorfismo
• Hilos
• Clases útiles
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 2
Experto Universitario Java Enterprise
Java
• Java es un lenguaje OO creado por Sun Microsystems para poder
funcionar en distintos tipos de procesadores y máquinas.
• Similar a C o C++, pero con algunas características propias (gestión de
hilos, ejecución remota, etc)
• Independiente de la plataforma, gracias a la JVM (Java Virtual
Machine), que interpreta los ficheros objeto
• Se dispone de antemano de la API (Application Programming Interface)
de clases de Java.
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 3
Experto Universitario Java Enterprise
Clases
• Clases: con la palabra class y el nombre de la clase
class MiClase
{
...
}
• Como nombre utilizaremos un sustantivo
• Puede estar formado por varias palabras
• Cada palabra comenzará con mayúscula, el resto se dejará en minúscula
• Por ejemplo: DataInputStream
• Si la clase contiene un conjunto de métodos estáticos o constantes relacionadas
pondremos el nombre en plural
• Por ejemplo: Resources
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 4
Experto Universitario Java Enterprise
Campos y variables
• Campos y variables: simples o complejos
• Utilizaremos sustantivos como nombres
Properties propiedades;
File ficheroEntrada;
int numVidas;
• Puede estar formado por varias palabras, con la primera en minúsculas y el
resto comenzando por mayúsculas y el resto en minúsculas
• Por ejemplo: numVidas
• En caso de tratarse de una colección de elementos, utilizaremos plural
• Por ejemplo: clientes
• Para variables temporales podemos utilizar nombres cortos, como las iniciales
de la clase a la que pertenezca, o un carácter correspondiente al tipo de dato
int i;
Vector v;
DataInputStream dis;
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 5
Experto Universitario Java Enterprise
Constantes
• Constantes: Se declarán como final y static
final static String TITULO_MENU = “Menu”;
final static int ANCHO_VENTANA = 640;
final static double PI = 3.1416;
• El nombre puede contener varias palabras
• Las palabras se separan con ‘_’
• Todo el nombre estará en mayúsculas
• Por ejemplo: MAX_MENSAJES
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 6
Experto Universitario Java Enterprise
Métodos
• Métodos: con el tipo devuelto, nombre y parámetros
void imprimir(String mensaje)
{
...// Codigo del método
}
Vector insertarVector(Object elemento, int posicion)
{
...// Codigo del método
}
• Los nombres de los métodos serán verbo
• Puede estar formados por varias palabras, con la primera en minúsculas y el resto
comenzando por mayúsculas y el resto en minúsculas
• Por ejemplo: imprimirDatos
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 7
Experto Universitario Java Enterprise
Constructores
• Constructores: se llaman igual que la clase, y se ejecutan con el operador new
para reservar memoria
MiClase()
{
...// Codigo del constructor
}
MiClase(int valorA, Vector valorV)
{
...// Codigo del otro constructor
}
• No hace falta destructor, de eso se encarga el garbage collector
• Constructor superclase: super(…)
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 8
Experto Universitario Java Enterprise
Paquetes
• Paquetes: organizan las clases en una jerarquía de paquetes y subpaquetes
• Para indicar que una clase pertenece a un paquete o subpaquete se utiliza la
palabra package al principio de la clase
package paquete1.subpaquete1;
class MiClase {
• Para utilizar clases de un paquete en otro, se colocan al principio sentencias import
con los paquetes necesarios:
package otropaquete;
import paquete1.subpaquete1.MiClase;
import java.util.*;
class MiOtraClase {
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 9
Experto Universitario Java Enterprise
Paquetes
• Si no utilizamos sentencias import, deberemos escribir el nombre completo de
cada clase del paquete no importado (incluyendo subpaquetes)
class MiOtraClase {
paquete1.subpaquete1.MiClase a = ...;
MiClase a = ...;
// Con import
// Sin import
• Los paquetes se estructuran en directorios en el disco duro, siguiendo la
misma jerarquía de paquetes y subpaquetes
./paquete1/subpaquete1/MiClase.java
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 10
Experto Universitario Java Enterprise
Paquetes
• Siempre se deben incluir las clases creadas en un paquete
• Si no se especifica un nombre de paquete la clase pertenecerá a un paquete
“sin nombre”
• No podemos importar clases de paquetes “sin nombre”, las clases creadas de
esta forma no serán accesibles desde otros paquetes
• Sólo utilizaremos paquetes “sin nombre” para hacer una prueba rápida,
nunca en otro caso
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 11
Experto Universitario Java Enterprise
Convenciones de paquetes
• El nombre de un paquete deberá constar de una serie de palabras simples
siempre en minúsculas
• Se recomienda usar el nombre de nuestra DNS al revés
especialistajee.org org.especialistajee.prueba
• Colocar las clases interdependientes, o que suelan usarse juntas, en un mismo
paquete
• Separar clases volátiles y estables en paquetes diferentes
• Hacer que un paquete sólo dependa de paquetes más estables que él
• Si creamos una nueva versión de un paquete, daremos el mismo nombre a la
nueva versión sólo si es compatible con la anterior
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 12
Experto Universitario Java Enterprise
Tipo enumerado
enum EstadoCivil {soltero, casado, divorciado};
EstadoCivil ec = EstadoCivil.casado;
ec = EstadoCivil.soltero;
switch(ec) {
case soltero:
System.out.println("Es soltero"); break;
case casado:
System.out.println("Es casado"); break;
case divorciado:
System.out.println("Es divorciado"); break;
}
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 13
Experto Universitario Java Enterprise
Otras características
•
Imports estáticos
import static java.lang.Math;
…
double raiz = sqrt(1252.2);
• Argumentos variables
public void miFunc(String param, int... args) {
for(int i: args) { … }
}
• Anotaciones (metainformación)
• P.ej., @deprecated
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 14
Experto Universitario Java Enterprise
Convenciones generales
Indentar el código uniformemente
•
• Limitar la anchura de las líneas de código (para impresión)
• Utilizar líneas en blanco para separar bloques de código
• Utilizar espacios para separar ciertos elementos en una línea
• Documentación:
• Utilizar /*... */ para esconder código sin borrarlo
• Utilizar // ... para detalles de la implementación
• Utilizar javadoc para describir la interfaz de programación
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 15
Experto Universitario Java Enterprise
Modificadores de acceso
• Las clases y sus elementos admiten unos modificadores de acceso:
• privado: el elemento es accesible sólo desde la clase en que se encuentra
• protegido: el elemento es accesible desde la propia clase, desde sus
subclases, y desde clases del mismo paquete
• público: el elemento es accesible desde cualquier clase
• paquete: el elemento es accesible desde la propia clase, o desde clases del
mismo paquete.
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 16
Experto Universitario Java Enterprise
Modificadores de acceso
• private se utiliza para elementos PRIVADOS
• protected se utiliza para elementos PROTEGIDOS
• public se utiliza para elementos PUBLICOS
• No se especifica nada para elementos PAQUETE
public class MiClase {
private int n;
protected void metodo() { ... }
• Todo fichero Java debe tener una y solo una clase pública, llamada
igual que el fichero (más otras clases internas que pueda tener)
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 17
Experto Universitario Java Enterprise
Modificadores de acceso
La misma clase
Cualquier clase del
mismo paquete
Subclase de otro
paquete
Cualquier clase de
otro paquete
public
protected
default
private
sí
sí
sí
sí
sí
sí
sí
sí
sí
sí
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 18
Experto Universitario Java Enterprise
Otros modificadores
• abstract: para definir clases y métodos abstractos
• static: para definir elementos compartidos por todos los objetos que se creen de la
misma clase
• miembros que no pertenecen al objeto en si, sino a la clase
• dentro de un método estático sólo podemos utilizar elementos estáticos, o elementos que hayamos
creado dentro del propio método
•
final: para definir elementos no modificables ni heredables
public abstract class MiClase {
public static final int n = 20;
public abstract void metodo();
...
Lenguaje Java Avanzado
© 2012-2013 Depto. Ciencia de la Computación e IA
Lenguaje Java 19
Experto Universitario Java Enterprise
Otros modificadores
• volatile y synchronized: para elementos a los que no se pu
Comentarios de: Sesión 1: Introducción al Lenguaje Java - Lenguaje Java Avanzado (0)
No hay comentarios