• No se han encontrado resultados

Java en 2 horas. Rodrigo Santamaría

N/A
N/A
Protected

Academic year: 2021

Share "Java en 2 horas. Rodrigo Santamaría"

Copied!
26
0
0

Texto completo

(1)

+

Java en 2 horas

(2)

+

Generalidades

l

Desarrollado por Sun

en 1995

l

Hereda mucha de la sintaxis de C (1972)

l

Fuertemente tipado y orientado a objetos

l

Aplicaciones compiladas a bytecode

l

Gestión interna de la reserva de memoria

l

Desde 2007, el Java de Sun es software libre

l Salvo las bibliotecas de clases para ejecutar programas java (OpenJDK) l IcedTea es una versión de la OpenJDK totalmente libre

(3)

+

Bytecode

l

Un programa Java no se compila a código de la máquina, si

no a bytecode

l 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

l Tan sólo es necesario tener instalada la Máquina Virtual de

Java (JVM), que se encarga de ejecutar las instrucciones del

bytecode

(4)

+

JRE y JDK

l

Java Runtime Environment (JRE)

l Contiene la JVM en su versión más simple

l 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 l

Java Development Kit (JDK)

l JRE para desarrollar programas java l API de Java (código fuente libre)

l Compilador de Java (javac), generador de documentación (javadoc), visor de applets, depurador, etc.

(5)

+

Hola Mundo

clase método Tipos básicos como en C

javac Hola.java

java Hola

class Hola {

public static void main(String[] args)

{

System.out.println("Hola, mundo."); }

}

(6)

+

Sintaxis básica

l Control de flujo l Tipos básicos l Arrays l Operadores aritmético-lógicos

l Formato de cadenas: variables entre texto

l

String

cad=

“hola,”

+nombre+

”, buenos días”

;

l Palabras clave particulares:

package, class, public,

private, extends, implements, this

...

Idéntico a C

(7)

+

Entornos de Desarrollo Integrado (IDE)

l

Integran bibliotecas, compilador, intérprete, depurador,

editor y otros complementos en un solo entorno:

l Netbeans l Eclipse

l IntelliJ IDEA l Anjuta

l

En esta asignatura utilizaremos Eclipse

l Es gratuito y con licencia de software libre (EPL) l Tiene una instalación limpia, disponible en el aula l Ampliaciones (plugins) para desarrollo web

(8)

+

Paquetes y Clases

l Paquete: contenedor de clases (carpeta)

l Clase: contenedor de métodos y atributos (fichero)

l

paquete2 dentro de paquete1: paquete1.paquete2

introduccion Herencia.java package introduccion class Hola { ... } 8 Convención: en minúscula en mayúscula

(9)

+

Clases y objetos

9

l

Clase: diseño abstracto de un concepto

l Define atributos (variables de la clase) l Define métodos (operaciones de la clase)

l

Objeto: cada instancia concreta de la clase

l Permite dar valor a los atributos

(10)

+

public class Coche

{

float velocidad; int numPuertas;

String color;

public Coche(int numPuertas, float velocidad, String color)

{

this.velocidad=velocidad; this.numPuertas=numPuertas; this.color=color;

}

public int getNumPuertas()

{

return numPuertas;

}

public void acelerar(int nuevaVelocidad)

{

if(nuevaVelocidad>velocidad)velocidad=nuevaVelocidad;

} }

Clases y Objetos

clase objeto 10 import Coche

public class Main {

public static void main(String [] args)

{

Coche miFerrari=new Coche(3,0, ”rojo”);

System.out.println(” Mi coche tiene "

+miFerrari.getNumPuertas()+” puertas”); miFerrari.acelerar(100);

} }

(11)

+

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); } ... } n m

Variables y atributos

Alcance

11

(12)

+

Privacidad

l

public: accesible desde fuera y dentro de la clase

l

private: accesible sólo desde la clase

l

protected (por defecto) accesible desde dentro de la

clase o de clases hijas

l

Atendiendo a la modularidad, es recomendable que

los atributos de una clase sean privados o protegidos.

l

Atendiendo a la claridad de código y eficiencia de

recursos, los atributos públicos pueden ser útiles.

(13)

+

Herencia

Constructor por defecto ~ super() Vehículo Moto Coche 13

(14)

+

Clases abstractas

l

No se pueden instanciar en objetos

l

Palabra clave abstract antes de class

(15)

+

Polimorfismo

public 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

(16)

+

Métodos estáticos

public 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()); ...

}

(17)

+

Gestión de la memoria

l

Reserva de memoria explícita (new)

l

Liberación automática (garbage collector)

l Detecta objetos no utilizados/accesibles y los borra l Puede reducir el rendimiento

l Solicitud explícita con System.gc();

l

Asignación de objetos por referencia

l Para asignación por valor: coche1=coche2.clone(); l 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;

}

(18)

+

Control de Errores

El 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 18

(19)

+

Serialización

(20)

+

Concluyendo...

l

Organización en:

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

l

Programación

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

l

Multiplataforma (bytecode + máquina virtual)

l

Sofware “libre”

l API oficial

l Multitud de paquetes desarrollados

(21)

+

Documentación

l

Tutorial:

http://java.sun.com/docs/books/tutorial/index.html l

Documentación:

http://java.sun.com/javase/8/docs/api

l

Paquetes en la red para todo tipo de propósitos

(22)

+

Ejercicio

l

Definir una clase Fruta y las clases hijas Naranja y Manzana.

l 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

l 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.

(23)

+

Ejercicio

l

Definir una clase Principal que:

l Instancie dos frutas, una manzana y una naranja l Nos diga el peso de la manzana

l Haga zumo de naranja

l

Tratamiento de errores

l El método hacerZumo debe lanzar una excepción si se intenta hacer zumo de una fruta ya exprimida

l La clase Principal debe capturar la excepción y avisar al usuario

(24)

+

Ejercicio

l

Serialización

l La clase Fruta debe implementar un método congelar(String

lugar) que guarde la fruta en la ruta especificada por lugar

l Para ello deberá implementar la interfaz Serializable

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

cont.

(25)
(26)

Duke, la mascota de Java

Referencias

Documento similar

• El professor o la professora escriu en la pissarra el nom de 15 productes i cada grup ha de buscar quant val aquest producte en el supermercat que li ha tocat.. • Després

Hola niños, en este capítulo hablaremos respecto al cuidado del agua ya que es una parte esencial para el desarrollo de la vida, el agua la podemos encontrar en

También podrás elegir nuevos cursos con un nivel más avanzado para seguir especializándote.. Contenido

Monsieur Jourdain, en bata y gorro de dormir, dos criados, el Maestro de música, el Maestro de Baile, el Discípulo, Músicos y Bailarines.. JOURDAIN:

Al comenzar la clase la profesora Patricia entra con los estudiantes, les informa que lo primero que van a hacer es saludarse con la canción “Hola, ¿qué tal?”, la profesora toca los

hola como estan les cuento que yo he bajado 25 kilos en un lapso de 6 meses tomando terfamex al pricipio no creia que pudiera bajar ni 2 kilos pero alas 2 semanas de estar

La tabla muestra la cantidad de fichas que Emilia debe entregar a cada jugador de acuerdo con la cantidad de jugadores?. Si hay 8 jugadores, ¿cuántas fichas debe repartir Emilia

El registro 4, porque de los registros 1, 2 y 3 se deduce la relación entre los pesos de las cajas verdes y blancas y la relación entre los pesos de las cajas blancas y cafés..