58
Tecnologia de la Programació Miquel Mascaró Portells Pere A. Palmer Rodríguez TEMA 4: POO (Java)

TEMA 4: POO (Java)

  • Upload
    willow

  • View
    72

  • Download
    0

Embed Size (px)

DESCRIPTION

TEMA 4: POO (Java). UN POC DE CULTURA GENERAL. Abans de començar: Què és això dels objectes?, un llenguatge?, una metodologia?, una estratègia? És un paradigma de programació. Ens aporta: Poder usar el mateix codi moltes vegades. Reduir molt el percentatge d’errors de programa. - PowerPoint PPT Presentation

Citation preview

Page 1: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

TEMA 4:

POO (Java)

Page 2: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

UN POC DE CULTURA GENERAL

Page 3: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Abans de començar:– Què és això dels objectes?, un llenguatge?, una

metodologia?, una estratègia?– És un paradigma de programació.– Ens aporta:

• Poder usar el mateix codi moltes vegades.

• Reduir molt el percentatge d’errors de programa.

• Facilitar la tasca conjunta d’entitats diferents.

• Facilitar la creació de llibreries de programació.

• Facilitar la comprensió dels programes.

• La programació és més intuitïva.

– Desavantatges:• Producte final més pesat.

Page 4: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Llibre

Fàbrica: La classe

Llibre

Llibre

Elements: Les instàncies

.

.

.

OBJECTES

Page 5: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

ANEM A COMENÇAR

Page 6: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Esquema:– Què és el llenguatge Java?– Què necessitem per programar en Java?– Com compilar un programa amb Java?

• Aplicació

• Applet

– El llenguatge Java– La Programació Orientada a Objectes– El API de Java– La Interfícia Gràfica d’Usuari (Swing)

Page 7: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Esquema:– IDE: Entorn Integrat de Desenvolupament

– Netbeans

Page 8: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

La Programació Orientada a Objectes

• Què és un objecte (classe class)

Atributs (estat)

Mètodes (comportament)

Modular Ocultació

Page 9: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

La programació orientada a objectes

• La instànciaLa classe persona

Instàncies

Toni

Marina

Juan

missatge

Objecte: Classe o instància

Page 10: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

• L’herència

Cotxe: superclass

Ford Focus: subclass Seat Ibiza: subclass

Ford Focus vermell: subclass

Ford Focus negre: subclass

Seat Ibiza groc: subclass

abstract abstract

abstract

La programació orientada a objectes

Page 11: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

• Java i l’estructura de link dels arxius class Multi-plataforma Estructura de directoris

import paquet.nomjava;

La programació orientada a objectes

Page 12: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Codi font

Altres class

010001001010001001010001001010001001

Compilador de Javajavac

Codi class

010001001010001001010001001010001001

Màquina virtual de JavaWindows, UNIX, Mac, ...

Què és el llenguatge Java? (aplicació)

Page 13: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Codi font

Altres class

010001001010001001010001001010001001

Compilador de Javajavac

Codi class

010001001010001001010001001010001001

Què és el llenguatge Java? (applet)

Browser de www

Page 14: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Què necessitem per a programar en Java?

• Un entorn de desenvolupament Recomenat un J2SDK (Java 1.4 o superior)

• Un manual de referència (Api interactiu)

• Una consola o finestra de control de processos

• Un IDE de programació (NetBeans)

Page 15: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Compilar i executar un programa Java

• Compilació (aplicació i applet) javac <nombre>.java

• Execució (aplicació) java <nombre>

• Execució (applet) Browser

Page 16: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

El lenguaje Java

• Un inici: “Hola!” (aplicació)

• Un inici: “Hola!” (applet)

Page 17: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

• Els comentaris De bloc: /* .... */ De bloc amb documentació: /** .... */ De línia: // ...

• La classe y el mètode principal (class, main)

• La classe com a applet

El lenguaje Java

Page 18: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

• Important: classes i paquets (CLASSPATH)

• Subclasses (extends)

• Essential Java classes Maneig d’errors exceptions Multitasca threads Entrada / Sortida io class Atributs de programa arguments Atributs de sistema operatiu system class

El lenguaje Java

Page 19: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Orientació a Objectes

