El Lenguaje Java Taller de Sistemas de Programas Sandra Zabala, Marilenis Olivera Ivette Martínez,...

Post on 23-Jan-2016

215 views 0 download

Transcript of El Lenguaje Java Taller de Sistemas de Programas Sandra Zabala, Marilenis Olivera Ivette Martínez,...

El Lenguaje Java

Taller de Sistemas de Programas

Sandra Zabala, Marilenis Olivera

Ivette Martínez, Pedro García

Qué es Java?

• Un lenguaje de programación Orientado por Objetos desarrollado por Sun Microsystems

• Una máquina virtual (ambiente de ejecución) que puede ser embebido en navegadores del web y diversos sistemas operativos

• Un conjunto estandarizado de librerías de Clases.

Por qué Java?

• Es independiente de la plataforma

• Es Orientado por Objetos

• Pequeño -> Fácil de aprender

• Seguro

• Robusto

• Permite recursión

• Multi-Thread

Sintaxis

• Muy similar a C/C++

• Fácil de aprender

• Pocos conceptos– No aritmética de apuntadores– No structs, typedef ni #define– No se necesita liberar memoria– No core dumps (Fallas de acceso a memoria)

Identificadores

• Son “case sensitive”

• Los identificadores de clases comienzan con mayúcula.

• Los identificadores de variables y métodos comienzan con minúsculas.

• Si el identificador tiene más de 2 palabras, de la segunda en adelante comienzan con mayúscula.

Tipos Simples

• boolean (1bit)

• byte (8 bits, con signo)

