java en 3 horas - visusalvis.usal.es/rodrigo/documentos/aso/java3h.pdf · define atributos...

24
Java en 3 horas Ampliación de Sistemas Operativos Rodrigo Santamaría

Upload: dinhthien

Post on 29-Oct-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Java en 3 horas

Ampliación de Sistemas Operativos

Rodrigo Santamaría

Page 2: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Generalidades

● Desarrollado por Sun en 1995● Hereda mucha de la sintaxis de C (1972)● Fuertemente tipado y orientado a objetos● Aplicaciones compiladas a bytecode● Gestión interna de la reserva de memoria● Desde 2007, el Java de Sun es software libre

● Salvo las bibliotecas de clases para ejecutar programas java

Page 3: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Bytecode

● Un programa Java no se compila a código de la máquina, si no a bytecode● Código intermedio entre el código máquina y el

lenguaje de alto nivel que permite que un programa Java corra en distintas plataformas sin recompilar

● Tan sólo es necesario tener instalada la Máquina Virtual de Java (JVM), que se encarga de ejecutar las instrucciones del bytecode

Page 4: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

JRE y JDK

● Java Runtime Environment (JRE)● Contiene la JVM en su versión más simple● Suele incluir las bibliotecas de clases estándar (API

de Java, o J2SE, hoy Java Standard Edition o JSE)– Vamos por la versión 1.6

● Java Development Kit (JDK)● JRE para desarrollar programas java● API de Java (código fuente libre)● Compilador de Java (javac), generador de

documentación (javadoc), visor de applets, depurador, etc.

Page 5: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Hola Mundo

clase

método

Tipos básicos como en C

javac Hola.javajava Hola

Page 6: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Sintaxis básica

● Control de flujo● Tipos básicos● Arrays● Operadores aritméticos● Formato de cadenas: variables entre texto

● String cad=“hola,”+nombre+”, buenos días”;

● Palabras clave particulares: package, class, public, private, extends, implements, this...

Idéntico a C

Page 7: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Entornos de Desarrollo Integrado (IDE)

● Integran bibliotecas, compilador, intérprete, depurador, editor y muchos otros complementos en un solo entorno:● Netbeans● Eclipse● IntelliJ IDEA● Anjuta

Page 8: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Organización

● Paquete: contenedor de clases (carpeta)● Clase: contenedor de métodos y atributos

(fichero)

● paquete2 dentro de paquete1: paquete1.paquete2

introduccion

Herencia.java

package introduccion

class Herencia { ... }

Page 9: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

package introduccion;

/** * Tabla de multiplicar * (Variables y atributos) */class Mult{int m; //Atributo de la clase Mult

public static void main(String[] args) { if (args.length!=1) { System.err.println("USO: java Mult <n>"); return; } int n=Integer.parseInt(args[0]);//Variable del método main for (int i=1;i<=10;i++) System.out.println(n+"x"+i+"="+n*i); }

...

}

Variables y atributos

n

m

Page 10: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Clases y objetos

● Clase: diseño abstracto de un concepto● Define atributos (variables de la clase)● Define métodos (operaciones de la clase)

● Objeto: cada instancia concreta de la clase● Permite dar valor a los atributos● Permite ejecutar los métodos

Page 11: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Clases y Objetosclase

objeto

Page 12: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Privacidad

● public: accesible desde fuera y dentro de la clase

● private: accesible sólo desde la clase

● protected (por defecto) accesible desde dentro de la clase o de clases hijas

● Atendiendo a la modularidad, es recomendable que los atributos de una clase sean privados o protegidos.

● Atendiendo a la claridad de código y eficiencia de recursos, los atributos públicos pueden ser útiles.

Page 13: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Herencia

Constructor por defecto~ super()

Vehículo

MotoCoche

Page 14: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Polimorfismopublic class Coche extends Vehiculo implements Cloneable{public Coche(int numPuertas, int velocidad, String color) { this.velocidad=velocidad; this.numPuertas=numPuertas; this.color=color; this.numRuedas=4; }public Coche(String color) { this.velocidad=0; this.numPuertas=3; this.color=color; this.numRuedas=4; }public Coche() { this.velocidad=0; this.numPuertas=3; this.color="negro"; this.numRuedas=4; }}

Varios métodos con el mismo nombre,siempre que los parámetros sean distintos

Page 15: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Métodos estáticospublic class Coche extends Vehiculo{public Coche(int numPuertas, int velocidad, String color) { this.velocidad=velocidad; this.numPuertas=numPuertas; this.color=color; this.numRuedas=4; }

...

public static String getAutorDeLaClase() { return "Rodrigo Santamaría"; }

}

En un método estático no podemos hacer uso de atributos o métodos no estáticos

public class Main {public static void main(String [] args) { System.out.println("Autor de la clase Coche: " +Coche.getAutorDeLaClase()); ... }

Page 16: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Gestión de la memoria● Reserva de memoria explícita (new)● Liberación automática (garbage collector)

● Detecta objetos no utilizados/accesibles y los borra● Puede reducir el rendimiento● Solicitud explícita con System.gc();

● Asignación de objetos por referencia● Asignación por valor: coche1=coche2.clone();● Sólo si Coche implementa Cloneable

– Y redefine el método clone() public Object clone()

{ Coche obj=new Coche(); obj.numPuertas=this.numPuertas; obj.velocidad=this.velocidad; obj.color=this.color; return obj; }

Page 17: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Control de ErroresEl método indica qué excepciones pueden ocurrirle

Y cuando ocurren, las lanza

Al usar métodos que pueden lanzar excepciones, deben estar en una sección try/catch, de forma que si se producen, las detectemos y gestionemos correctamente

Page 18: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Serialización

Page 19: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Concluyendo...● Organización en:

● paquetes, clases y objetos● atributos y métodos

● Programación● Orientada a objetos: modularidad, herencia● Gestión sencilla de memoria, errores, I/O

● Multiplataforma (bytecode + máquina virtual)● Sofware “libre”

● API oficial● Multitud de paquetes desarrollados

Page 20: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Documentación● Tutorial: http://java.sun.com/docs/books/tutorial/index.html

● Documentación: http://java.sun.com/javase/6/docs/api

● Paquetes en la red para todo tipo de propósitos

Page 21: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Ejercicio● Definir una clase Fruta y las clases hijas

Naranja y Manzana.● Deben tener los atributos genéricos

– peso, en kilos (atributo real)– hechaZumo, falso por defecto (atributo lógico)– La manzana debe tener también el atributo entero

numPepitas● Deben tener los métodos siguientes

– Constructor por defecto y constructor que permita al usuario iniciar todos los atributos

– Un método hacerZumo() que modifique el estado de la fruta si hechaZumo es falso.

Page 22: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Ejercicio

● Definir una clase Principal que:● Instancie dos frutas, una manzana y una naranja● Nos diga el peso de la manzana● Haga zumo de naranja

● Tratamiento de errores● El método hacerZumo debe lanzar una excepción si

se intenta hacer zumo de una fruta ya exprimida● La clase Principal debe capturar la excepción y

avisar al usuario

Page 23: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Ejercicio

● Serialización● La clase Fruta debe implementar un método

congelar(String lugar) que guarde la fruta en la ruta especificada por lugar

● Para ello deberá implementar la interfaz Serializable

● Utilizar el método para guardar el zumo de naranja en el fichero “helado” dentro de la carpeta “nevera”

Page 24: Java en 3 horas - VisUSALvis.usal.es/rodrigo/documentos/aso/java3h.pdf · Define atributos (variables de la clase) Define métodos (operaciones de la clase) ... (String lugar) que

Duke, la mascota de Java