El lenguaje de programación Java

Texto completo

(1)

FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS

Departament d’Arquitectura de Computadors

El lenguaje de programación Java

Java

(I)

o

Orientado a objetos

o

Ejecutado por una maquina virtual

– Independiente de la plataforma

o

Multithreaded

o

Orientado a la red

– Soporte para un gran numero de protocolos: HTTP, FTP, etc..

o

Facilidades para la programación

– Gestión automática de la memoria

(2)

FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS Departament d’Arquitectura de Computadors - UPC 3 v.2004.02

Java

(II)

o

Coherencia

– Todo en Java es un objeto

– Todos los objetos heredan de Object

o

Gran cantidad de librerías

– Estandarizadas

– Documentación

o

Permite la integración con sistemas ya existentes

– Otros lenguajes: JNI

– Interficies gráficas: AWT, SWING.

Java 1 y 2

o

JDK

– Java Developer Kit

o

Diferencias entre Java1 y Java2

– Mejoras en las interficies gráficas (Swing)

– Amplias mejoras en las librerías

– Métodos

deprecated

o

Porque versión van?

(3)

FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS Departament d’Arquitectura de Computadors - UPC 5 v.2004.02

Programación orientada a objetos (POO)

o

La orientación a objetos se “inventó” para programar

simuladores de sistemas fisicos complejos.

o

Luego se vio que iba muy bien para implementar interficies

gráficas.

o

Al final, se ha demostrado que la POO es útil en cualquier

sistema físico o no, que se pueda “modelar” en

componentes más o menos independientes.

Orientación a objetos

(I)

o

Un objeto es básicamente:

– Los datos (variables) que representan una “entidad” en el mundo

real.

(4)

FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS Departament d’Arquitectura de Computadors - UPC 7 v.2004.02

Orientación a objetos

(II)

o

Separando los “objetos” tanto a nivel “lógico” como a nivel

de ficheros se simplifica el mantenimiento del programa y

se aumenta su reusabilidad.

o

Esto es algo que cuando llevamos tiempo programando

hacemos instintivamente. Sin embargo, la POO nos fuerza

a ello.

Un ejemplo de clase

(I)

Persona

int dni

String nombre

String direccion

int telefono

void mostrarPorPantalla()

(5)

FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS Departament d’Arquitectura de Computadors - UPC 9 v.2004.02

Un ejemplo de clase

(II)

Nombre del

tipo de objeto

(clase)

Datos (atributos)

Funciones (métodos)

Persona

int dni

String nombre

String direccion

int telefono

void mostrarPorPantalla()

Un ejemplo de clase

(III)

public class Persona {

int dni;

String nombre;

String direccion;

int telefono;

public int obtenerDni() {

return dni;

}

public void modificarDni(int dni) {

this

.dni=dni;

}

public void mostrarPorPantalla() {

System.out.println("DNI: "+dni);

System.out.println("Nombre: "+nombre);

System.out.println("Direccion: "+direccion);

System.out.println("Telefono: "+telefono);

}

}

(6)

FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS Departament d’Arquitectura de Computadors - UPC 11 v.2004.02

Un ejemplo de objeto

(I)

public class miObjeto {

public static void main(String args[]){

Persona juan = new Persona();

// Acceso a atributos

juan.dni = 12341234;

juan.nombre = "Juan";

juan.direccion = "EPSC";

juan.telefono = 12345;

// Acceso a métodos

juan.obtenerDni();

juan.modificarDni(12345678);

juan.mostrarPorPantalla();

}

}

Visibilidad de los objetos

o

Una clase contiene todos las variables y funciones de un objeto... y

absolutamente nada más.

o

La “visibilidad” de un atributo o metodo se especifica poniendo un

modificador delante

public

: cualquier objeto puede llamar esa función o ver/modificar esa variable.

private

: sólo el propio objeto puede llamar a esa función (es una función

interna) o modificar ese valor.

protected

: sólo puede ese objeto y sus “hijos”. Es el que se utiliza

normalmente. El concepto de hijo se vera al tratar la herencia.

o

El constructor es la función que se llama automáticamente al crear

una variable de ese tipo. Aquí es donde se inicializan las variables.

(7)

FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS Departament d’Arquitectura de Computadors - UPC 13 v.2004.02