• char (16 bits, sin signo, UNICODE

• short (16 bits, con signo)

• int (32 bits, con signo)

Tipos Simples (cont.)

• long (64 bits, con signo)

• float (32 bits, IEEE 754)

• double (64 bits, IEEE 754)

Más sobre tipos

• boolean es realmente un tipo, no es un entero

• null es una palabra clave

• los enteros no son apuntadores

• Chequeo adicional de tipos -> Es fuertemente tipeado.

Declaración de variables y constantes

• Todas las variables y constantes deben ser declaradas antes de su uso

• Para declarar constantes, se utiliza la palabra reservada final.

• <tipo> <identificador> [=] <valor>Ej:

Operadores: Aritméticos

• Binarios– + Suma

– - Resta

– * Multiplicación

– / División

– % Módulo

• Unarios– + Positivo

– - Negativo

– ++ Auto-incremento 1

– -- Auto-decremento 1

** Tanto el ++ como el -- pueden ser prefijos o postfijos

Operadores: Relacionales y Lógicos

• Relacionales– > Mayor

– < Menor

– >= Mayor o igual

– <= Menor o igual

– == Igual

– != Diferente

• Lógicos– && And

– || Or

– ! Not

Operadores: Asignación

• += v += 5 v = v + 5

• -= v -= 5 v = v - 5

• *= v *= 5 v = v * 5

• /= v /= 5 v = v / 5

• %= v %= 5 v = v % 5

• …

• No pueden sobrecargarse.

Operadores: Casting

• Permite la conversión de un tipo a otro• Desde un tipo pequeño a uno grande provoca pérdida

de información. • Sintaxis y ejemplo:

(nombre del tipo) valor

(int) (x/y)

Flujo de Control

• if (expr) instrucción else instrucción• for (expr; expr; expr) instrucción• while (expr) instrucción• do instrucción while (expr)• switch (expr) {…}

Clases

• Implementación simple de herencia

• Herencia múltiple de interfaces

• Información de tipos disponible a tiempo de corrida

• Todos los métodos son virtuales o estáticos

• No hay funciones, sólo métodos.

Ejemplo de clasesclass Car{

void beep(){System.out.println(“beep”);

}int maxSpeed(){

return 55;}

}

class Porsche extends Car{int maxSpeed(){

return 200;}

}

Ejemplo de clases (cont.)Car c = new Car();Porsche p = new Porsche();

c.beep();p.beep();

int s1 = c.maxSpeed();int s2 = p.maxSpeed();

Arreglos

• Son objetos

• Son dinámicos

• Se pasan por referencia

• Se chequean los límites

Arreglos (cont.)

int rgb[] = new int[3];rgb[0] = 255;rgb[1] = 100;rgb[2] = 100;

int avg = sum(avg) / rgb.length;

int err = rgb[4] //error

Vectores

• Implementan Arreglos de tamaño variable

• Constructores– Vector(), Vector(n), Vector(n,m); donde n es la

capacidad y m el incremento de la capacidad

• addElement();

• contains(Object); indexOf(Object);

• elementAt(int); setElementAt(Object, int);

• …

Strings

• Los Strings son objetos

• 16 bits UNICODESystem.out.println (“Hello World”);

String hello = “Hello”;String world = “World”;System.out.println (hello + “ “ + world);

int len = hello.length;String str = hello.substring(1,len);System.out.println(“j” + str);

char ch = hello.charAt(0);

Interfaces• Definen una interfaz que una clase debe

implementar

• Una clase puede implementar varias interfaces

Interfaces (cont.)interface Imprimible{

void imprimir();}

class Cosa implements Imprimible{void imprimir(){

System.out.println(“Cosa”);}

}

Lista Imprimiblevoid imprimirTodo(Imprimible list{

for (int i = 0 ; i < list.length; i++){ list[i].imprimir();

}

Imprimible lista[] = {new Cosa(),new OtraCosa()

}

imprimirTodo(lista);

Modificadores de Acceso

• public - Cualquiera puede tener acceso

• protected - Sólo pueden tener acceso las subclases

• private - Sólo puede tener acceso la clase misma.

• El acceso por defecto es por cualquier clase en el mismo paquete (package).

Restringiendo el acceso a las variables

class Punto{private int x, y;

public Punto(int x; int y){this.x = x;this.y = y;

}public getX(){

return x;}public getY(){

return y;}

}

Paquetes

• Permiten agrupar clases e interfaces.

• Los nombres son palabras separadas por puntos y se almacenan en directorios que coinciden con esos nombres.

Ejemplo:Los archivos Applet.java, AppletContext.java, AppletStub.java, AudioClip.java tienen la siguiente líneapackage java.lang.applet

Paquetes

• Se cargan con la palabra import

import java.Date;import java.awt.*;

• Si un archivo no pertenece a un paquete se coloca en el mismo directorio y se carga con la sentenciaimport MiClase

Paquetes• Java.lang - Object, Thread, Exception, String,

System, Number, …• java.util - Hashtable, Vector, BitSet, Date, Cache, …• java.io - InputStream, OutputStream,

BufferedInputStream, PrintStream, …• java.tools - Compilation, Debuggin, Documentation,

Profiling,…• Networking• Abstract window toolkit

Manejo de Errores• Soportado mediante excepciones.• El modelo usado es el de C++.

Try{a = 10; b = 0;result = a/b;return result;

}catch (ArithmeticException e){System.out.println(“División por cero”);return -1;

}finally{

System.out.println(“Siempre se ejecuta”);}

Manejo de Errores

• Generación de excepciones:– Implícita: El programa hace algo ilegal– Explícita: throw

throw ObjetoExcepcion;

class ExcepcionLimiteDeVelocidad extends Exception{}

try{if (velocidad > 300)

throw ExcepcionLimiteDeVelocidad;}catch(ExcepcionLimiteDeVelocidad e){

System.out.println(“Vas muy rápido”);return;

}

Manejo de Errores• Excepciones Predefinidas

– ArithmeticException– NullPointerException– ClassCastException– NegativeArraySizeException– OutOfMemoryException– ArrayIndexOutOfBoundsException– ...

Haciendo que funcione...

• Para compilar: javacclass prueba{

public static void main(String args[]){…}

}

• Para ejecutar: java

• Documentación automática: javadoc

Tags de javadoc

Tag Descripción Aplica a

@see Nombre de clase asociada Clases, métodos ovariables

@author Nombre del autor Clases

@version Versión Clases

@param Nombre y descripción delparámetro

Métodos

@return Descripción del valor deretorno

Métodos

@exception Nombre y descripción de laexcepción.

Métodos