600 likes | 757 Views
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.
E N D
TEMA 4: POO (Java)
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.
OBJECTES Elements: Les instàncies . . . Llibre Llibre Llibre Fàbrica: La classe
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)
Esquema: • IDE: Entorn Integrat de Desenvolupament • Netbeans
La Programació Orientada a Objectes • Què és un objecte (classe class) Atributs (estat) • Modular • Ocultació Mètodes (comportament)
La programació orientada a objectes • La instància La classe persona Juan Marina missatge Toni Instàncies Objecte: Classe o instància
La programació orientada a objectes • L’herència abstract Cotxe: superclass abstract abstract Ford Focus: subclass Seat Ibiza: subclass Ford Focus vermell: subclass Seat Ibiza groc: subclass Ford Focus negre: subclass
La programació orientada a objectes • Java i l’estructura de link dels arxius class • Multi-plataforma Estructura de directoris • import paquet.nomjava;
Màquina virtual de Java Windows, UNIX, Mac, ... Compilador de Java javac Codi font 010001001 010001001 010001001 010001001 010001001 010001001 010001001 010001001 Altres class Codi class Què és el llenguatge Java? (aplicació)
Compilador de Java javac Codi font 010001001 010001001 010001001 010001001 010001001 010001001 010001001 010001001 Browser de www Altres class Codi class Què és el llenguatge Java? (applet)
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)
Compilar i executar un programa Java • Compilació (aplicació i applet) javac <nombre>.java • Execució (aplicació) java <nombre> • Execució (applet) Browser
El lenguaje Java • Un inici: “Hola!” (aplicació) • Un inici: “Hola!” (applet)
El lenguaje Java • 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 • 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
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
La programació orientada a objectes • La instància La classe persona Juan Marina missatge Toni Instàncies Objecte: Classe o instància
La Programació Orientada a Objectes • Què és un objecte (classe class) Atributs (estat) • Modular • Ocultació Mètodes (comportament)
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
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
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
Exercici • Construir la classe NomPersona • Interfície • NomPersona() • NomPersona(String nom, • String llinatges) • String llinatges() • String nom () • String nom_i_llinatgess() • String llinatges_i_nom () • String inicial_punt_llinatges()
Herència • És un mecanisme per incorporar a una classe característiques d’una altra Clase derivada subclass Clase base superclass • clase • mètodes • atributs • clase • mètodes • atributs
La programació orientada a objectes • L’herència abstract Cotxe: superclass abstract abstract Ford Focus: subclass Seat Ibiza: subclass Ford Focus vermell: subclass Seat Ibiza groc: subclass Ford Focus negre: subclass
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.
Classes abstractes • Les que no poden tenir instàncies abstract classnom { … } han de tenir com a mínim un mètode abstracte abstract tipusnom ( … ){ … } • Les classes derivades implementen TOTS els mètodes abstractes
Accés a la classe • A sí mateixa: this • A la superclase (classe base): super
Nombre de places velocitat màxima Nombre de rodes Nombre d’animals Tipus de motor Exercici • Crear una jerarquia de classes com la següent transport marítim terrestre aeri vela motor altres motor tracció animal motor cotxe carruatge camió bicicleta
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
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
Els Objectes • Totes les coses són Object • java.lang.Object és la superclass de tots els objectes
Exercici • Sobrecarregar el mètode finalize()
cap Exercici • Construir una pila d’objectes • Interfícia • pila() • posar(Object) • Object treure() • String toString()
Mètode 1 Mètode 2 Mètode n Mètode i Excepcions • Mecanisme per a permetre que els mètodes facin front a successos inesperats • Es pot trobar el gestor d’excepcions adequat ? main ? excepció
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 { … }
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
Exercici • Modificar la classe NomPersona • Si es demana sense inicialitzar → NombBuitException
Concurrència • La concurrència és la forma de fer que es pugui realitzar més d’una cosa al mateix temps
Especificació de la concurrència • Mitjançant herència: Thread • Mitjançant interfícia: Runnable
Thread A lectura lectura escriptura escriptura Thread B Comunicació entre components • Problema: Regions Crítiques Regió Crítica
Solució • Exclusió Mútua: estableix zones a on en cada instant de temps sols hi pot accedir un thread synchronized (Object) { … }
El que subministra Object • wait(): El thread espera • notify(): Un thread es desperta • notifyAll(): Tots desperten
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
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
La Interfícia Gràfica d’Usuari AWT/Swing • Un parell d’exemples més • Look and feel • CheckBox • RadioButton
Acció associada Escolta associat Picar un botó, <return> en un camp de text, o triar un menu item. ActionListener Tancar la finestra principal (main window). WindowListener Picar el boto del ratolí quan el cursor està sobre una component. MouseListener Moure el cursor sobre una component. MouseMotionListener Una component es fa visible. ComponentListener Una component agafa el focus de teclat. FocusListener Canvia una taula o llista de selecció. ListSelectionListener La Interfícia Gràfica d’Usuari AWT/Swing • Els esdeveniments