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