Programmazione in Java (8)

Slides:



Advertisements
Presentazioni simili
Il paradigma Object Oriented
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unit à B2 Gli oggetti: concetti avanzati.
Unified Modeling Language
Recupero debito quarto anno Secondo incontro
Informatica Recupero debito quarto anno Terzo incontro.
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Programmazione object oriented in C++
Le gerarchie di tipi.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
SISSIS MODULO DI JAVA PER LA CLASSE IV DELL’ITI
Fondamenti di Informatica
Programmazione in Java (3)
9/12/2004Laboratorio di Programmazione - Luca Tesei1 Ereditarietà
Package, Interfacce, Ereditarietà Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Fisica Computazionale I - 41 APPROFONDIMENTI Dobbiamo approfondire a questo punto le nostre conoscenze delle regole di Java, definendo in modo rigoroso.
Introduzione al linguaggio Java
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Derivazione tra classi
Overriding.
Gerarchia di classi Java
Dichiarazione di classi Programmazione Corso di laurea in Informatica.
1 Le gerarchie di tipi. 2 Supertipi e sottotipi 4 un supertipo –class –interface 4 può avere più sottotipi –un sottotipo extends il supertipo ( class.
Lab. Calc. 2005/06 Ereditarietà. Lab. Calc. 2005/06 Scopo di questa lezione: Imparare a creare nuove classi ereditando da classi già esistenti. Capire.
1 laboratorio di calcolo II AA 2003/04 quarta settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
Ereditarietà. Concetti principali Ereditarietà e (overriding) di metodi Dynamic dispatch e polimorfismo Ereditarietà e costruttori Livelli di accesso.
Ereditarietà. Concetti principali Ereditarietà e (overriding) di metodi Dynamic dispatch e polimorfismo Ereditarietà e costruttori Livelli di accesso.
1 Ereditarietà Una classe può essere derivata da una classe esistente usando la sintassi: public, protected e private specificano il tipo di accesso ai.
Lezione XI Laboratorio di Programmazione. Ereditarieta Fondamentale proprieta dei linguaggi OO. Permette di specificare un nuova classe derivata da unaltra.
Java base IV: Java e la programmazione O.O.
Componenti A.Natali Marzo Oggetti u Un oggetto possiede stato, funzionamento e identita'. u Struttura e funzionamento di oggetti simili sono.
CLASSI ASTRATTE L’ereditarietà porta riflettere sul
CLASSI ED EREDITARIETÀ Come si è visto, è cruciale che la gerarchia rispecchi la realtà del mondo ma a volte ciò contraddice principi di efficienza Esempio:
IL TEMA DELLA RIUSABILITÀ Si vuole riusare tutto ciò che può essere riusato (componenti, codice, astrazioni) Non è utile né opportuno modificare codice.
IL TEMA DELLA RIUSABILITÀ Si vuole riusare tutto ciò che può essere riusato (componenti, codice, astrazioni) Non è utile né opportuno modificare codice.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Programmazione in Java (9) Mauro Lorenzutti. 30/09/2005Corso Java - Mauro Lorenzutti2 Scaletta I/O Evoluto Serializzazione Comunicazioni via socket JUnit.
AlgoLab - Ereditarieta' Ereditarietà e polimorfismo in Java Laboratorio di Algoritmi 02/03 Prof. Ugo de Liguoro.
Ereditarietà e Polimorfismo
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Esercitazione Ereditarietà Polimorfismo. Entita’ Geometrica PuntoCerchioPoligono TriangoloQuadrilatero Rettangolo Quadrato.
Programmazione ad oggetti
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
1 Osservazioni Generali Struttura di programma Gerarchia di classi: overloading, overriding, e dispatching Analisi ed esecuzione Modificabilità e condivisione.
Fondamenti di Informatica II Ingegneria Informatica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
1 Gerarchie e polimorfismo: liste. 2 Generalizzare le liste di interi  List 4 lista di oggetti –non modificabile 4 vorremo poi definire un sottotipo.
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini,
1 Semantica Operazionale di un frammento di Java: le regole di transizione estensione (con piccole varianti) di quella in Barbuti, Mancarella, Turini,
Fondamenti di Informatica 2 Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Esercitazione del 7 marzo 2008 Ereditarieta’. Esercizio: soluzione Implementare la seguente specifica che definisce un tipo di dato Libro.
Cose nuove di Java (prima a chiacchiera, poi formalmente)
LIP: 2 Maggio 2008 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
La Programmazione ad Oggetti
Corso di Algoritmi e Strutture Dati con Laboratorio Richiami di Java – parte II.
La programmazione ad oggetti
28/12/2001package 1 Package Pacchetti e interfacce.
1 Diagramma delle Classi. 2 Diagramma delle classi Grafico che fornisce una vista strutturale (statica) del sistema in termini di classi attributi operazioni.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Transcript della presentazione:

Programmazione in Java (8) Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Scaletta Ripasso ereditarietà Esercitazioni Solidi Persone I/O Serializzazione 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Ripasso ereditarietà Concetti base Modificatori di visibilità Overriding La classe Object Classi astratte Polimorfismo 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Concetti base L’ereditarietà è l’atto di derivare una nuova classe da una già esistente (esempio progetto casa) Lo scopo è il riutilizzo del software Le variabili e i metodi ereditati possono essere usati nella classe derivata come se fossero locali Gerarchie di classi OK Ereditarietà multipla NO!!!! 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Un esempio Mammiferi, cavalli e cani 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Nomi La classe Mammifero è definita: Classe base Superclasse Classe padre Le classi Cavallo e Cane sono dette: Classe figlio Sottoclasse 30/09/2005 Corso Java - Mauro Lorenzutti

Modificatori di visibilità public a() protected b() c() private d() 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti public e private I metodi e le variabili public sono ereditati da tutte le sottoclassi e accessibili ovunque I metodi e le variabili private NON vengono mai ereditate e sono visibili solamente all’interno della classe in cui vengono dichiarati 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti protected I metodi e le variabili protected sono ereditati da tutte le sottoclassi, indipendentemente dal package di appartenenza. Ogni classe nello stesso package può accedere ai membri protected di una classe. 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Default Nessun modificatore specificato Sono ereditati solamente dalle sottoclassi che appartengono allo stesso package della superclasse. Sono visibili da tutte le classi all’interno dello stesso package. 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti P x = new P() C1 y = new C1() C2 z = new C2() Esempio class P public a() protected b() c() private d() class C2 class AltraClasse2 class C1 class AltraClasse1 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Esempio 2 Il metodo c() ha visibilità di default, quindi: C1 eredita c() C2 NON eredita c() AltraClasse1 può invocare il metodo x.c() AltraClasse2 NO! 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Overriding Si parla di overriding quando una classe figlio definisce un metodo con lo stesso nome e lo stesso prototipo della classe padre. Mascherare le variabili non è consigliabile 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti La classe Object È la classe base in Java Se una classe non estende direttamente un’altra classe (extends) in automatico estende la classe Object Due metodi particolari: equals() toString() 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Classi astratte Una classe astratta rappresenta un concetto generico partendo dal quale le sottoclassi possono definire una propria implementazione Una classe astratta NON può essere istanziata Una classe derivata da una astratta deve ridefinire tutti i metodi astratti della classe padre, altrimenti sarà essa stessa una classe astratta. 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Esempio abstract public class Poligono { int numLati; String tipo = "Poligono"; public Poligono(int nl){ numLati = nl; } public int numeroDiLati(){return numLati;} public String tipo(){ return tipo;} abstract public double area(); abstract double perimetro(); } 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Polimorfismo Polimorfismo: avere più forme Un riferimento polimorfico è un riferimento che può puntare a oggetti di tipi differenti in momenti differenti Interfacce Ereditarietà 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Un esempio Poligono elenco[] = new Poligono[4]; elenco[0] = new Rettangolo(3.2, 4.5); elenco[1] = new Quadrato(5); elenco[2] = new Triangolo(3,4,5); elenco[3] = new TriangoloEquilatero(3); for (int i = 0; i<elenco.length; i++) System.out.println("Il perimetro del " + elenco[i].tipo() + " è " + elenco[i].perimetro()); 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Dynamic binding Nell’esempio precedente i metodi tipo() e perimetro() vengono collegati solamente durante l’esecuzione Si parla di Late binding (collegamento ritardato) Dynamic binding (collegamento dinamico) 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Esercizi Solidi Estendere il package “geometria” della lezione scorsa Persone Esempio in sospeso della lezione scorsa I/O Vedi slide seguente 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti I/O Progettare e implementare una gerarchia di classi per astrarre il device di I/O per la classe Persona Input da: Tastiera File Output su Video 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Serializzazione Perché Concetti base Un po’ di codice Esercizio 30/09/2005 Corso Java - Mauro Lorenzutti

Persistenza degli oggetti Quando un programma termina tutti gli oggetti muoiono con lui Serve un meccanismo per salvare gli oggetti per farli “vivere” indipendentemente dal programma che li ha generati Questo fenomeno è detto persistenza degli oggetti 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Serializzazione Per ottenere la persistenza degli oggetti si può codificarli in un file e poi leggerli  molto scomodo Si può serializzarli e scriverli in un file o inviarli attraverso la rete Serializzare un oggetto vuol dire rappresentarlo come una sequenza di byte Questa rappresentazione in byte può essere usata per ricostruire l’oggetto 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Serializzare su file FileOutputStream fos = new FileOutputStream(nomefile); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(oggetto); 30/09/2005 Corso Java - Mauro Lorenzutti

De-serializzare da file Il processo inverso: da un flusso di byte ricostruire l’oggetto originale FileInputStream fis = new FileInputStream(nomefile); ObjectInputStream ois = new ObjectInputStream(fis); TipoOggetto oggetto = (TipoOggetto)ois.readObject(); 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Attenzione! L’oggetto da serializzare e tutti i suoi attributi devono essere predisposti alla serializzazione public class Persona implements Serializable{ private static final long serialVersionUID = 1L; 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Escludere dal flusso È possibile in certi casi avere la necessità di escludere una variabile dal flusso di byte private transient String password; 30/09/2005 Corso Java - Mauro Lorenzutti

Corso Java - Mauro Lorenzutti Esercizio Estendere la gerarchia di I/O per includere una classe che permetta il salvataggio su file di dati serializzati e la successiva lettura e ricostruzione di questi 30/09/2005 Corso Java - Mauro Lorenzutti