• Programes dissenyats amb elements que inter-actuen entre ells

• Cada element és un OBJECTE• Tots els objectes que són iguals formen part de la

mateixa CLASSE

Page 20: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

La programació orientada a objectes

• La instànciaLa classe persona

Instàncies

Toni

Marina

Juan

missatge

Objecte: Classe o instància

Page 21: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

La Programació Orientada a Objectes

• Què és un objecte (classe class)

Atributs (estat)

Mètodes (comportament)

Modular Ocultació

Page 22: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Components d’una classe

• Especificació: Què es pot fer amb la classe?

• Desenvolupament: Com es fa? (el codi)

1.- Pensar què ha de fer la classe?

2.- Escriure el codi que ho faci

Page 23: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Separació de l’especificació

• Part pública: El que es pot usar fora de la classe. La interfícia

• Part privada: Sols es pot usar des de la pròpia classe

Page 24: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Creació i destrucció d’objectes

• Una instància es crea a partir d’un constructor– Hi pot haver més d’un constructor

• L’operador new crea una instància d’un objecto que es pot associar a una referència

• Quan un objecto no te referències es destrueix automàticament

• El valor null significa cap objecte

Page 25: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Exercici

• Construir la classe NomPersona

InterfícieNomPersona()NomPersona(String nom, String llinatges)String llinatges()String nom ()String nom_i_llinatgess()String llinatges_i_nom ()String inicial_punt_llinatges()

Page 26: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

clase

•mètodes•atributs

Herència

• És un mecanisme per incorporar a una classe característiques d’una altra

clase•mètodes•atributs

Clase derivadasubclass

Clase basesuperclass

Page 27: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

• L’herència

Cotxe: superclass

Ford Focus: subclass Seat Ibiza: subclass

Ford Focus vermell: subclass

Ford Focus negre: subclass

Seat Ibiza groc: subclass

abstract abstract

abstract

La programació orientada a objectes

Page 28: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Accés a la classe base

• Mode d’accés protected. Es permet l’accés als atributs des de fora de la classe però sols per a les classes derivades i les del mateix paquet.

Page 29: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Comparativa d’accés

Mode

d’accés

la pròpia

classe

classes

derivadespackage

resta de

classes

public

protected

private

Page 30: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Classes abstractes

• Les que no poden tenir instànciesabstract class nom { … }

han de tenir com a mínim un mètode abstracte

abstract tipus nom ( … ){ … }

• Les classes derivades implementen TOTS els mètodes abstractes

Page 31: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Accés a la classe

• A sí mateixa: this• A la superclase (classe base): super

Page 32: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Exercici• Crear una jerarquia de classes com la següent

transport

marítim terrestre aeri

motortracció animal

motorvela motoraltres

carruatge bicicleta cotxe camió

Page 33: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Interfícies

• Una interfícia ve a ser una classe amb tots els mètodes abstract (abstractes)

• Una classe pot implementar interfícies– Tindrà que implementar l’especificació de

la interfícia

Page 34: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Els Applet

• java.applet Subministra les classes necessàries par a crear un applet i les classes que un applet utilitza par a comunicar-se amb el seu context

Page 35: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Els Objectes

• Totes les coses són Object

• java.lang.Object és la superclass de tots els objectes

Page 36: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Exercici

• Sobrecarregar el mètode finalize()

Page 37: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Exercici

• Construir una pila d’objectes

cap Interfícia

pila()

posar(Object)

Object treure()

String toString()

Page 38: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Excepcions

• Mecanisme per a permetre que els mètodes facin front a successos inesperats

• Es pot trobar el gestor d’excepcions adequat

main Mètode 1 Mètode 2

Mètode iMètode nexc

epció ?

?

Page 39: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Excepcions• Quan un mètode determina que hi ha un problema

llança (throw) una excepció• Un mètode pot provar d’executar una part del seu

codi (try), i pot agafar l’excepció llançada (catch) si fa falta

• Un mètode pot garantir que un bocí de codi s’executarà (finally) passi el que passi

• Un mètode ha d’indicar les excepcions que pot llançar (throws) durant la seva execució

tipus nom_mètode (arguments)throws llista_excepcions

{ … }

Page 40: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

La classe Exception

