Está en la página 1de 40

Introduccin al lenguaje de Programacin Java

ndice Sesin 2
Sintaxis
Tipo de datos primitivos Operadores Estructuras condicionales y repetitivas Convenciones de nomenclatura para clases, atributos, mtodos, etc. JavaDoc

Ejemplo integrador

Sintaxis Java
Nombres de clases, mtodos, propiedades y variables: Deben empezar por una letra, _ o $. Despus del primer carcter se pueden usar nmeros. Java distingue entre maysculas y minsculas. No se pueden utilizar palabras reservadas:

Sintaxis Java
Existen tres formas de escribir los comentarios:
// Comentario en una nica lnea /* Comentario de una o ms lneas */ /** Comentario en formato JavaDoc */

Sintaxis Java
Una sentencia es una lnea simple de cdigo terminada en punto y coma:
System.out.println(Hola);

Un bloque es un conjunto de sentencias agrupadas entre llaves. Pueden estar anidados.


while (true) { x=y+1; if(x<0) { x=x+1; } }

Sintaxis Java
Variables y tipos de datos Una declaracin de variable consiste en una sentencia en la que indicamos el nombre de la variable y el tipo de dato que va a almacenar:
int contador;

En la misma sentencia podemos asignar un valor a la variable:


int contador = 10;

Sintaxis Java
Variables y tipos de datos En Java existen dos tipos de datos genricos: Tipos primitivos Tipos complejos -> Clases.

Tipos Primitivos Lgico: boolean. Caracter: char.


boolean acierto = true; char unaLetra = a;

Sintaxis Java
Variables y tipos de datos Tipos Primitivos Nmeros enteros: byte, short, int y long
byte unByte = 12; short unShort; int unEntero = -199;

Nmeros reales: double y float.


float unFloat = 0.17F; double unDouble; double otroDouble = -12.01E30;

Sintaxis Java
Variables y tipos de datos Tipos Complejos (Clases) Se identifican con el nombre de la clase a la que pertenecen. Su valor por defecto es null.
Producto unProducto; String unString = new String(HOLA);

Sintaxis Java
Ejemplo:

Sintaxis Java
Variables y tipos de datos Variable Scope

Sintaxis Java
Operadores Operadores aritmticos Los operadores bsicos de Java son + , - , * , / para suma, resta, producto y divisin. El operador % calcula el resto de una divisin. Adems existen los operadores decremento e incremento: -- y ++ respectivamente. Tambin es posible utilizar los operadores +=, -=, etc.

Sintaxis Java
Operadores Operadores de comparacin

Sintaxis Java
Operadores Otros operadores

Sintaxis Java
Flow of Control Sentencia while
while (condicion){ <instrucciones> }

Sentencia do while
do { <instrucciones> } while(condicion);

Sintaxis Java
Flow of Control Sentencia for
for (inicializacin; condicion; incremento){ <instrucciones> }

Sintaxis Java
Flow of Control Sentencia if

Sintaxis Java
Flow of Control Sentencia switch

Sintaxis Java
Flow of Control Sentencias break y continue

Convenciones de nomenclatura
Las convenciones de nomenclatura hacen que el cdigo sea ms comprensible al hacerlo ms fcil de leer. Tambin pueden dar informacin sobre la funcin de un identificador.

Convenciones de nomenclatura
IDENTIFICADOR Paquetes REGLAS DE NOMENCLATURA El prefijo del nombre de un paquete se escribe siempre con letras ASCII en minsculas, y debe ser uno de los nombres de dominio de alto nivel (actualmente com, edu, gov, mil, net, org). Los siguientes componentes del nombre del paquete variarn de acuerdo a las convenciones de nomenclatura internas de cada organizacin. EJEMPLOS
com.sun.eng com.apple.quicktime.v2 edu.cmu.cs.bovik.cheese

Clases O Interfaces Mtodos

