tema 4: poo (java)
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 PresentationTRANSCRIPT
Tecnologia de la Programació
Miquel Mascaró PortellsPere A. Palmer Rodríguez
Antoni Jaume CapóCristina S. Manresa Yee
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
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.
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
Tecnologia de la Programació
Miquel Mascaró PortellsPere A. Palmer Rodríguez
Antoni Jaume CapóCristina S. Manresa Yee
ANEM A COMENÇAR
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)
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
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ó
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
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
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
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ó)
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
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)
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
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)
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
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
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
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
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ó
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
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
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
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()
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
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
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.
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
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
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
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ó
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
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
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
Tecnologia de la Programació
Miquel Mascaró PortellsPere A. Palmer Rodríguez
Antoni Jaume CapóCristina S. Manresa Yee
Exercici
• Sobrecarregar el mètode finalize()
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()
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ó ?
?
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
{ … }
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
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
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
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
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
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) { … }
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
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
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
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
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
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 + "° 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
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
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
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
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
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
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
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