Introducció a Java - dEIC

Anuncio
Java
Introducció a Java
G. Navarro
Dep. d’Enginyeria de la Informació i les Comunicacions
Escola Tècnica Superior d’Enginyeries
Universitat Autònoma de Barcelona
university-log
G. Navarro
Java Intro
1 / 20
Java
Outline
1
Introducció a Java
Una classe en Java
Organització
Hello World
Més característiques sobre Java
Java Threads
Java IO
Arrays a Java
Strings a Java
Javadoc
Referències
university-log
G. Navarro
Java Intro
2 / 20
Java
class org hi more threads io array str doc ref
Introducció a Java I
Llenguatge d’alt nivell orientat a objectes.
university-log
G. Navarro
Java Intro
3 / 20
Java
class org hi more threads io array str doc ref
Introducció a Java I
Llenguatge d’alt nivell orientat a objectes.
Portable (basat en màquina virtual):
university-log
G. Navarro
Java Intro
3 / 20
Java
class org hi more threads io array str doc ref
Introducció a Java I
Llenguatge d’alt nivell orientat a objectes.
Portable (basat en màquina virtual):
university-log
G. Navarro
Java Intro
3 / 20
Java
class org hi more threads io array str doc ref
Introducció a Java I
Llenguatge d’alt nivell orientat a objectes.
Portable (basat en màquina virtual):
Incorpora mecanismes de seguretat.
university-log
G. Navarro
Java Intro
3 / 20
Java
class org hi more threads io array str doc ref
Introducció a Java II
Fortament tipat. (strong static typing)
university-log
G. Navarro
Java Intro
4 / 20
Java
class org hi more threads io array str doc ref
Introducció a Java II
Fortament tipat. (strong static typing)
Sintaxi, operadors i control de flux molt similar a C++.
university-log
G. Navarro
Java Intro
4 / 20
Java
class org hi more threads io array str doc ref
Introducció a Java II
Fortament tipat. (strong static typing)
Sintaxi, operadors i control de flux molt similar a C++.
Totalment OO.
university-log
G. Navarro
Java Intro
4 / 20
Java
class org hi more threads io array str doc ref
Introducció a Java II
Fortament tipat. (strong static typing)
Sintaxi, operadors i control de flux molt similar a C++.
Totalment OO.
Tipus primitius: boolean, char (16bits), byte (8bits), int,
float, double, . . .
university-log
G. Navarro
Java Intro
4 / 20
Java
class org hi more threads io array str doc ref
Introducció a Java II
Fortament tipat. (strong static typing)
Sintaxi, operadors i control de flux molt similar a C++.
Totalment OO.
Tipus primitius: boolean, char (16bits), byte (8bits), int,
float, double, . . .
Multithreading.
university-log
G. Navarro
Java Intro
4 / 20
Java
class org hi more threads io array str doc ref
Introducció a Java II
Fortament tipat. (strong static typing)
Sintaxi, operadors i control de flux molt similar a C++.
Totalment OO.
Tipus primitius: boolean, char (16bits), byte (8bits), int,
float, double, . . .
Multithreading.
No hi ha punters.
university-log
G. Navarro
Java Intro
4 / 20
Java
class org hi more threads io array str doc ref
Introducció a Java II
Fortament tipat. (strong static typing)
Sintaxi, operadors i control de flux molt similar a C++.
Totalment OO.
Tipus primitius: boolean, char (16bits), byte (8bits), int,
float, double, . . .
Multithreading.
No hi ha punters.
No hi ha gestió explícita de memòria (garbage collector).
university-log
G. Navarro
Java Intro
4 / 20
Java
class org hi more threads io array str doc ref
Una classe a Java
class A {
int x;
A(int number){
this.x = number;
}
void suma(int b){
this.x = this.x + b;
}
}
university-log
G. Navarro
Java Intro
5 / 20
Java
class org hi more threads io array str doc ref
Una classe a Java
class A {
Constructor. No hi ha destructor!.
int x;
A(int number){
this.x = number;
}
void suma(int b){
this.x = this.x + b;
}
}
university-log
G. Navarro
Java Intro
5 / 20
Java
class org hi more threads io array str doc ref
Una classe a Java
class A {
int x;
Constructor. No hi ha destructor!.
Creació d’objectes:
A a = new A(2);
A(int number){
this.x = number;
}
void suma(int b){
this.x = this.x + b;
}
}
university-log
G. Navarro
Java Intro
5 / 20
Java
class org hi more threads io array str doc ref
Una classe a Java
class A {
Constructor. No hi ha destructor!.
Creació d’objectes:
int x;
A a = new A(2);
A(int number){
this.x = number;
}
Accés a mètodes:
a.suma(4);
void suma(int b){
this.x = this.x + b;
}
}
university-log
G. Navarro
Java Intro
5 / 20
Java
class org hi more threads io array str doc ref
Una classe a Java
class A {
Creació d’objectes:
int x;
A a = new A(2);
A(int number){
this.x = number;
}
Accés a mètodes:
void suma(int b){
this.x = this.x + b;
}
}
Constructor. No hi ha destructor!.
a.suma(4);
Herència simple. No múltiple.
class B extends A{
...
}
university-log
G. Navarro
Java Intro
5 / 20
Java
class org hi more threads io array str doc ref
Organització del codi
Cada classe =⇒ un fitxer (normalment).
university-log
G. Navarro
Java Intro
6 / 20
Java
class org hi more threads io array str doc ref
Organització del codi
Cada classe =⇒ un fitxer (normalment).
Package: grup de classes interrelacionades. java.io,
java.net.
university-log
G. Navarro
Java Intro
6 / 20
Java
class org hi more threads io array str doc ref
Organització del codi
Cada classe =⇒ un fitxer (normalment).
Package: grup de classes interrelacionades. java.io,
java.net.
Accés a components:
university-log
G. Navarro
Java Intro
6 / 20
Java
class org hi more threads io array str doc ref
Organització del codi
Cada classe =⇒ un fitxer (normalment).
Package: grup de classes interrelacionades. java.io,
java.net.
Accés a components:
Classe: public, package.
university-log
G. Navarro
Java Intro
6 / 20
Java
class org hi more threads io array str doc ref
Organització del codi
Cada classe =⇒ un fitxer (normalment).
Package: grup de classes interrelacionades. java.io,
java.net.
Accés a components:
Classe: public, package.
Membres: private, protected, public, package.
university-log
G. Navarro
Java Intro
6 / 20
Java
class org hi more threads io array str doc ref
Organització del codi
Cada classe =⇒ un fitxer (normalment).
Package: grup de classes interrelacionades. java.io,
java.net.
Accés a components:
Classe: public, package.
Membres: private, protected, public, package.
Altres:
university-log
G. Navarro
Java Intro
6 / 20
Java
class org hi more threads io array str doc ref
Organització del codi
Cada classe =⇒ un fitxer (normalment).
Package: grup de classes interrelacionades. java.io,
java.net.
Accés a components:
Classe: public, package.
Membres: private, protected, public, package.
Altres:
Classe: abstract (virtual), final (cons), . . .
university-log
G. Navarro
Java Intro
6 / 20
Java
class org hi more threads io array str doc ref
Organització del codi
Cada classe =⇒ un fitxer (normalment).
Package: grup de classes interrelacionades. java.io,
java.net.
Accés a components:
Classe: public, package.
Membres: private, protected, public, package.
Altres:
Classe: abstract (virtual), final (cons), . . .
Membres: static, abstract, final, . . .
university-log
G. Navarro
Java Intro
6 / 20
Java
class org hi more threads io array str doc ref
Hello World
public class HelloWorld{
public static final void main(String[] args){
System.out.println("Hello World");
}
}
university-log
G. Navarro
Java Intro
7 / 20
Java
class org hi more threads io array str doc ref
Hello World
public class HelloWorld{
public static final void main(String[] args){
System.out.println("Hello World");
}
}
university-log
G. Navarro
Java Intro
7 / 20
Java
class org hi more threads io array str doc ref
Hello World
public class HelloWorld{
public static final void main(String[] args){
System.out.println("Hello World");
}
}
university-log
G. Navarro
Java Intro
7 / 20
Java
class org hi more threads io array str doc ref
Més sobre Java
Interfícies.
university-log
G. Navarro
Java Intro
8 / 20
Java
class org hi more threads io array str doc ref
Més sobre Java
Interfícies.
public interface Sumador{
public int suma(int a, int b);
}
class A implements Sumador{
...
public int suma(int a, int b){
return a + b;
}
}
university-log
G. Navarro
Java Intro
8 / 20
Java
class org hi more threads io array str doc ref
Més sobre Java
Interfícies.
Polimorfisme.
university-log
G. Navarro
Java Intro
8 / 20
Java
class org hi more threads io array str doc ref
Més sobre Java
Interfícies.
Polimorfisme.
Persona pep = new Professor();
university-log
G. Navarro
Java Intro
8 / 20
Java
class org hi more threads io array str doc ref
Més sobre Java
Interfícies.
Polimorfisme.
Sobrecarrega
university-log
G. Navarro
Java Intro
8 / 20
Java
class org hi more threads io array str doc ref
Més sobre Java
Interfícies.
no hi ha sobrecarrega d’operadors,
si hi ha sobrecarrega d’mètodes.
Polimorfisme.
Sobrecarrega
university-log
G. Navarro
Java Intro
8 / 20
Java
class org hi more threads io array str doc ref
Encara més sobre Java
Referències
university-log
G. Navarro
Java Intro
9 / 20
Java
class org hi more threads io array str doc ref
Encara més sobre Java
Referències
Paràmetres es passen per valor sempre.
university-log
G. Navarro
Java Intro
9 / 20
Java
class org hi more threads io array str doc ref
Encara més sobre Java
Referències
Paràmetres es passen per valor sempre.
Manipulem objectes amb referències, no hi ha punters.
university-log
G. Navarro
Java Intro
9 / 20
Java
class org hi more threads io array str doc ref
Encara més sobre Java
Referències
Paràmetres es passen per valor sempre.
Manipulem objectes amb referències, no hi ha punters.
Excepcions: blocs try-catch.
university-log
G. Navarro
Java Intro
9 / 20
Java
class org hi more threads io array str doc ref
Encara més sobre Java
Referències
Paràmetres es passen per valor sempre.
Manipulem objectes amb referències, no hi ha punters.
Excepcions: blocs try-catch.
Més robust i rígid que C++ =⇒ throws
public int suma(int a) throws OverflowException{
...
}
university-log
G. Navarro
Java Intro
9 / 20
Java
class org hi more threads io array str doc ref
Encara més sobre Java
Referències
Paràmetres es passen per valor sempre.
Manipulem objectes amb referències, no hi ha punters.
Excepcions: blocs try-catch.
Més robust i rígid que C++ =⇒ throws
public int suma(int a) throws OverflowException{
...
}
Excepcions estan jerarquitzades.
university-log
G. Navarro
Java Intro
9 / 20
Java
class org hi more threads io array str doc ref
Java Threads
Cada thread es subclasse de la classe Thread.
university-log
G. Navarro
Java Intro
10 / 20
Java
class org hi more threads io array str doc ref
Java Threads
Cada thread es subclasse de la classe Thread.
Ha de sobreescriure el mètode run().
university-log
G. Navarro
Java Intro
10 / 20
Java
class org hi more threads io array str doc ref
Java Threads
Cada thread es subclasse de la classe Thread.
Ha de sobreescriure el mètode run().
Altres mètodes: start(), yield(), sleep(), . . . .
university-log
G. Navarro
Java Intro
10 / 20
Java
class org hi more threads io array str doc ref
Java Threads
Cada thread es subclasse de la classe Thread.
Ha de sobreescriure el mètode run().
Altres mètodes: start(), yield(), sleep(), . . . .
public class MyThread extends Thread{
...
public void run(){
...
}
}
MyThread a = new MyThread();
a.start();
university-log
G. Navarro
Java Intro
10 / 20
Java
class org hi more threads io array str doc ref
Java Threads
Cada thread es subclasse de la classe Thread.
Ha de sobreescriure el mètode run().
Altres mètodes: start(), yield(), sleep(), . . . .
public class MyThread extends Thread{
...
public void run(){
...
}
}
MyThread a = new MyThread();
a.start();
Es pot fer d’altres maneres (implementant la interfície
Runnable).
university-log
G. Navarro
Java Intro
10 / 20
Java
class org hi more threads io array str doc ref
Java IO: java.io.*
InputStream: productor de bytes.
OutputStream: consumidor de bytes.
university-log
G. Navarro
Java Intro
11 / 20
Java
class org hi more threads io array str doc ref
Java IO: java.io.*
InputStream: productor de bytes.
OutputStream: consumidor de bytes.
university-log
G. Navarro
Java Intro
11 / 20
Java
class org hi more threads io array str doc ref
Java IO: java.io.*
InputStream: productor de bytes.
OutputStream: consumidor de bytes.
Rader/Writer: streams orientats a caràcters.
university-log
G. Navarro
Java Intro
11 / 20
Java
class org hi more threads io array str doc ref
Java IO: java.io.*
InputStream: productor de bytes.
OutputStream: consumidor de bytes.
Rader/Writer: streams orientats a caràcters.
BufferedReader reader = new FileReader("hola.txt");
reader.readLine();
university-log
G. Navarro
Java Intro
11 / 20
Java
class org hi more threads io array str doc ref
Java IO: Example
try{
FileInputStream fis = new FileInputStream("origen.txt");
FileOutputStream fos = new FileOutputStream("desti.txt");
int c;
while((c=fis.read()) != −1){
fos.write(c);
}
fis.close();
fos.close();
}catch(FileNotFoundException fnfe){
...
}catch(IOException ioe){
...
}
university-log
G. Navarro
Java Intro
12 / 20
Java
class org hi more threads io array str doc ref
Java IO: Decorators
Els streams es poden encadenar per anar tractant el flux.
university-log
G. Navarro
Java Intro
13 / 20
Java
class org hi more threads io array str doc ref
Java IO: Decorators
Els streams es poden encadenar per anar tractant el flux.
OutputStream out;
out = new GZIPOutputStream(new FileOutputStream("out−file"));
university-log
G. Navarro
Java Intro
13 / 20
Java
class org hi more threads io array str doc ref
Java IO: Decorators
Els streams es poden encadenar per anar tractant el flux.
OutputStream out;
out = new GZIPOutputStream(new FileOutputStream("out−file"));
university-log
G. Navarro
Java Intro
13 / 20
Java
class org hi more threads io array str doc ref
Arrays
Arrays:
int[] a; //declara variable com array de int
a = new int[10]; //crea l’array amb 10 elements
for (int i=0; i < a.length; i++){
//processar a[i]
}
int[] b = {1, 2, 3, 4, 5}; //declara, crea i inicialitza
university-log
G. Navarro
Java Intro
14 / 20
Java
class org hi more threads io array str doc ref
Arrays
Arrays:
int[] a; //declara variable com array de int
a = new int[10]; //crea l’array amb 10 elements
for (int i=0; i < a.length; i++){
//processar a[i]
}
int[] b = {1, 2, 3, 4, 5}; //declara, crea i inicialitza
També permet arrays multidimensionals
university-log
G. Navarro
Java Intro
14 / 20
Java
class org hi more threads io array str doc ref
Arrays
Arrays:
int[] a; //declara variable com array de int
a = new int[10]; //crea l’array amb 10 elements
for (int i=0; i < a.length; i++){
//processar a[i]
}
int[] b = {1, 2, 3, 4, 5}; //declara, crea i inicialitza
També permet arrays multidimensionals
Java disposa d’una API molt bona de Collections.
university-log
G. Navarro
Java Intro
14 / 20
Java
class org hi more threads io array str doc ref
String
Classe String:
String str1 = new String("M’agrada Java");
String str2 = "I love Java";
university-log
G. Navarro
Java Intro
15 / 20
Java
class org hi more threads io array str doc ref
String
Classe String:
String str1 = new String("M’agrada Java");
String str2 = "I love Java";
immutable,
university-log
G. Navarro
Java Intro
15 / 20
Java
class org hi more threads io array str doc ref
String
Classe String:
String str1 = new String("M’agrada Java");
String str2 = "I love Java";
immutable,
no cal terminació d’string,
university-log
G. Navarro
Java Intro
15 / 20
Java
class org hi more threads io array str doc ref
String
Classe String:
String str1 = new String("M’agrada Java");
String str2 = "I love Java";
immutable,
no cal terminació d’string,
unicode,
university-log
G. Navarro
Java Intro
15 / 20
Java
class org hi more threads io array str doc ref
String
Classe String:
String str1 = new String("M’agrada Java");
String str2 = "I love Java";
immutable,
no cal terminació d’string,
unicode,
concatenació: +
university-log
G. Navarro
Java Intro
15 / 20
Java
class org hi more threads io array str doc ref
String
Classe String:
String str1 = new String("M’agrada Java");
String str2 = "I love Java";
immutable,
no cal terminació d’string,
unicode,
concatenació: +
Mètodes de la classe String:
getBytes(), split(regexp), i molts més
university-log
G. Navarro
Java Intro
15 / 20
Java
class org hi more threads io array str doc ref
String
Classe String:
String str1 = new String("M’agrada Java");
String str2 = "I love Java";
immutable,
no cal terminació d’string,
unicode,
concatenació: +
Mètodes de la classe String:
getBytes(), split(regexp), i molts més
Comparació:
str1.equals(str2);
str1.equalsIgnoreCase(str2);
university-log
G. Navarro
Java Intro
15 / 20
Java
class org hi more threads io array str doc ref
Javadoc: Documentació de l’API aka la Bíblia
Documentació de l’API de Java amb Javadoc
university-log
G. Navarro
Java Intro
16 / 20
Java
class org hi more threads io array str doc ref
Javadoc d’un package
university-log
G. Navarro
Java Intro
17 / 20
Java
class org hi more threads io array str doc ref
Javadoc d’una classe
university-log
G. Navarro
Java Intro
18 / 20
Java
class org hi more threads io array str doc ref
Referències
Informació sobre la pràctica (links, fòrums, . . . ):
ccd-dc0.uab.es/xarxesI/.
university-log
G. Navarro
Java Intro
19 / 20
Java
class org hi more threads io array str doc ref
Referències
Informació sobre la pràctica (links, fòrums, . . . ):
ccd-dc0.uab.es/xarxesI/.
Java Home Page:
java.sun.com: J2SE 5.0.
university-log
G. Navarro
Java Intro
19 / 20
Java
class org hi more threads io array str doc ref
Referències
Informació sobre la pràctica (links, fòrums, . . . ):
ccd-dc0.uab.es/xarxesI/.
Java Home Page:
java.sun.com: J2SE 5.0.
Internet està ple de tutorials the Java:
http://programacion.com/java/,
The Java Tutorial.
...
university-log
G. Navarro
Java Intro
19 / 20
Java
class org hi more threads io array str doc ref
Referències
Informació sobre la pràctica (links, fòrums, . . . ):
ccd-dc0.uab.es/xarxesI/.
Java Home Page:
java.sun.com: J2SE 5.0.
Internet està ple de tutorials the Java:
http://programacion.com/java/,
The Java Tutorial.
...
Llibres:
Thinking in Java (Bruce Eckel).
...
university-log
G. Navarro
Java Intro
19 / 20
Java
class org hi more threads io array str doc ref
Happy Hacking!
university-log
G. Navarro
Java Intro
20 / 20
Documentos relacionados
Descargar