• Super-classe de totes las excepcions generades

• Cada mètode que pot generar excepcions ho ha d’indicar

• Es defineixen bloques de gestió de excepcions

Page 41: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Exercici

• Modificar la classe NomPersona– Si es demana sense inicialitzar → NombBuitException

Page 42: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Concurrència

• La concurrència és la forma de fer que es pugui realitzar més d’una cosa al mateix temps

Page 43: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Especificació de la concurrència

• Mitjançant herència: Thread• Mitjançant interfícia: Runnable

Page 44: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Thread A

Thread B

escriptura

Comunicació entre components

• Problema: Regions Crítiques

lectura

escriptura

lectura

RegióCrítica

Page 45: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Solució

• Exclusió Mútua: estableix zones a on en cada instant de temps sols hi pot accedir un thread

synchronized (Object) { … }

Page 46: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

El que subministra Object

• wait(): El thread espera• notify(): Un thread es desperta• notifyAll(): Tots desperten

Page 47: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

Application Program Interface

• Conjunt de classes, interfícies, …

• Permet construir amb rapidesa programes•java.lang: clases bàsiques•java.util: Per manejar informació•javax.swing: components per a poder crear programes Java en múltiples plataformes amb la mateixa funcionalitat•org.xml.sax: accés a documents XML des de Java

Page 48: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

La Interfícia Gràfica d’Usuari AWT/Swing

• L’API de programació de GUI Evolució del AWT (JDK 1.0 / 1.1) Part de les JFC del SDK Paquet javax.swing

• El primer programa amb swing

• La gestió dels esdeveniments

Page 49: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

• Un parell d’exemples més Look and feel

CheckBox

RadioButton

La Interfícia Gràfica d’Usuari AWT/Swing

Page 50: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

• Els esdeveniments

ListSelectionListenerCanvia una taula o llista de selecció.

FocusListenerUna component agafa el focus de teclat.

ComponentListenerUna component es fa visible.

MouseMotionListenerMoure el cursor sobre una component.

MouseListenerPicar el boto del ratolí quan el cursor està sobre una component.

WindowListenerTancar la finestra principal (main window).

ActionListenerPicar un botó, <return> en un camp de text, o triar un menu item.

Escolta associatAcció associada

La Interfícia Gràfica d’Usuari AWT/Swing

Page 51: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

• Swing admet canvis d’atributs en HTML

// Set fahrenheitLabel to new value and

// font color based on temperature. if (tempFahr <= 32)

{

fahrLabel.setText("<html><font color=blue>" + tempFahr + "&#176 Fahrenheit </font></html>");

}

• Swing admet els formats GIF i JPEG ImageIcon icon = new ImageIcon("images/convert.gif",

"Convert temperature");

...

convertTemp = new JButton(icon);

La Interfícia Gràfica d’Usuari AWT/Swing

Page 52: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

• El Layout Management

La Interfícia Gràfica d’Usuari AWT/Swing

Page 53: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

• Les components de Swing

• La meva primera interfícia

La Interfícia Gràfica d’Usuari AWT/Swing

Page 54: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

• Connexió més completa

• Encara més completa

La Interfícia Gràfica d’Usuari AWT/Swing

Page 55: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

• La problemàtica dels arxius

• Un exemple més eficient

La Interfícia Gràfica d’Usuari AWT/Swing

Page 56: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

• Els menús i scrolls

• Menús amb esdeveniments

La Interfícia Gràfica d’Usuari AWT/Swing

Page 57: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

• Aplicació per a simular una entrada de dades, de un DNI (amb fotografia inclosa) d’una llista de persones.

Usar las característiques de la POO. Herència, ocultació, objecte i instància;

Emprant un menú i un pannell d’entrada de dades hem de poder donar d’alta, de baixa i seleccionar persones d’una llista.

Hem de poder guardar i llegir la llista del disc.

Un exercici complet

Page 58: TEMA 4:  POO (Java)

Tecnologia de la Programació

Miquel Mascaró PortellsPere A. Palmer Rodríguez

Antoni Jaume CapóCristina S. Manresa Yee

• Es tracta de practicar l’ús del paquet java.util, java.io, javax.swing, java.awt i per suposat la POO.

Un exercici complet