class Cliente; Los nombres de las clases deben ser sustantivos. Cuando son compuestos tendrn la primera letra de cada palabra que lo forma en maysculas. Se debe class ImagenAnimada; inte rfa ce mantener los nombres de las clases simples y descriptivos. ObjetoPersistente; interface Almacen;

ejecutar(); Los mtodos deben ser verbos. Cuando son compuestos tendrn la primera letra en minscula y la primera letra de las siguientes palabras que lo forma en ejecutarRapido(); mayscula. int i; Excepto las constantes, todas las instancias y variables de clase o mtodo char c; empezarn con minscula. Las palabras internas que lo forman (si son compuestas) empiezan con su primera letra en maysculas. Los nombres de las float miAnchura; variables deben ser cortos pero significativos. La eleccin del nombre de una variable debe ser un mnemnico. Los nombres de variables de un solo carcter se deben evitar, excepto para variables ndices temporales. Nombres comunes son i, j, k, m o c, d, n.

Variables

Constantes

Los nombres de las variables declaradas como constantes deben ir totalmente en maysculas separando las palabras con un guin bajo (_).

static final int ANCHURA_MINIMA = 4;

JavaDoc
Es la propuesta de Sun para la generacin de documentacin de desarrollos Java. Permite extraer de los fuentes informacin volcada en comentarios e inherente al cdigo. Evita que el desarrollador deba utilizar 2 herramientas, lo cual logra un mayor sincronizacin entre la documentacin y el cdigo. Se puede reconstruir la documentacin cuantas veces se desee por lo tanto no es necesario versionarla.

JavaDoc
Cuando desarrollamos aplicaciones, en paralelo debemos construir la documentacin. Desde las primeras versiones de Java e incluso para documentar las propias libreras del lenguaje, se utiliza un mecanismo llamado JavaDoc. Este sistema consiste en incluir comentarios en el cdigo, utilizando unas etiquetas especiales, que despus pueden procesarse y generar un juego navegable de documento HTML. Estos comentarios estn incluidos en bloques entre las etiquetas /** y */

JavaDoc
Al igual que obtenemos en binario de un programa java con javac, podemos obtener la documentacin ejecutando sobre los mismos elementos el comando javadoc. Los entornos de desarrollo avanzado ya hacen muchas de estas cosas por nosotros..... solo tenemos que saber encontrarlas.

JavaDoc
Qu documentar?
Obligatorio
Clases y paquetes Constructores, mtodos y atributos

/** Javadoc */
Conveniente
Fragmentos no evidentes Bucles, algoritmos. . .

// una sola lnea /* varias lneas */

JavaDoc
Generar documentacin de una API a mano es tedioso y propenso a errores
Gran cantidad de pequeos detalles Sincronizacin de cdigo fuente y documentacin Duplicidad de esfuerzos (tipos, nombres. . . )

Combinar cdigo fuente con documentacin

Generar documentacin desde el cdigo La documentacin embebida en el cdigo tiende a ser mas correcta

JavaDoc
Comentarios con una sintaxis concreta, que se ubican antes de las clases, interfaces, constructores, mtodos y atributos a documentar. /** * * Descripcion principal (texto / HTML) * * * Tags (texto / HTML) * * */

JavaDoc
La primera frase de cada comentario Javadoc debe ser una frase resumen con una descripcin concisa y completa, terminada en punto, y seguida de un espacio, tabulador o de retorno. Usar la etiqueta <code> para palabras clave y nombres. Preferible el uso de la tercera persona.
* Devuelve el ndice del primer elemento... * Devolvemos el ndice del primer elemento... Evitar

Empezar con un verbo la descripcin de los mtodos Omitir el sujeto cuando es obvio

JavaDoc
Tag
@author @deprecated @param @value @return @see @throws @exception @version

