1
1 Identificadores
Nombran variables, funciones, clases y objetos
Comienza con una letra, un subrayado (_) o un símbolo de dólar ($). Los siguientes caracteres pueden ser letras o dígitos.
Se distinguen las mayúsculas de las minúsculas
No hay una longitud máxima establecida para el identificador.
2
Variables
Sirven para referirse tanto a objetos como a tipos primitivos.
Tienen que declararse antes de usarse:
tipo identificador;
int posicion;
Se puede inicializar mediante una asignación:
tipo identificador = valor;
int posicion = 0;
Definición de constantes:
static final float PI = 3.14159f;
3
Tipos de datos primitivos
Se pueden utilizar valores de los siguientes tipos:
byte (entero de 8 bits)
short (entero de 16 bits)
int (entero de 32 bits)
long (entero de 64 bits)
float (decimal de 32 bits)
double (decimal de 64 bits)
char (Unicode de 16 bits)
boolean (true, false)
No se pueden definir tipos.
4
2 Operadores
En orden de precedencia:
5
3 Control de flujo
if( expresión-booleana )
{
sentencias;
}
[else {
sentencias;
}]
switch(expresión) {
case valor1:
sentencias;
break;
case valor2:
sentencias;
break;
[default:
sentencias;]
}
Control de saltos:
6
Ejemplos
int saldo;
if (saldo false, luego c1!=c2
c1.equals(c2) –> true compara el CONTENIDO de los objetos
si lo redefinimos en la clase
(por defecto es igual que ==)
47
0
c2
valor
valorInicial
47
0
c1
valor
valorInicial
25
this
Invocación a otro de los constructores de la clase:
public Contador (int i) {
valor=i;
valorInicial=i;
}
public Contador(){
this(0);
}
Instancia actual:
Pasar el objeto actual como parámetro de otro método
servicio.añadir(this);
En cualquier método del objeto actual
this.otroMetodo();
26
Reglas de alcance
Porción del programa en el que se puede hacer referencia al identificador
Un identificador debe ser único dentro de su ámbito
Alcance de CLASE:
los métodos de una clase pueden modificar directamente los atributos de clase y de instancia
Un método de clase (static) sólo puede acceder a atributos de clase.
Alcance de Bloque:
variables locales y parámetros de un método
cuando se anidan los bloques y existen dos identificadores con nombres iguales el compilador da error de sintaxis (variable ya definida)
si una variable local tiene igual nombre que un atributo de la clase éste queda oculto.
27
Reglas de alcance
class MiClase{
public static void metodo1(
){
{
//bloque
}
}
public void metodo2(
){
}
}
variables de clase
parámetros
variables locales
var. de instancia
parámetros
variables locales
28
El método main
Clase que conduce la aplicación
Al ejecutar el programa se busca el método main que contiene dicha clase:
public class Eco {
public static void main (String[] args){
for (int i = 0; i< args.length;i++)
System.out.print(args[i] + );
}
}
String[] args: parámetros del programa
Ejemplo de invocación:
java Eco repite esto
Puede haber más de un main, pero sólo se ejecutará uno
29
Normas de estilo
No es que existan reglas pero es conveniente seguir unas normas para que el código sea mas legible:
nombre de CLASE empieza por Mayúsculas
nombre de métodos y atributos por minúsculas
las CONSTANTES con MAYÚSCULAS completamente
cuando empieza una nueva palabra la ponemos en mayúsculas ej: dibujarRectangulo
30
Ejemplo: Clase Contador v2 (1/2)
public class Contador{
// Variable de clase
private static int nextCodigo=1;
// Variables de instancia
private int codigo;
private int valor;
private int valorInicial;
private int step;
// Constructores
public Contador (int valor, int step){
codigo =nextCodigo;
this.valor = valor;
valorInicial = valor;
this.step = step;
++nextCodigo;
}
public Contador(){
this(0,1);
}
31
Ejemplo: Clase Contador v2 (2/2)
// Métodos de instancia
public void incrementar(){
valor+=step;
}
public void decrementar(){
if (valor>=step) valor-=step;
else valor=0;
}
public void reset(){
valor=valorInicial;
}
public int getValor(){
return valor;
}
public int getCodigo(){
return codigo;
}
}
32
Ejemplo. Clase de prueba
public class TestContador{
public static void main (String [] args){
Contador c1 = new Contador();
Contador c2 = new Contador (0, 10);
c1.incrementar();
c2.incrementar();
System.out.println(C1 = + c1.getValor());
System.out.println(C2 = + c2.getValor());
}
}
33
Paquetes
Agrupar todas las clases relacionadas
//MiClass.java
package miBiblioteca;
public class MiClase{ //…
Se coloca al comienzo del fichero
Indica que las clases públicas que contenga está accesible a cualquiera que incluya:
import miBiblioteca.MiClase; o bien
import miBiblioteca.*;
Las clases que no tienen un nombre de paquete están en el paquete por defecto (Default Package)
Soporta el concepto de jerarquía de paquetes (estilo directorio)
ej: import miPaquete.miSubPaquete.MiClase;
34
Control de acceso
Designar qué clases de una biblioteca (miBiblio) están disponibles desde fuera del paquete
Controlan si el cliente puede crear objetos de la clase
public class MiClase { … }
Entonces import miBilio.MiClase;
Modificador de acceso por omisión indica visibilidad a nivel de paquete.
Tanto la clase como atributos y métodos.
Una clase NUNCA puede ser private.
35
Estructura de un proyecto
(Gp:) modelo
(Gp:) Contador
valor
sumar()
restar()
(Gp:) vista
(Gp:) VentanaContador
…
…
(Gp:) Contiene nom_proyecto.jpx
(Gp:) Ficheros .class
(Gp:) Ficheros .java
Una carpeta por cada paquete
Cada carpeta contiene los ficheros corres-
pondientes a las clases del paquete.
Coincidencia EXACTA de nombres.
36
Paquetes básicos del sistema
java.lang: para funciones del lenguaje
java.util: para utilidades adicionales
java.io: para manejo de ficheros
java.awt: para diseño gráfico e interfaz de usuario
java.awt.event: para gestionar eventos
javax.swing: nuevo diseño de GUI
java.net: para comunicaciones
37
Comentarios
Hay tres tipos de comentarios:
// comentarios para una sola línea
/*
comentarios de una o más líneas
*/
/** comentario de documentación, de una o más líneas justo antes del elemento (clase, var, met)
*/
Los comentarios de documentación pueden llevar etiquetas
La documentación se genera con javadoc en formato html
38
… Comentarios
Las etiquetas pueden ser:
@see
– Etiquetas de documentación de clases:
@version
@author
– Etiquetas de documentación de métodos:
@param
@return
@exception
Otras: (no aparece en la documentación)
@todo
39
Comentarios de
documentación
40
C:seminarioJava>javadoc -sourcepath src/ modelo -d doc/
Loading source files for package modelo…
Constructing Javadoc information…
Building tree for all the packages and classes…
Building index for all the packages and classes…
Generating doc/overview-tree.html…
Generating doc/index-all.html…
Generating doc/deprecated-list.html…
Building index for all classes…
Generating doc/allclasses-frame.html…
Generating doc/index.html…
Generating doc/packages.html…
Generating doc/modelopackage-summary.html…
Generating doc/modelopackage-tree.html…
Generating doc/modelopackage-frame.html…
Generating doc/modeloContador.html…
Generating doc/modeloPrueba.html…
Generating doc/serialized-form.html…
Generating doc/package-list…
Generating doc/help-doc.html…
Generating doc/stylesheet.css…
41
42
@param
@see