Sviluppo Applicazioni Mobile Lezione 11. Dr. Paolo Casoto, Ph.D

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Sviluppo Applicazioni Mobile Lezione 11. Dr. Paolo Casoto, Ph.D - 2012"

Transcript

1 + Sviluppo Applicazioni Mobile Lezione 11

2 + Credits I lucidi di questa lezione sono stati preparati da: Professor Stefano Mizzaro Professor Paolo Coppola e sono stati modificati e completati dal Dr. Paolo Casoto nel Sono rilasciati con licenza Creative Commons Attribuzione, non commerciale e non opere derivate.

3 + Cosa vediamo nella lezione di oggi Approfondiamo le tematiche di ereditarietà e polimorfismo analizzando nello specifico il caso dei costrutti messi a disposizione da Java. In particolare proseguiremo nel nostro percorso: Incapsulamento: creare nuovi tipi di dato combinando attributi ed operazioni (o caratteristiche e comportamenti, seguendo la definizione di B. Eckel). Occultamento dell implementazione: rendo privati i dettagli delle mie classi, accessibili solo mediante una interfaccia pubblica Ereditarietà: consente di rappresentare un oggetto come istanza di molteplici tipi, organizzati all interno di una gerarchia. Polimorfismo: consente di differenziare il comportamento di oggetti istanza di classi che derivano da una sovraclasse comune.

4 + Un caso particolare di polimorfismo Consideriamo il caso seguente: La classe A, classe base, all interno del suo costruttore invoca il proprio metodo metodo1 La classe B estende da A. Ciò comporta che ad ogni invocazione de costruttore di B sia eseguita, per prima, l invocazione del relativo costruttore di A. La classe B sovrascrive il metodo metodo1 ereditato da A Domanda: quale versione del metodo metodo1 sarà invocata dal costruttore di A quando istanzio un nuovo oggetto della classe B? Quello di A o quello di B? Ma gli attributi propri di B non sono ancora stati allocati, come posso utilizzarli? Risposta: viene eseguito il metodo della classe B con eventuale lancio di eccezioni!!!

5 + Su quali metodi non posso applicare il polimorfismo? Tutti i metodi di istanza con modificatore private Tutto ciò che è private è anche final e soggetto a binding a tempo di compilazione. Il tutto è abbastanza logico non posso ridefinire quello che non vedo Se in una sottoclasse B definisco un metodo public con la stessa firma di un metodo private della classe base A funziona ma non è un overriding, semplicemente sono due metodi differenti. I metodi statici solo relativi alle classi e non agli oggetti e non sono soggetti a polimorfismo. Se effettuo un upcasting ed invoco un metodo statico p presente sia nella sovraclasse A sia nella sottoclasse B, sarà eseguito il metodo A.p()

6 + Riprendiamo l esempio geometrico Gerarchia di figure con metodo polimorfico draw()

7 + Figura con area()? Aggiungiamo un metodo area() alla gerarchia Ma come calcolare l area di una figura generica? Quadrati, cerchi e punti lo sanno fare Cerchio c = new Cerchio(); Figura f = new Cerchio(); System.out.println(c.area()); System.out.println(f.area());

8 + Figura senza area()? Una figura generica non sa calcolare la propria area. Quindi niente area() in Figura! Ma se non metto area() in Figura Cerchio c = new Cerchio(); Figura c1 = new Cerchio(); Figura f = new Figura(); System.out.println(c.area()); System.out.println(f.area()); System.out.println(c1.area()); cannot resolve symbol symbol : method area () location: class Figura f.area(); ^

9 + Problema: Figura e area() Se metto area() in Figura Non so cosa deve fare Se non metto area() in Figura No polimorfismo, perché non posso essere sicuro che le istanze di Figura (o sottoclasse) hanno area() Soluzione: classi e metodi astratti

10 + Figura e area() astratti Soluzione: area() in Figura è astratto (non invocabile) anche Figura è astratta (non istanziabile) Astratto (metodo o classe) = non completamente specificato Figura funge da idea, da protocollo, ma non fornisce una implementazione reale

11 + In Java abstract Se class dichiaro Figura{ abstract double area(); } erchio c = new Cerchio(); igura poi f = posso new scrivere Cerchio(); ystem.out.println(c.area()); ystem.out.println(f.area()); Ma non posso scrivere f = new Figura(); System.out.println(f.area()); System.out.println((Figura)c.area());