Descripcin
Nombre del desarrollador. Indica que el mtodo o clase es antigua y que no se recomienda su uso porque posiblemente desaparecer en versiones posteriores. Definicin de un parmetro de un mtodo, es requerido para todos los parmetros del mtodo. Cuando se usa en un comentario para documentacin de un atributo esttico, se muestra el valor de la constante. Informa de lo que devuelve el mtodo, no se puede usar en constructores o mtodos "void". Asocia con otro mtodo o clase. Aade una cabecera "See Also" con un enlace que apunta a una referencia. Excepcin lanzada por el mtodo para especificar el nombre de la clase (y acompaarlo con una descripcin) de la clase lanzada cuando ocurre una excepcin. Versin del mtodo o clase.

JavaDoc
Ejemplo /** * Inserta un ttulo en la clase descripcin. * Al ser el ttulo obligatorio, si es nulo o vaco se lanzar una excepcin. * * @param titulo El nuevo ttulo de la descripcin. * @throws IllegalArgumentException Si titulo es null, est vaco o contiene * solo espacios. */ public void setTitulo (String titulo) throws IllegalArgumentException { if (titulo == null || titulo.trim().equals("")) { throw new Exception ("El ttulo no puede ser

Ejemplo Clase Figura


// Declaracin de la superclase abstracta Figura. public abstract class Figura extends Object { // devolver el rea de la figura; 0.0 de manera predeterminada public double obtenerArea() { return 0.0; } // devolver el volumen de la figura; 0.0 de manera predeterminada public double obtenerVolumen() { return 0.0; } // mtodo abstracto, sobrescrito por las subclases public abstract String obtenerNombre(); } // fin de la clase abstracta Figura

Ejemplo Clase Punto


// Declaracin de la clase Punto que hereda de Figura. public class Punto extends Figura { private int x; // parte x del par de coordenadas private int y; // parte y del par de coordenadas // constructor sin argumentos; valor predeterminado de 0 para x e y public Punto() { // la llamada implcita al constructor de Object ocurre aqu } // constructor public Punto( int valorX, int valorY ) { // la llamada implcita al constructor de Object ocurre aqu x = valorX; // no hay necesidad de validacin y = valorY; // no hay necesidad de validacin } // establecer x en el par de coordenadas public void establecerX( int valorX ) { x = valorX; // no hay necesidad de validacin } // devolver x del par de coordenadas public int obtenerX() { return x; }

Ejemplo Clase Punto


// establecer y en el par de coordenadas public void establecerY( int valorY ) { y = valorY; // no hay necesidad de validacin } // devolver y del par de coordenadas public int obtenerY() { return y; } // sobrescribir el mtodo abstracto obtenerNombre para devolver "Punto" public String obtenerNombre() { return "Punto"; } // sobrescribir a toString para devolver la representacin String de Punto public String toString() { return "[" + obtenerX() + ", " + obtenerY() + "]"; } } // fin de la clase Punto

Ejemplo Clase Circulo


// La clase Circulo que hereda de Punto. public class Circulo extends Punto { private double radio; // radio del Circulo // constructor sin argumentos; el valor predeterminado de radio es 0.0 public Circulo() { // la llamada implcita al constructor de Punto ocurre aqu } // constructor public Circulo( int x, int y, double valorRadio ) { super( x, y ); // llamar al constructor de Punto establecerRadio( valorRadio ); } // establecer el radio public void establecerRadio( double valorRadio ) radio = ( valorRadio < 0.0 ? 0.0 : valorRadio ); } // devolver el radio public double obtenerRadio() return radio; } { {

Ejemplo Clase Circulo


// calcular y devolver el dimetro public double obtenerDiametro() return 2 * obtenerRadio(); } {

// calcular y devolver la circunferencia public double obtenerCircunferencia() return Math.PI * obtenerDiametro(); }

// sobrescribir el mtodo abstracto obtenerArea para devolver rea del Circulo public double obtenerArea() { return Math.PI * obtenerRadio() * obtenerRadio(); } // sobrescribir el mtodo abstracto obtenerNombre para devolver "Circulo" public String obtenerNombre() { return "Circulo"; } // sobrescribir toString para devolver la representacin String de Circulo public String toString() { return "Centro = " + super.toString() + "; Radio = " + obtenerRadio(); } } // fin de la clase Circulo

Ejemplo Clase Cilindro


// La clase Cilindro que hereda de Circulo. public class Cilindro extends Circulo { private double altura; // la altura del Cilindro // constructor sin argumentos; el valor predeterminado de altura es 0.0 public Cilindro() { // la llamada implcita al constructor de Circulo ocurre aqu } // constructor public Cilindro( int x, int y, double radio, double valorAltura ) super( x, y, radio ); // llamar al constructor de Circulo establecerAltura( valorAltura ); } // establecer la altura del Cilindro public void establecerAltura( double valorAltura ) altura = ( valorAltura < 0.0 ? 0.0 : valorAltura ); } // obtener la altura del Cilindro public double obtenerAltura() { return altura; } { {

Ejemplo Clase Cilindro


// sobrescribir mtodo abstracto obtenerArea para devolver area de Cilindro public double obtenerArea() { return 2 * super.obtenerArea() + obtenerCircunferencia() * obtenerAltura(); } // sobrescribir mtodo abstracto obtenerVolumen para devolver valor del Cilindro public double obtenerVolumen() { return super.obtenerArea() * obtenerAltura(); } // sobrescribir mtodo abstracto obtenerNombre para devolver "Cilindro" public String obtenerNombre() { return "Cilindro"; } // sobrescribir toString para devolver representacin String del Cilindro public String toString() { return super.toString() + "; Altura = " + obtenerAltura(); } } // fin de la clase Cilindro

Ejemplo Clase PruebaHerenciaAbstracta


// Controlador para la jerarqua figura, punto, circulo, cilindro. import java.text.DecimalFormat; import javax.swing.JOptionPane; public class PruebaHerenciaAbstracta { public static void main( String args[] ) {

// establecer el formato de nmero de punto flotante DecimalFormat dosDigitos = new DecimalFormat( "0.00" ); // crear objetos Punto, Circulo y Cilindro Punto punto = new Punto( 7, 11 ); Circulo circulo = new Circulo( 22, 8, 3.5 ); Cilindro cilindro = new Cilindro( 20, 30, 3.3, 10.75 ); // obtener nombre y representacin de cadena de cada objeto String salida = punto.obtenerNombre() + ": " + punto + "\n" + circulo.obtenerNombre() + ": " + circulo + "\n" + cilindro.obtenerNombre() + ": " + cilindro + "\n"; Figura arregloDeFiguras[] = new Figura[ 3 ]; // crear arreglo de Figuras // apuntar arregloDeFiguras[ 0 ] al objeto de la subclase Punto arregloDeFiguras[ 0 ] = punto; // apuntar arregloDeFiguras[ 1 ] al objeto de la subclase Circulo arregloDeFiguras[ 1 ] = circulo;

Ejemplo Clase PruebaHerenciaAbstracta


// apuntar arregloDeFiguras[ 2 ] al objeto de la subclase Cilindro arregloDeFiguras[ 2 ] = cilindro; // iterar a travs de arregloDeFiguras para obtener nombre, representacin // de cadena, rea y volumen para cada Figura en el arreglo for ( int i = 0; i < arregloDeFiguras.length; i++ ) { salida += "\n\n" + arregloDeFiguras[ i ].obtenerNombre() + ": " + arregloDeFiguras[ i ].toString() + "\nArea = " + dosDigitos.format( arregloDeFiguras[ i ].obtenerArea() ) + "\nVolumen = " + dosDigitos.format( arregloDeFiguras[ i ].obtenerVolumen() ); } JOptionPane.showMessageDialog( null, salida ); // mostrar resultados System.exit( 0 ); } // fin de main } // fin de la clase PruebaHerenciaAbstracta

Preguntas?

Muchas gracias!!!

También podría gustarte