FSD: Entorno de desarrollo

o

SUN SDK 1.4

http://java.sun.com/j2se/1.4/download.html

o

RealJ

http://www.realj.com/

W98: autoexec.bat o en una ventana de MSDOS

set JAVA_HOME=C:\j2sdk1.4.0

set CLASSPATH=.;c:\j2sdk1.4.0\lib

set PATH=%PATH%;c:\j2sdk1.4.0\bin

W2000: variables de entorno o en una ventana de MSDOS

RealJ / Preferences/ JDK Location

C:\j2sdk1.4.0

PrimerPrograma.java

/**

* Este es tu primer programa en Java.

* Imprime un saludo por pantalla.

*/

import java.*;

/* La clase principal se denomina PrimerPrograma */

public class PrimerPrograma

{

public static void main(String args[ ]){

//Parte ejecutiva del programa

System.out.println("\n Hola aprendiz de programador en Java ");

}

(8)

FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS Departament d’Arquitectura de Computadors - UPC 15 v.2004.02

Compilar / interpretar

o

Compilar (bytecode, *.class)

– En modo línea de comandos:

javac PrimerPrograma.java

– En RealJ

File / New Project

File / New Java Source File o Project / Add Files

Set as main

Build / Compile

o

Interpretar (ejecutar)

– En modo línea de comandos:

java PrimerPrograma

– En RealJ

Build / Run Application o Build / Run with Console

Herencia

(I)

o

Supongamos que tenemos una

clase que nos define una

persona.

o

Queremos las clases Alumno y

Profesor.

o

Ambos son personas y seria

perfecto no tener que volver a

escribir (y pensar) todas las

variables y funciones que ya

hay en la clase Persona.

Persona

int dni

String nombre

String direccion

int telefono

void mostrarPorPantalla()

(9)

FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS Departament d’Arquitectura de Computadors - UPC 17 v.2004.02

Herencia

(II)

Persona

int dni

String nombre

String direccion

int telefono

int obtenerDni()

void modificarDni(int dni)

void mostrarPorPantalla()

Alumno

void nuevaNota(int nota)

void listadoNotas()

void mostrarPorPantalla()

int[] notas

Profesor

void mostrarPorPantalla()

Asignatura[] asigs

Ejemplo de herencia

(I)

public class Persona {

protected int dni;

protected String nombre;

protected String direccion;

protected int telefono;

public int obtenerDni() {

return dni;

}

public void modificarDni(int dni) {

this

.dni=dni;

}

public void mostrarPorPantalla() {

System.out.println("DNI: "+dni);

System.out.println("Nombre: "+nombre);

System.out.println("Direccion: "+direccion);

System.out.println("Telefono: "+telefono);

}

}

(10)

FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS Departament d’Arquitectura de Computadors - UPC 19 v.2004.02

Ejemplo de herencia

(II)

public class Alumno

extends

Persona {

protected int[] notas;

public void nuevaNota (int nota) {

// Añade una nueva nota

}

public void listadoNotas() {

System.out.println("Notas:");

for(int i=0;i<notas.length;i++) {

System.out.println(notas[i]);

}

}

public void mostrarPorPantalla() {

super

.mostrarPorPantalla();

listadoNotas();

}

}

Herencia

(III)

o

Java sólo tiene

herencia simple

. Esto es, una clase sólo

puede heredar de una clase.

o

Además, si una clase no hacemos que herede de alguna

otra clase, Java automáticamente hace que herede de la

clase

Object

.

(11)

FUNDAMENTOS DE SISTEMAS DISTRIBUIDOS Departament d’Arquitectura de Computadors - UPC 21 v.2004.02

Polimorfismo

o

En cualquier lugar donde nos pida una variable de tipo Persona,

podemos usar una de tipo Alumno o Profesor.

o

La ventaja es que al llamar a una función se ejecutara la “versión

correcta” dependiendo de la clase concreta.

o

Si hacemos un vector de Personas podremos almacenar en él

tanto Personas, como Alumnos y Profesores.

o

Con el operador instanceof podemos comprobar el tipo de un

objeto.

if(o instanceof Alumno) {

// es un alumno

}

Figure

Actualización...

Referencias

Actualización...