12 + Classi e metodi astratti 1/2 Una classe astratta non può essere istanziata Metodo astratto: metodo privo di implementazione, il cui corpo è sostituito da ; Se una classe contiene metodi astratti allora deve essere astratta ( Pensate a cosa succederebbe invocando un metodo astratto Non è detto che una classe astratta contenga esclusivamente metodi astratti Se una classe è astratta allora deve contenere metodi astratti

13 + Classi e metodi astratti 2/2 Grazie all introduzione delle classi astratte posso scomporre il mio problema ed avere una maggiore genericità. Alcune classi della mia gerarchia sono lasciate non specificate Posso specializzarne il comportamento nelle classi che le estendono Impedire la creazione di istanze di una classe Permette il polimorfismo Si può parlare alla classe base astratta In Java le classi astratte sono caratterizzate dal modificatore abstract, utilizzato anche per i metodi astratti. Non posso utilizzare abstract insieme a static (relativo a metodi ed attributi di classe), insieme a final ed insieme a private (altrimenti se nessuno lo vede chi lo implementa J )

14 + Curiosità Ma se voglio impedire che la mia classe sia estesa da qualche altra classe? Posso utilizzare il modificatore final, che ne impedisce l estensione. Tutti i metodi di una classe final sono, implicitamente, final. Ma se voglio impedire che un metodo della mia classe sia sovrascritto da qualche altra classe? Posso utilizzare il modificatore final, che ne impedisce l estensione. Come impedire che la mia classe sia istanziata? Dichiaro il costruttore private e vincolo l accesso alle istanze della classe ad un metodo statico. Pattern Singleton (Singoletto), utilizzato, ad esempio, nel caso di oggetti per i quali è necessario garantire l unicità E.g. spooler di stampa

15 + Interfacce Le interfacce portano il concetto di astrazione precedentemente descritto ai massimi termini. Una interfaccia non fornisce alcuna implementazione ed alcun attributo. Tutta l implementazione è a carico delle classe che implementa una interfaccia. Solo metodi di istanza astratti Eventuali campi statici e costanti In alcuni linguaggi sono anche descritte come protocolli (e.g. Objective C) Una classe A può implementare l interfaccia I: class A implements I {...} A definisce tutti i metodi di I

16 + Figure scalabili (1/3) interface Scalabile { public void riduci (int scala); } abstract class Figura {...//tutto come prima... } class Punto extends Figura {...//tutto come prima... }

17 + Figure scalabili (2/3) class Cerchio extends Figura implements Scalabile {...//tutto come prima... public void riduci (int scala) { raggio = raggio * scala / 100; } } class Quadrato extends Figura implements Scalabile {...//tutto come prima... public void riduci (int scala){... } }

18 + Figure scalabili (3/3) Scalabile s1 = new Quadrato(); Ora posso scrivere Scalabile s2 = new Cerchio(); s1.riduci(50); Scalabile[] s = new Scalabile[10];... s[i] = new Cerchio(); s[j] = new Quadrato();... s[i].riduci(50); s[j].riduci(20);

19 + Interfacce Oltre alle classi: interfacce Classi che implementano interfacce devono implementarne i metodi: se C implements I siamo sicuri (anche il compilatore!) che gli oggetti di C hanno i metodi di I (oppure C è astratta) abstract class NonSoComeRidurmi implements Scalabile{ // senza riduci() }

20 + Interfacce ed eredità Un interfaccia J può ereditare da un interfaccia I Una classe (non astratta) C che implementa J deve implementare i metodi anche di I

21 + Eredità singola e multipla Eredità singola Ogni classe è sottoclasse diretta di un unica superclasse Eredità multipla Le classi possono avere più superclassi dirette

22 + Eredità multipla: pro Gerarchie nel mondo reale: non sempre a eredità singola Cerchio sottoclasse di Figura Scalabile (oggetti che possono ridursi) Cerchio eredita i metodi sia di Figura sia di Scalabile

23 + e contro Se sia B sia C definiscono m() Da chi viene ereditato m()? Quale m() va eseguito alla chiamata x.m()?

24 + Eredità multipla in Java? Java: eredità singola Parimenti in C# C++: eredità multipla In Java l eredità multipla rientra dalla finestra grazie alle interfacce class A extends B, C {... }

25 + Eredità multipla con interfacce interface I1 {...} interface I2 {...} class C implements I1, I2 {... } interface I3 extends I1, I2 {} class D implements I3 {...}

26 + Eredità multipla con interfacce Quindi: Un interfaccia può estendere più interfacce Una classe può implementare più interfacce (interfacce!= classi astratte) Perché? No eredità multipla dell implementazione

27 + Utilità delle interfacce (1/3) Un altra possibilità per il polimorfismo Parlare alla classe base = interfaccia Es.: array di oggetti scalabili Scalabile[] s = new Scalabile[10]; s[i] = new Cerchio(); s[j] = new Quadrato();... s[i].riduci(50); s[j].riduci(20);

28 + Utilità delle interfacce (2/3) Definizione costanti Oltre a metodi d istanza astratti, anche attributi! Però static e final (ossia: costanti) Più comodo di CostantiUtili.PI interface CostantiUtili{ public static final double PI = ; public static final double E = ; } class C implements CostantiUtili{... PI... E... }

29 + Utilità delle interfacce (3/3) Marcatori di oggetti, per sapere se un oggetto è istanza di una classe che implementa un interfaccia Ad esempio la clonabilita è gestita con interface Cloneable { } Per vericare se una classe è clonabile: if (x instanceof Cloneable) {... operazioni di duplicazione... } else System.out.println("Non clonabile"); In maniera similare Java gestisce, ad esempio, la serializzazione degli oggetti su file.

30 + Utilità classi astratte - bis (1/2) Pattern comune: Classi astratte che forniscono implementazioni parziali o banali di un interfaccia Esempio: Classe C che deve implementare un interfaccia I con tanti metodi ma è interessata solo a uno di questi (gli altri vuoti) Se c è una classe adattatore Ne vedremo un esempio parlando di interfacce grafiche Java quando andremo a conoscere le classi WindowListener e WindowAdapter

31 + Utilità classi astratte - bis (2/2) interface I { public void m1(); public void m2();... public void mn(); } class C3 implements I { class public C2 void implements m1(){} I { class public C1 void implements m1(){} m2(){} I { public... void m1(){...} m2(){} public... public void void m2(){} mn(){...}... public } void mn(){...} public } void mn(){} } abstract class A implements I { public void m1(){} public void m2(){}... public void mn(){} } class Cn extends A { public void mn(){...} class } C2 extends A { public void m2(){...} class } C1 extends A { public void m1(){...} }

32 + Conversioni di tipo e cast Con i tipi predefiniti: Promozione (implicita): da byte ad int Cast (esplicito): da int a byte Con le classi Promozione (implicita): da B ad A Cast (esplicito): da A a B Implicito: non crea problemi A B

33 + Cast rivisitato: upcast Upcast/Promozione: Di solito implicita Ok perché non pericolosa Figura[] f = new Figura[ ]; f[i] = new Punto(); f[i] = (Figura)new Punto();

34 + Cast rivisitato: downcast Esplicito e pericoloso Se so che f[i] è un Punto, posso chiamare i suoi metodi, previo cast Ma se poi f[i] non è un Punto, errore in esecuzione A volte downcast non fino in fondo alla gerarchia (array di Object, contenente una Figura ) Figura[] f = new Figura[ ]; f[i] = new Punto(); f[j] = new Cerchio(); f[i].setx(2.0); f[j].setx(2.0); (Punto)f[i].setX(2.0); (Punto)f[j].setX(2.0);

35 + Classi interne Possibilità di definire una classe all interno di un altra classe Consente di raggruppare classi logicamente interconnesse in modo da poterne controllare la visibilità fra le stesse. La particolarità delle classi interne è quella di poter comunicare con la classe che la circonda senza dover ricorrere a lunghe catene di delega e riducendo la conascenza fra le classi stesse. E.g.: un oggetto A deve passare ad un altro oggetto B se stesso per consentire a B di modificarne le proprietà al verificarsi di un evento. Le classi interne includono un riferimento implicito alla classe esterna che le contiene. Posso allocare un oggetto di una classe interna solo a partire da un oggetto della classe esterna precedentemente inizializzato

36 + Classi interne Per ottenere il riferimento all oggetto della classe esterna dall interno di una classe interna è necessario utilizzare la sintassi: NomeDellaClasseEsterna.this Per creare un oggetto della classe interna da un terzo oggetto, dato il riferimento all oggetto della classe esterna b, devo utilizzare la sintassi: NomeDellaClasseEsterna. NomeDellaClasseInterna = b.new NomeDellaClasseInterna (); E.g.: Outer out = new Outer; Outer.Inner in = out.new Inner(); Con Outer classe esterna ed Inner definita al suo interno

37 + Classi interne E possibile definire anche classi interne con visibilità limitata all interno di un metodo della classe esterna o di un singolo blocco del metodo stesso. E possibile definire anche classi anonime, il cui corpo ed i cui metodi sono definiti al volo in fase di istanziazione dell oggetto. Si utilizza di solito per i gestori degli eventi associati alle componenti grafiche nelle GUI. Ove non sia necessario disporre di un legame fra classi interne ed esterne è possibile definire le cosiddette classi innestate: definite come static, non necessitano di un oggetto della classe esterna per essere istanziate. Non possono accedere in modo implicito alle proprietà di istanza della classe esterna Infatti non si mantiene un riferimento ad una istanza dell oggetto esterno

38 + Esempio class Classe { class Membro extends A {... } public void m() { class Locale extends A {... } Membro m = new Membro(); Locale l = new Locale(); A x = (new A(){... }); } } Anche se A è un interfaccia! (extends!= implements)

39 + Incapsulamento Abbiamo visto come l incapsulamento sia una delle proprietà principali che hanno portato alla programmazione OO Incapsulare in una unità separata elementi funzionali coerenti Incapsulamento su più livelli Livello 0: codice grezzo Livello 1: procedure, operazioni (programmazione strutturata) Livello 2: oggetti, costituiti da un insieme di proprietà ed operazioni coerenti e la cui implementazione può essere nascosta Livello 3: package o namespace Livello 4: componenti, moduli e ma non esageriamo per ora, limitiamoci ai primi 3 livelli.

40 + Metriche legate all incapsulamento Ventaglio: numero di riferimenti a procedure (L1) presenti all interno di una linea di codice (L0) Quanto la specifica linea di codice è dipendente da altre entità del sistema con livello di incapsulamento maggiore. Coesione: quanto le righe di codice (L0) che costituiscono una procedura (L1) sono necessarie per implementare le finalità della procedura stessa. Accoppiamento: misura delle connessioni fra due procedure (L1) Questo per la programmazione strutturata. E nel mondo OO?

41 + Metriche legate all incapsulamento nel mondo OO Coesione di classe: misura del grado di coesione fra le operazioni e gli attributi che costituiscono una classe e le finalità della classe stessa. Accoppiamento di classe: misura del grado di interdipendenza fra due classi A e B. Più in generale, dati due elementi software A e B (indipendentemente dal livello di incapsulamento), possiamo parlare di Conascenza quando: Una modifica ad A può richiedere la conseguente modifica di B Una modifica ad un terzo elemento può comportare la necessità di modificare A e B.

42 + Conascenza Due tipologie di conascenza sono evidenziabili: Conascenza statica: Di nome Di tipo Di convenzione: costanti, formati, et al. Di algoritmo Di posizione: posso invertire l ordine di A e B in compilazione? Conascenza dinamica: Temporale Di valore: invarianti da rispettare Di identità Di esecuzione: posso invertire l ordine di A e B in esecuzione?

43 + Conascenza e contronascenza La conascenza emerge quando due entità sw devono concordare su una proprietà, ad esempio il nome. Vi sono evidenti casi in cui invece due entità sw devono necessariamente divergere l uno dagli altri E.g.: dichiarazione di variabili già dichiarate nell ambito dello scope. Concetto di CONTRONASCENZA: necessità di diversità La conascenza è inevitabile nel software. E importante tuttavia ridurla quanto più entro i limiti dell incapsulamento Incapsulare, nascondere l implementazione ed esporre protocolli pubblici Ridurre la conascenza residua presente al di fuori dellincapsulamento

44 + I problemi derivanti dalla conascenza Lo sviluppatore 1 sviluppa una classe A per rappresentare i vettori di elementi che ha una caratteristica: i dati sono rappresentati in ordine inverse rispetto all ordine di inserimento Tale caratteristica non è mai stata documentata ma lo sviluppatore 1 ne fa uso in più punti del proprio sistema perché peculiare della implementazione di A Dopo anni si decide di rimpiazzare la classe A con una nuova classe B che, pur adottando lo stesso protocollo, non presenta la medesima caratteristica. Cosa succederà al software? Cosa fareste nei passi del programmatore 1? Qui non è un problema di codice, bensì di documentazione!!!

45 + Domande??? Grazie a tutti per l attenzione

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1. OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione,

Dettagli

Programmazione a Oggetti Lezione 10. Ereditarieta

Programmazione a Oggetti Lezione 10. Ereditarieta Programmazione a Oggetti Lezione 10 Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare

Dettagli

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe prencipe@di.unipi.it. È qualcosa che abbiamo già visto varie volte

Introduzione. Java. Composizione. Esempio -- composizione. G. Prencipe prencipe@di.unipi.it. È qualcosa che abbiamo già visto varie volte Java riutilizzo delle classi G. Prencipe prencipe@di.unipi.it Introduzione Una delle caratteristiche fondamentali in Java è il riutilizzo del codice Ci sono due modi per ottenerlo Creare oggetti di classi

Dettagli

Parola chiave extends

Parola chiave extends Il Linguaggio Java Ereditarietà Ereditarietà L'ereditarietà permette di creare nuove classi sulla base di classi esistenti In particolare, permette di riusare il codice (metodi e campi); aggiungere nuovi

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T1 B2 Significato e proprietà della OOP 1 Prerequisiti Concetto ed elementi della comunicazione Allocazione e deallocazione della memoria Compilazione di un programma Spazio

Dettagli

Modulo 4: Ereditarietà, interfacce e clonazione

Modulo 4: Ereditarietà, interfacce e clonazione Modulo 4: Ereditarietà, interfacce e clonazione Argomenti Trattati: Classi, Superclassi e Sottoclassi Ereditarietà Ereditarietà ed Attributi Privati Override super Ereditarietà e Costruttori Polimorfismo

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

!#$%&&'()#*%+%+!#$',,'()#*%+ -)%*&'&'+'$.)+-$$%&&) !#$%&&'(%)'*+%,#-%#.'%&'#/0)-+#12+3,)4+56#7+#.')8'9 !"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&)!"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9 Slide 1 Paradigmi di Programmazione! Un linguaggio supporta uno stile di programmazione se

Dettagli

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011. daniele.sgandurra@iit.cnr.it

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011. daniele.sgandurra@iit.cnr.it Programmazione II Lezione 4 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 30/09/2011 1/46 Programmazione II Lezione 4 30/09/2011 Sommario 1 Esercitazione 2 Panoramica della Programmazione Ad Oggetti 3

Dettagli

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore Relazioni tra oggetti e classi : Generalizzazione Fondamenti di Informatica II 20. Laboratorio 6 Collegamenti e associazioni Le relazioni di tipo generalizzazione (specializzazione), servono per poter

Dettagli

Object Oriented Programming

Object Oriented Programming OOP Object Oriented Programming Programmazione orientata agli oggetti La programmazione orientata agli oggetti (Object Oriented Programming) è un paradigma di programmazione Permette di raggruppare in

Dettagli

Introduzione a Classi e Oggetti

Introduzione a Classi e Oggetti Introduzione a Classi e Oggetti Oggetto: concetto astratto Entità di un programma dotata di tre proprietà caratteristiche stato informazioni conservate nell oggetto condizionano il comportamento dell oggetto

Dettagli

UML Diagrammi delle classi. UML Diagramma classi 1

UML Diagrammi delle classi. UML Diagramma classi 1 UML Diagrammi delle classi UML Diagramma classi 1 Diagramma delle classi Non è nei nostri obiettivi affrontare UML nel suo complesso Ci concentreremo sui diagrammi delle classi che ci forniscono un linguaggio

Dettagli

1. I FONDAMENTI DELLA PROGRAMMAZIONE AD OGGETTI

1. I FONDAMENTI DELLA PROGRAMMAZIONE AD OGGETTI IL LINGUAGGIO JAVA Dispense per il corso di laboratorio di sistemi I.T.I.S. ABACUS A.S. 2008/2009 Autore: Roberto Amadini Testo di riferimento: La programmazione ad oggetti C++ Java (Lorenzi, Moriggia,

Dettagli

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1 Prossime lezioni Dai TDA agli oggetti Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione, lezione 18 19 gennaio

Dettagli

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di Giancarlo Cherchi 1 Introduzione Il meccanismo dell eredità consente di sfruttare delle relazioni tipo/sottotipo, ereditando attributi

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Introduzione alla programmazione ad oggetti a.a. 2008/2009 Claudio De Stefano 1 La programmazione modulare Un programma può essere visto come un insieme di moduli che

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Proff. Fabio Ciao e Raffaele Bortone

Proff. Fabio Ciao e Raffaele Bortone ISTITUTO D ISTRUZIONE SUPERIORE FERRARIS BRUNELLESCHI - EMPOLI Materia: INFORMATICA PROGRAMMAZIONE ANNUALE A.S. 2014/2015 Classe IV C Informatica Proff. Fabio Ciao e Raffaele Bortone Libro di testo: Cloud

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

Programmazione Java: Variabili membro, Metodi La parola chiave final

Programmazione Java: Variabili membro, Metodi La parola chiave final Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Il meccanismo dell ereditarietà a.a. 2008/2009 Claudio De Stefano 1 L ereditarietà consente di definire nuove classi per specializzazione o estensione di classi preesistenti,

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali

DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali DESIGN PATTERN CREAZIONALI DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2013 2014 rcardin@math.unipd.it

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Programmazione Object Oriented in Java

Dettagli

Il paradigma OO e le relative metodologie di progettazione. Programmazione orientata agli oggetti

Il paradigma OO e le relative metodologie di progettazione. Programmazione orientata agli oggetti Alessio Bechini - Corso di - Il paradigma OO e le relative metodologie di progettazione Metodologie OO Programmazione orientata agli oggetti La programmazione ad oggetti (OOP) è un paradigma di programmazione

Dettagli

Java: Compilatore e Interprete

Java: Compilatore e Interprete Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT

Dettagli

Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi

Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi Introduzione alla Programmazione Orientata agli Oggetti Classi, Oggetti e Messaggi Agenda 1. La metodologia di progettazione ad oggetti Concetti fondamentali: oggetti, classi, messaggi 2. I concetti fondamentali

Dettagli

OBIETTIVI SPECIFICI DI APPRENDIMENTO

OBIETTIVI SPECIFICI DI APPRENDIMENTO Disciplina:... Anno scolastico: 20.../20... Classe/i :... Docente:... DI APPRENDIMENTO SEZIONE 1 Premesse matematiche Nozioni fondamentali sui sistemi di numerazione Sistemi di numerazione in base diversa

Dettagli

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D - 2012

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D - 2012 + Sviluppo Applicazioni Mobile Lezione 12 JDBC + Cosa vediamo nella lezione di oggi Oggi analizzeremo insieme una specifica tecnologia Java per l accesso e la manipolazione di basi di dati relazionali

Dettagli

Programmazione a Oggetti Modulo B

Programmazione a Oggetti Modulo B Programmazione a Oggetti Modulo B Progetto Dott. Alessandro Roncato 4/10/2011 Progetto Da svolgere singolarmente Scadenza consegna: una settimana prima dello scritto; Valutazione in base a: Corretta compilazione

Dettagli

Esercitazione n 4. Obiettivi

Esercitazione n 4. Obiettivi Esercitazione n 4 Obiettivi Progettare e implementare per intero un componente software in Java Linguaggio Java: Classi astratte Utilizzo di costruttori e metodi di superclasse Polimorfismo Esempio guida:

Dettagli

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo Design Pattern L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo sviluppo dei programmi, il loro mantenimento,

Dettagli

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo. Prototype 28 4. Prototype (GoF pag. 117) 4.1. Descrizione 4.2. Esempio Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

Dettagli

Metodologie di progetto Estensione di classi Implementazione di interfacce Composizione

Metodologie di progetto Estensione di classi Implementazione di interfacce Composizione Gerarchie di Tipi Metodologie di progetto Estensione di classi Implementazione di interfacce Composizione Notazione UML Relazione Simbolo Significato Ereditarietà Implementazione Aggregazione Dipendenza

Dettagli

RMI Remote Method Invocation

RMI Remote Method Invocation RMI Remote Method Invocation [Pagina intenzionalmente vuota] (1 12 2004) slide 4:1/18 (p.106) Un applicazione RMI è un applicazione distribuita ad oggetti. Applicazione RMI tipica, strutturata in: server:

Dettagli

Programmazione a Oggetti Modulo B

Programmazione a Oggetti Modulo B Programmazione a Oggetti Modulo B Lezione 5 Dott. Alessandro Roncato 08/11/2011 Riassunto Pattern Singleton Pattern Plolimorfismo Classi e Interfacce 2 Ereditarietà multipla In Java una classe può estendere

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Incapsulamento Polimorfismo e Overloading Ereditarietà e Overriding Esercizi svolti Esercizi proposti Paradigma OO Le

Dettagli

Programmazione di sistemi distribuiti

Programmazione di sistemi distribuiti Programmazione di sistemi distribuiti I Sistemi Distribuiti, per loro natura, prevedono che computazioni differenti possano essere eseguite su VM differenti, possibilmente su host differenti, comunicanti

Dettagli

La programmazione: tradizionale vs Orientata agli Oggetti (OOP)

La programmazione: tradizionale vs Orientata agli Oggetti (OOP) La programmazione: tradizionale vs Orientata agli Oggetti (OOP) In generale, nella soluzione di un problema si individuano dati e funzionalità (azioni) potendola implementare, a livello più semplice, in

Dettagli

Informatica. Prof. A. Longheu. Introduzione ai Linguaggi Object-Oriented

Informatica. Prof. A. Longheu. Introduzione ai Linguaggi Object-Oriented Informatica Prof. A. Longheu Introduzione ai Linguaggi Object-Oriented 1 Generalità programmazione OO La programmazione ad oggetti è un particolare modo di scrivere il programma. Si prevede che: 1) si

Dettagli

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre

Dettagli

Struttura di un programma Java

Struttura di un programma Java Struttura di un programma Java Un programma in Java è un insieme di dichiarazioni di classi. Una classe non può contenere direttamente delle istruzioni, ma può contenere la dichiarazione di metodi, che

Dettagli

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 http://polaris.ing.unimo.it/fic/laboratorio.html. Outline

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 http://polaris.ing.unimo.it/fic/laboratorio.html. Outline Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 http://polaris.ing.unimo.it/fic/laboratorio.html Ing. Francesco De Mola demola.francesco@unimore.it DII, Modena Via Vignolese (lab. Dottorandi

Dettagli

Classi Oggetti public private this static static

Classi Oggetti public private this static static Programma Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it http://www.dii.unisi.it/~rigutini/ Programma

Dettagli

Progettare una basi di dati vuole dire progettare la struttura dei dati e le applicazioni

Progettare una basi di dati vuole dire progettare la struttura dei dati e le applicazioni LA PROGETTAZIONE DI BASI DI DATI Progettare una basi di dati vuole dire progettare la struttura dei dati e le applicazioni La progettazione dei dati è l attività più importante Per progettare i dati al

Dettagli

Progettazione : Design Pattern Creazionali

Progettazione : Design Pattern Creazionali Progettazione : Design Pattern Creazionali Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali

Dettagli

Automazione Industriale 4- Ingegneria del Software

Automazione Industriale 4- Ingegneria del Software Automation Robotics and System CONTROL Università degli Studi di Modena e Reggio Emilia Automazione Industriale 4- Ingegneria del Software Cesare Fantuzzi (cesare.fantuzzi@unimore.it) Ingegneria Meccatronica

Dettagli

Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche.

Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche. Testo Esercizio Un negozio di musica vende anche libri e riviste musicali. Si intende automatizzare l intero processo, dall approvvigionamento alla vendita. Si analizzino i requisiti e se ne rappresentino

Dettagli

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - Progettazione OO E. TINELLI Punto di Partenza Il modello di analisi E una rappresentazione minima del

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Esercitazione sui Design Pattern

Esercitazione sui Design Pattern Esercitazione sui Design Pattern Pattern Creazionali Singleton Permette la creazione di una sola istanza della classe all interno dell applicazione Fornisce un metodo con cui ottenere l istanza Il costruttore

Dettagli

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Relazioni tra classi Ereditarietà Generalizzazione Specializzazione Aggregazione Composizione Dipendenza Associazione Sommario Relazioni

Dettagli

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 15 - Packages Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di

Dettagli

Programmazione ad Oggetti: JAVA. Esercitazione

Programmazione ad Oggetti: JAVA. Esercitazione Programmazione ad Oggetti: JAVA Esercitazione Docente Ing. Mariateresa Celardo mariateresa.celardo@uniroma2.it Scrivere la classe Motorino che ha i seguenti attributi colore: una stringa indicante il colore

Dettagli

Synchronized (ancora)

Synchronized (ancora) Synchronized (ancora) Riscriviamo l esempio di prima. Usiamo una struttura modulare, con una classe Notificatore che ha opportuni metodi. La classe ha due campi privati, la lista buftext e un suo thread.

Dettagli

Progettazione ad oggetti

Progettazione ad oggetti Progettazione ad oggetti Gli elementi reali vengono modellati tramite degli oggetti Le reazioni esistenti nel modello reale vengono trasformate in relazioni tra gli oggetti Cos'è un oggetto? Entità dotata

Dettagli

Sviluppo Applicazioni Mobile Lezione 7. Dr. Paolo Casoto, Ph.D - 2011

Sviluppo Applicazioni Mobile Lezione 7. Dr. Paolo Casoto, Ph.D - 2011 + Sviluppo Applicazioni Mobile Lezione 7 Dr. Paolo Casoto, Ph.D - 2011 + Credits I lucidi di questa lezione sono stati preparati da: Professor Stefano Mizzaro Professor Paolo Coppola e sono stati modificati

Dettagli

Programmazione Java Avanzata Concetti su Java

Programmazione Java Avanzata Concetti su Java Programmazione Java Avanzata Concetti su Java Ing. Giuseppe D'Aquì Testi di Riferimento Java ( R. Liguori, P. Liguori), O'Reilly Hops Tecniche Nuove (2008) Java Virtual Machine Il codice scritto in Java

Dettagli

Il Pattern PROXY. Ex presentazione realizzata dallo studente Paolo Melchiori (matricola 65734) nell a.a. 2007-2008

Il Pattern PROXY. Ex presentazione realizzata dallo studente Paolo Melchiori (matricola 65734) nell a.a. 2007-2008 UNIVERSITÀ DEGLI STUDI DI BRESCIA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA DIPARTIMENTO DI ELETTRONICA PER L'AUTOMAZIONE Il Pattern PROXY Ex presentazione realizzata

Dettagli

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel

Dettagli

L applicazione di MVC alla simulazione di ascensore I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1

L applicazione di MVC alla simulazione di ascensore I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1 I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1 3.13 (Caso di studio facoltativo) Pensare a oggetti: Modello-Vista-Controllore I design pattern descrivono strategie efficaci per costruire sistemi

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

Appunti di Sistemi Distribuiti

Appunti di Sistemi Distribuiti Appunti di Sistemi Distribuiti Matteo Gianello 27 settembre 2013 1 Indice 1 Introduzione 3 1.1 Definizione di sistema distribuito........................... 3 1.2 Obiettivi.........................................

Dettagli

Esercizi della lezione 5 di Java

Esercizi della lezione 5 di Java Esercizi della lezione 5 di Java Esercizio 5 Create il tipo di dato Counter dell Esercizio 1 come sottoclasse del tipo di dato SimpleCounter. Esercizio 1 Create un tipo di dato Counter che abbia: un valore

Dettagli

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java Riassunto Rassegna API - 1 Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 17 3 maggio 2015! Programmazione

Dettagli

Alessandra Raffaetà. Basi di Dati

Alessandra Raffaetà. Basi di Dati Lezione 2 S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali Alessandra Raffaetà Dipartimento di Informatica Università Ca Foscari Venezia Basi di Dati

Dettagli

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 14 - Packages Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di

Dettagli

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP Accademia Futuro info@accademiafuturo.it Programma Generale del Corso Analista Programmatore Web PHP Tematiche Trattate

Dettagli

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) Informatica 3 LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) Modulo 1: Introduzione: oggetti e classi Modulo 2: Link e associazioni Modulo 3: Aggregazione Informatica 3 Lezione 7 -

Dettagli

P a s q u a l e t t i V e r o n i c a

P a s q u a l e t t i V e r o n i c a PHP: OOP Pasqualetti Veronica Oggetti Possiamo pensare ad un oggetto come ad un tipo di dato più complesso e personalizzato, non esistente fra i tipi tradizionali di PHP, ma creato da noi. 2 Gli oggetti

Dettagli

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Reflection in Java 1 Reflection Riflessione

Dettagli

CORSO DI PROGRAMMAZIONE JAVA

CORSO DI PROGRAMMAZIONE JAVA CORSO DI PROGRAMMAZIONE JAVA Corso di Programmazione Java Standard Edition ( MODULO A) OBIETTIVI ll corso ha come obiettivo quello di introdurre la programmazione a oggetti (OOP) e di fornire solide basi

Dettagli

Ereditarietà e classi astratte

Ereditarietà e classi astratte Ereditarietà e classi astratte 6 Temi del capitolo 1. Il concetto di ereditarietà 2. Programmazione grafica con ereditarietà 3. Classi astratte 4. Il pattern TEMPLATE METHOD 5. Interfacce protected 6.

Dettagli

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi formativi Introdurre i principi del funzionamento di un elaboratore e della programmazione. Presentare gli approcci elementari alla soluzione di problemi (algoritmi)e al progetto di strutture

Dettagli

INTRODUZIONE INTRODUZIONE JAVA JAVA

INTRODUZIONE INTRODUZIONE JAVA JAVA INTRODUZIONE INTRODUZIONE Lo sviluppo di applicazioni complesse porta a costruire moduli software sempre più potenti e versatili, che possano essere riutilizzati in numerosi progetti I linguaggi ad oggetti

Dettagli

Java? Sì, grazie. Scopo del corso

Java? Sì, grazie. Scopo del corso Modulo di Java? Sì, grazie Il linguaggio di Internet? Portabilità su qualunque piattaforma (non solo calcolatori): It works everywhere Supporto e disponibilità di strumenti, librerie e documentazione garantiti

Dettagli

Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA

Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA ES 02 - ORGANIZER Voglio un gestionale (organizer) che permetta a ciascun dipendente della mia azienda di inserire le attività che svolgono

Dettagli

Java. Programmazione orientata agli oggetti

Java. Programmazione orientata agli oggetti Java Programmazione orientata agli oggetti Nella programmazione orientata agli oggetti (OOP), un applicazione consiste di una collezione di oggetti interagenti, ognuno dei quali comprende una struttura

Dettagli

10 - Programmare con gli Array

10 - Programmare con gli Array 10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame("Finestra"); // crea frame invisibile

I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame(Finestra); // crea frame invisibile I Canvas Tra i vari contenitori Java il Canvas (area di disegno o tela) è una semplice superficie di disegno particolarmente utile per visualizzare immagini o per effettuare altre operazioni grafiche.

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Design Pattern: Storia Parte b versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Design Pattern in Java

Design Pattern in Java Design Pattern in Java Claudio Di Ciccio, Massimiliano de Leoni (con la supervisione del docente Massimo Mecella) Università di Roma La Sapienza - Sede di Latina Corso di Progettazione del Software A.A.

Dettagli

Corso Online Analista Programmatore Microsoft

Corso Online Analista Programmatore Microsoft Corso Online Analista Programmatore Microsoft We Train Italy info@wetrainitaly.it Programma Generale del Corso Analista Programmatore Microsoft Tematiche di Base Modulo Uno Le basi della programmazione

Dettagli

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla

Dettagli

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144

Mobilità di Codice. Massimo Merro Programmazione di Rete 128 / 144 Mobilità di Codice Abbiamo già visto come un dato host possa trasmettere un oggetto (serializzabile) ad un altro host. Quest ultimo potrà eseguire l oggetto pur non possedendo il bytecode della classe

Dettagli

Introduzione alla Progettazione per Componenti

Introduzione alla Progettazione per Componenti Introduzione alla Progettazione per Componenti Alessandro Martinelli 6 ottobre 2014 Obiettivo del Corso Il Progetto Software Reale Il Componente Software La Programmazione Ad Oggetti Fondamenti di Informatica

Dettagli

Oggi. Programmazione e laboratorio: introduzione al corso. Docenti: laboratorio. Docenti: teoria. Il corso. Orario.

Oggi. Programmazione e laboratorio: introduzione al corso. Docenti: laboratorio. Docenti: teoria. Il corso. Orario. Programmazione e laboratorio: introduzione al corso Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione per

Dettagli

Scope e visibilità per classi

Scope e visibilità per classi Scope e visibilità per classi Packages Classi interne nelle loro diverse forme Interne / statiche / locali Utilizzo congiunto con interfacce Implementazione di iteratori Gestione di eventi Packages Package:

Dettagli

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015) Programmazione ad Oggetti Modulo A (Esame del 11/9/2015) Esercizio 1 Considerate la seguente gerarchia di classi: class A { public void print(string s) { System.out.println(s); public void m1() { print("a.m1");

Dettagli

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it

RMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it Java Remote Method Invocation -- RMI G. Prencipe prencipe@di.unipi.it RMI RMI è una tecnologia JAVA che permette a una JVM di comunicare con un altra JVM per farle eseguire metodi È possibile che oggetti

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

Dettagli

Livelli di astrazione

Livelli di astrazione Realizzare Classi Astrazione Perdita di dettaglio Utile nella descrizione, progettazione, implementazione e utilizzo di sistemi complessi Dettagli trascurabili vengono incapsulati in sottosistemi più semplici

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

Prova di Laboratorio di Programmazione

Prova di Laboratorio di Programmazione Prova di Laboratorio di Programmazione 6 febbraio 015 ATTENZIONE: Non è possibile usare le classi del package prog.io del libro di testo. Oltre ai metodi richiesti in ciascuna classe, è opportuno implementare

Dettagli

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Corso Base Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Java Java è un Linguaggio di Programmazione orientato agli oggetti. Un Linguaggio di Programmazione è un linguaggio ad alto livello, dotato

Dettagli

Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche.

Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche. Testo Esercizio Si consideri la realizzazione di un semplice programma grafico per il disegno di figure geometriche in due dimensioni. Si analizzino i requisiti e se ne rappresentino i risultati in UML

Dettagli

DESIGN PATTERNS Parte 2. Polimorfismo Pure Fabrication Simple Factory/Concrete Factory Factory Method Abstract Factory Protect Variations + Reflection

DESIGN PATTERNS Parte 2. Polimorfismo Pure Fabrication Simple Factory/Concrete Factory Factory Method Abstract Factory Protect Variations + Reflection DESIGN PATTERNS Parte 2 Polimorfismo Pure Fabrication Simple Factory/Concrete Factory Factory Method Abstract Factory Protect Variations + Reflection POLIMORFISMO Il polimorfismo è la base della programmazione

Dettagli

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind() Organizzazione della lezione Lezione 18 Remote Method Invocation - 6 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno

Dettagli