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

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Sviluppo Applicazioni Mobile Lezione 8. Dr. Paolo Casoto, Ph.D"

Transcript

1 + Sviluppo Applicazioni Mobile Lezione 8 Dr. Paolo Casoto, Ph.D

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. Dr. Paolo Casoto, Ph.D

3 + Programmazione strutturata Mattoni Strutture di controllo Sequenza, Selezione, Iterazione Cicli annidati Array (unidimensionali, multidimensionali) Sottoprogrammi (metodi) Parametri formali e attuali Pila dei record di attivazione Ricorsione Dr. Paolo Casoto, Ph.D

4 + Altro Pila dei record di attivazione, heap Attività del programmatore Sviluppo incrementale Ciclo editing-compilazione-esecuzione Testing Bast-Che-Funz chi se ne frega di come è scritto un programma, basta che funzioni NO! DOVETE imparare a scrivere programmi di buona qualità Anche chi pensa di saper già programmare Dr. Paolo Casoto, Ph.D

5 + Oggi Tipi di Dato Astratto (TDA) Primi concetti Definizione di un TDA Uso di un TDA Principio dell Occultamento delle informazioni Introduzione, ne parleremo anche nella prossima lezione Dr. Paolo Casoto, Ph.D

6 + TDA Tipo di Dato Astratto (TDA) Abstract Data Type (ADT) I metodi (procedure e funzioni) possono essere visti come un modo per estendere il linguaggio di programmazione appena definito un nuovo metodo, è come se il linguaggio avesse una nuova istruzione È un meccanismo di astrazione: astraggo dai dettagli pensando al livello delle nuove istruzioni Ne esiste un altro... Migliore (vedremo perché) Dr. Paolo Casoto, Ph.D

7 + Struttura programma Java? lass... { static <tipo> <id> (<parametri>) {... static <tipo> <id> (<parametri>) {... public static void main (String[] args) {... static <tipo> <id> (<parametri>) {... static <tipo> <id> (<parametri>) {... Stefano Mizzaro - TDA Dr. Paolo Casoto, Ph.D

8 + Un altro meccanismo di astrazione: i TDA Possiamo estendere il linguaggio definendo nuovi tipi di dato Per farlo bisogna: definire come sono fatti decidere quali operazioni sono lecite su di essi (Tipo = valori + operazioni) Per definire un nuovo tipo di dato si deve specificare una classe il nome della classe rappresenterà il nuovo tipo una classe definisce le sue variabili e i suoi metodi Dr. Paolo Casoto, Ph.D

9 + Definire TDA: la sintassi class <NomeDelTDA> { <tipo1> <var1>; <tipo2> <var2>; static <tipometodo1> <nomemetodo1>(<parametri1>) {... static <tipometodo2> <nomemetodo2>(<parametri2>) { Dr. Paolo Casoto, Ph.D

10 + Convenzione sugli identificatori Gli identificatori Java vanno scritti con l iniziale maiuscola se sono nomi di classi con l iniziale minuscola se sono nomi di variabili o di metodi se l identificatore è formato da più parole, queste vanno scritte attaccate e ogni parola deve iniziare con la maiuscola Esempi: Classe1, variabile1, metodo1, AltroNomeDiClasse, altronomedivariabile, altronomedimetodo, nome_sbagliato Dr. Paolo Casoto, Ph.D

11 + Esempio 1: classe coordinate Definire un nuovo tipo che rappresenta le coordinate di un punto del piano cartesiano Decidiamo il nome della classe: Coordinate Decidiamo quali informazioni/ dati saranno presenti nella classe: x, y class Coordinate { int x; int y; oppure class Coordinate { double x; double y; Dr. Paolo Casoto, Ph.D

12 + Esempio 2: classe ora Definire un nuovo tipo che rappresenta un ora del giorno Decidiamo il nome della classe: Ora Decidiamo quali informazioni/dati saranno presenti nella classe: ore, minuti, secondi oppure secondi trascorsi dalla mezzanotte class Ora { int ore; int minuti; int secondi; oppure class Ora { int secondi; Dr. Paolo Casoto, Ph.D

13 + Esempio 3: classe freccia orizzontale Definire un nuovo tipo che rappresenta una freccia orizzontale Decidiamo il nome della classe: FrecciaOrizzontale Decidiamo quali informazioni/dati saranno presenti nella classe: lunghezza, verso class FrecciaOrizzontale { int lunghezza; char verso; oppure class FrecciaOrizzontale { int lunghezza; boolean versodestra; Dr. Paolo Casoto, Ph.D

14 + Usare TDA Una volta definita una classe abbiamo un nuovo tipo (non abbiamo scritto un programma; non c è un main) e possiamo usarlo! Ora si possono: dichiarare variabili di quella classe (di quel tipo) creare nuovi valori (istanze) usare le variabili (in un altra classe/file ad es. nel main vedremo) Dr. Paolo Casoto, Ph.D

15 + Dichiarazione Analogamente a come si dichiarano le variabili con tipo primitivo: int x, k, count; Coordinate punto, coppia, pluto; Ora oradelgiorno, pippo; Dichiarare una variabile non basta. Per usare un TDA bisogna creare esplicitamente un valore Bisogna allocare dello spazio in memoria Lo spazio per i tipi primitivi invece viene allocato in modo automatico Dr. Paolo Casoto, Ph.D

16 + L istruzione new Dichiarazione e istanziazione/allocazione: Coordinate punto; punto = new Coordinate(); oppure, in una sola riga: Coordinate punto = new Coordinate(); new Alloca lo spazio nello heap per una nuova istanza Viene creato un nuovo oggetto (che verrà riferito dalla variabile) Vi ricorda qualcosa? Dr. Paolo Casoto, Ph.D

17 + Istanziazione/allocazione Dichiarazione: Coordinate punto; Istanziazione: punto = new Coordinate(); punto... x y Pila dei record di attivazione Heap Dr. Paolo Casoto, Ph.D

18 + La notazione puntata Una volta dichiarata una variabile e istanziato un TDA, si può accedere ai suoi attributi, ovvero alle variabili, usando questa sintassi: variabiletda.variabilecomponente I metodi dei TDA invece si invocano premettendo il nome della classe: TDA.metodo(parametri) Esempi punto.x = 2; punto.y = 3 + punto.x; System.out.println(punto.y); Dr. Paolo Casoto, Ph.D

19 + Esempio 1 Scrivere un programma che crea due punti le cui coordinate sono lette da tastiera usando la classe Leggi e stampa la distanza tra i due punti Per calcolare la radice quadrata usate la funzione Math.sqrt Dr. Paolo Casoto, Ph.D

20 + Stefano Mizzaro - TDA Dr. Paolo Casoto, Ph.D

21 + Dr. Paolo Casoto, Ph.D

22 + Esempio 2 Scrivere un programma che legge da tastiera un ora del giorno e la stampa... Ora x = new Ora(); //Legge un ora del giorno x.ore = Leggi.unInt(); x.minuti = Leggi.unInt(); x.secondi = Leggi.unInt(); System.out.println( Sono le +x.ore+ : +x.minuti+. +x.secondi);... Dr. Paolo Casoto, Ph.D

23 + Esempio 2 Con l altra definizione della classe Ora... Ora x = new Ora(); //Legge un ora del giorno int ore = Leggi.unInt(); int minuti = Leggi.unInt(); int secondi = Leggi.unInt(); x.secondi = ore*3600+minuti*60+secondi; System.out.println( Ora sono le +(x.secondi/3600)+ : +((x.secondi%3600)/60)+. +(x.secondi%60));... Dr. Paolo Casoto, Ph.D

24 + Esempio 3 Scrivere un programma che legge da tastiera la lunghezza e il verso di una freccia e poi la stampa... FrecciaOrizzontale x = new FrecciaOrizzontale(); //Legge lunghezza e verso x.lunghezza = Leggi.unInt(); x.verso = Leggi.unChar(); if (x.verso == s ) System.out.print( < ); for (int i=0; i<x.lunghezza; i++) System.out.print( - ); if (x.verso == d ) System.out.println( > ); else System.out.println();... Dr. Paolo Casoto, Ph.D

25 + Esempio 3 Oppure, con l altra definizione della classe FrecciaOrizzontale... FrecciaOrizzontale x = new FrecciaOrizzontale(); //Legge lunghezza e verso x.lunghezza = Leggi.unInt(); char verso = Leggi.unChar(); x.versodestra = (verso == d ); if (!x.versodestra) System.out.print( < ); for (int i=0; i<x.lunghezza; i++) System.out.print( - ); if (x.versodestra) System.out.print( > ); System.out.println();... Dr. Paolo Casoto, Ph.D

26 + L occultamento delle informazioni (1/2) Negli esempi precedenti non è evidente il vantaggio di usare i TDA L astrazione è ancora limitata Per usare un TDA si fa riferimento direttamente a come è fatto (alla sua implementazione) Mancano le operazioni del tipo Negli esempi: cambio definizione della classe => cambiare anche il codice che usa quei TDA Dr. Paolo Casoto, Ph.D

27 + L occultamento delle informazioni (2/2) Due aspetti: Bisogna nascondere l implementazione dei TDA L accesso e la modifica delle variabili interne avviene solo tramite metodi (le operazioni del tipo) In questo modo si realizza un astrazione maggiore: chi userà la classe dovrà conoscere solo l insieme dei metodi (la sua interfaccia) non come è fatto dentro (l implementazione) Tipo di dato astratto: si astrae dall implementazione (quando si usa) Dr. Paolo Casoto, Ph.D

28 + I modificatori In Java si possono nascondere le variabili di una classe usando il modificatore private Esempio: class Coordinate { private int x; private int y; Dr. Paolo Casoto, Ph.D

29 + Variabili private Se una variabile è dichiarata privata, può essere riferita solo nei metodi della sua classe Non è visibile al di fuori della classe Se un metodo di un altra classe prova ad accedere ad una variabile privata, il compilatore segnala un errore Se si nascondono le variabili di una classe, si devono aggiungere dei metodi per modificarle Le operazioni del tipo Dr. Paolo Casoto, Ph.D

30 + Esempio 1 Stefano Mizzaro - TDA Dr. Paolo Casoto, Ph.D

31 + Esempio 2 Dr. Paolo Casoto, Ph.D

32 + Esempio 2: altra implementazione Dr. Paolo Casoto, Ph.D

33 + Esempio 2: vantaggi dell occultamento/astrazione Dr. Paolo Casoto, Ph.D

34 + TDA: l idea Tipo di Dato Astratto (TDA) Abstract Data Type (ADT) L idea è: Programma che gestisce numeri complessi => aggiungo il tipo di dato astratto NumeroComplesso Programma dell anagrafe => aggiungo i TDA Persona, Indirizzo, Data, Non aggiungo al Java i metodi che non ha ma aggiungo al Java i tipi che non ha E poi li uso astraendo dall implementazione È un meccanismo di astrazione

35 + TDA: i concetti (1/2) Astrazione: nuovo tipo (non nuova istruzione) Definire Come sono fatti (attributi): implementazione Operazioni (metodi, per ora static): interfaccia class Usare Dichiarazione E allocazione, sullo heap new (ricorda qualcosa?) Notazione puntata (ricorda qcosa?) Non solo per accedere alle componenti Anche per invocare i metodi

36 + TDA: i concetti (2/2) Occultamento delle informazioni (dell implementazione) Information (implementation) hiding Cambio implementazione cambio uso? NO!! private Operazioni di accesso con metodi Astratto = si astrae dall implementazione quando si usa Limitazione alla libertà del programmatore? Sì, ma positiva! Divide et impera (anche con i metodi) Riuso (i TDA creati per un programma spesso funzionano anche per altri programmi; i metodi no)

37 + Esempio: definizione e uso class Ora { private int secondi; static void impostaora(ora x, int o, int m, int s) { x.secondi = o*3600+m*60+s; static int getore(ora x) {return x.secondi/3600; static int getminuti(ora x) { return (x.secondi%3600)/60; static int getsecondi(ora x) {return x.secondi%60; class UsaOra { public static void main(string[] args) {... Ora h = new Ora(); Ora.impostaOra(h,12,22,31); System.out.println("Sono le ore +Ora.getOre(h));... Stefano Mizzaro - TDA 2

38 + Terminologia Tipi TDA Classi Variabili (Valori, Istanze, Oggetti) Attributi Incapsulamento = unitarietà + inaccessibilità Unitarietà: raggruppamento definizione in un unico punto Inaccessibilità: dell implementazione

39 + Il costruttore Le classi hanno un metodo particolare, il costruttore, che viene invocato quando si istanzia un TDA Essendo il primo metodo della classe che viene eseguito, di solito viene usato per inizializzare la variabile creata Il costruttore è un metodo strano : ha (deve avere) lo stesso nome della classe e non ha un tipo restituito (nemmeno void) viene invocato in modo strano (con la new)

40 + Esempio

41 + Costruttori

42 + Esempio: il TDA Ora lass Ora { private int ore, minuti, secondi; Ora(int o, int m, int s) { ore = o; minuti = m; secondi = s; static void setora(ora x, int o, int m, int s){ x.ore = o; x.minuti = m; x.secondi = s; static void setora(ora x, int o, int m) { setora(x,o,m,0); static int getore(ora x) {return x.ore; static int getminuti(ora x) {return x.minuti; static int getsecondi(ora x){return x.secondi; Stefano Mizzaro - TDA 2

43 + Esempio: uso del TDA Ora Qs. è un caso banale, immaginarsi in generale.. lass UsaOra { public static void main(string[] args) { Ora x = new Ora(12,32,05); Ora y = new Ora(Ora.getOre(x), 20, 3); System.out.println(Ora.getMinuti(y)); Ora.setOra(y, 20, 4); System.out.println(Ora.getOre(y) + : + Ora.getMinuti(y) + : + Ora.getSecondi(y));

44 + Esercizi Che cosa fa il seguente costruttore? Ora(int o) { ore = o; minuti = 0; secondi = 0; E questo? Ora(Ora o) { ore = o.ore; minuti = o.minuti; secondi = o.secondi;

45 + Costruttori Un costruttore può avere parametri di ogni tipo, anche della sua stessa classe Può invocare altri metodi Anche della stessa classe, ma attenzione! Quando si deve creare un istanza di una certa classe, si deve invocare uno dei suoi costruttori Se non è stato specificato nessun costruttore allora si può usare quello senza parametri (che c è automaticamente ), altrimenti si deve usare uno di quelli definiti

46 + Esempi Se la classe è: class Coordinate { private int x, y; si deve scrivere Coordinate p = new Coordinate(); Se invece è: class Coordinate { private int x, y; Coordinate(int a, int b) { x = a; y = b; si deve scrivere Coordinate p = new Coordinate(2,3); Il costruttore automatico c è solo se non c è nessun altro costruttore

47 + Ancora esempi Se, infine, la classe ha entrambi i costruttori: class Coordinate { private int x, y; Coordinate() {x = 0; y = 0; Coordinate(int a, int b) {x = a; y = b; si possono scrivere entrambe le istruzioni: Coordinate p = new Coordinate(); Coordinate q = new Coordinate(0,0);

48 + Esempio Freccia

49 + Visibilità Nei costruttori precedenti ho dovuto inventare nomi di parametri che fossero diversi da quelli delle variabili della classe Cosa succede se usiamo gli stessi nomi? class Coordinate { private int x, y; Coordinate(int x, int y) { x = x; y = y;

50 + Il this Regola di visibilità Se nomi dei parametri = nomi degli attributi Gli attributi vengono nascosti (del costruttore, o di qualsiasi altro metodo) Per accedervi occorre specificare che sono le variabili di questo oggetto, con la parola riservata this: Coordinate(int x, int y){ this.x=x; this.y=y; «assegno alla variabile x di questo oggetto il valore del parametro x, assegno alla variabile y di questo oggetto il valore del parametro y» Coordinate(int x, int y) {x = x; y = y; «assegno al parametro x il valore del parametro x»... e quindi non modifico la variabile x della classe!

51 + Riassunto visibilità Variabili locali a un blocco for (int i = ) Variabili locali a un metodo static void m(int x){ int y... Variabili locali a una classe class C { int x... public (o niente): visibili anche all esterno della classe private: solo all interno della classe Stefano Mizzaro - TDA 2

52 + Il this this può essere usato anche per riferirsi ad un altro costruttore (sovraccarico). Esempio: class Coordinate { private int x, y; Coordinate(int x, int y) { this.x = x; this.y = y; /** costruttore che crea un oggetto con * coordinate uguali */ Coordinate(int a) {this(a,a); Stefano Mizzaro - TDA 2 questo costruttore

53 + Costruttori e metodi sovraccarichi A cosa servono? Semplificano uso e allocazione delle variabili del TDA Evitare duplicazione del codice Con il this, o invocando altri metodi Può essere comodo, ma non esagerare oordinate c = new Coordinate(); oordinate c = new Coordinate(0); oordinate c = new Coordinate(0,0); Stefano Mizzaro - TDA 2

54 + Scaletta Costruttore this Metodi/costruttori sovraccarichi (overloaded) tostring Procedurale vs. funzionale Esempi Stefano Mizzaro - TDA 2

55 + Il metodo tostring Chi deve avere la conoscenza/responsabilità di sapere come visualizzare il valore di un TDA? La classe! (cfr. Ora e UsaOra: scomodo!) Si potrebbe definire un metodo nel TDA static void print(...)... ma si preferisce definire (vedremo perché) static String tostring(...) che restituisce una rappresentazione visualizzabile dell istanza (Vedremo l invocazione automatica di tostring) tostring verrà invocato nell istruzione System.out.print o println In questo modo è possibile specificare come verranno visualizzati gli oggetti di una certa classe Stefano Mizzaro - TDA 2

56 + tostring tostring restituisce la rappresentazione dell oggetto in forma di stringa. Ad es. : class Coordinate { private int x, y;... static String tostring(coordinate c){ return ( + c.x +, + c.y + ) ; class UsoCoordinate { Coordinate a = new...;... System.out.println(Coordinate.toString(a)); Stefano Mizzaro - TDA 2

57 + Ora.java lass Ora { private int ore, minuti, secondi; Ora(int ore, int minuti, int secondi) { this.ore=ore; this.minuti=minuti; this.secondi=secondi; static void impostaora(ora x, int ore, int minuti, int secondi) { x.ore = ore; x.minuti = minuti; x.secondi = secondi; static int getore(ora x) {return x.ore; static int getminuti(ora x) {return x.minuti; static int getsecondi(ora x) {return x.secondi; static String tostring(ora x) { return x.ore+":"+x.minuti+"."+x.secondi;

58 + UsaOra.java lass UsaOra { public static void main(string[] args) { Ora x = new Ora(10,2,3); System.out.println(Ora.toString(x)); Ora.impostaOra(x,12,2,0); System.out.println(Ora.getMinuti(x)); 2 10:2.3 (basterà scrivere System.out.println(x); vedremo come)

59 + Pila (di interi limitata) Pila (stack): struttura dati a gestione LIFO (Last In First Out, il primo che entra è l ultimo che esce) Operazioni: push: aggiungi un elemento in cima top: restituisce l elemento in cima pop: rimuove un elemento dalla cima piena: dice se c è ancora posto vuota: dice se è vuota Vediamo una versione semplice: la pila limitata di interi C è un numero massimo di elementi Quindi potremo implementarla con un array

60 + Segnatura del TDA Pila

61 + Pila.java (1/2) Stefano Mizzaro - TDA 2

62 + Pila.java (2/2)

63 + ProvaPila.java /** Programma per la prova della classe Pila. */ class ProvaPila { public static void main (String[] args) { Pila p1 = new Pila(); p1 = Pila.push(p1,1); p1 = Pila.push(p1,2); p1 = Pila.push(p1,3); p1 = Pila.push(p1,4); System.out.println(Pila.top(p1)); p1 = Pila.pop(p1); p1 = Pila.pop(p1); System.out.println(Pila.top(p1)); p1 = Pila.push(p1,5); System.out.println(Pila.top(p1)); Stefano Mizzaro - TDA 2

64 + public o non public Per ora non fa differenza Se non c è il private attributi e metodi sono visibili dal resto del programma al di fuori della classe (la differenza la vedremo più avanti: con il public sono più visibili ) L unico che è necessario è quello del main Esercizio: dato un programma funzionante a vostra scelta, provate a togliere il public del main, a compilare e ad eseguire Il private è importante

65 + Funzionale e procedurale Nella versione precedente i metodi sono funzioni Alcuni potrebbero essere procedure push, pop Lavorano per effetto collaterale (side effect) sui parametri (Parametri che non sono tipi primitivi: viene passato il riferimento per valore => modifiche al parametro attuale si ripercuotono sul parametro formale) Esercizio: rivedere la versione funzionale ed eliminare i side effect

66 + PilaP.java (procedurale) lass PilaP {... //... come prima... /** push dell'elemento e sulla pila p */ static void push (PilaP p, int e) { if (!piena(p)) p.elementi[p.numelementi++] = e; /** Elimina un elemento dalla cima della pila * p */ static void pop(pilap p) { if(!vuota(p)) p.numelementi--;

67 + ProvaPilaP.java (procedurale) /** Programma per la prova della classe PilaP. */ class ProvaPilaP { public static void main (String[] args) { PilaP p1 = new PilaP(); PilaP.push(p1,1); PilaP.push(p1,2); PilaP.push(p1,3); PilaP.push(p1,4); System.out.println(PilaP.top(p1)); PilaP.pop(p1); PilaP.pop(p1); System.out.println(PilaP.top(p1)); PilaP.push(p1,5); System.out.println(PilaP.top(p1));

68 + Funzionale procedurale (1/2) Definizione metodo ublic static Pila push (Pila p, int e) { if (!piena(p)) p.elementi[p.numelementi++] = e; return p; ublic static void push (PilaP p, int e) { if (!piena(p)) p.elementi[p.numelementi++] = e;

69 + Funzionale procedurale (2/2) class ProvaPila { public Invocazione static metodo void main (String[] args) { Pila p1 = new Pila(); p1 = Pila.push(p1,1);... p1 = Pila.push(Pila.push(p1,1),2); p1 = Pila.pop(p1); class ProvaPilaP { public static void main (String[] args) { PilaP p1 = new PilaP(); PilaP.push(p1,1);... PilaP.pop(p1);

70 + Domande??? Grazie a tutti per l attenzione Dr. Paolo Casoto, Ph.D

14 - Metodi e Costruttori

14 - Metodi e Costruttori 14 - Metodi e Costruttori 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

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari 7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa

Dettagli

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione Java Struttura di una classe, Costruttore, Riferimento this Programmazione Java Struttura di una classe, Costruttore, Riferimento this romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

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

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Introduzione alla Programmazione in Java attraverso un esempio commentato

Introduzione alla Programmazione in Java attraverso un esempio commentato Corso di Studi in Informatica Programmazione 1 corso B prof. Elio Giovannetti Introduzione alla Programmazione in Java attraverso un esempio commentato Programmazione 1 B - a.a. 2002-03 53 Modello di memoria

Dettagli

Riassunto. La programmazione OO. Oggi. Esempio

Riassunto. La programmazione OO. Oggi. Esempio Riassunto La programmazione OO Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@dimi.uniud.it Programmazione, lezione 17 29 novembre

Dettagli

Modulo 2: Strutture fondamentali della programmazione Java

Modulo 2: Strutture fondamentali della programmazione Java Modulo 2: Strutture fondamentali della programmazione Java Argomenti Trattati: Un semplice programma Java: Presentazione di un primo Esempio; Introduzione alla struttura; Compilazione ed esecuzione. Argomenti

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

Indice. Prefazione. 3 Oggetti e Java 53

Indice. Prefazione. 3 Oggetti e Java 53 Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware

Dettagli

18 - Classi parzialmente definite: Classi Astratte e Interfacce

18 - Classi parzialmente definite: Classi Astratte e Interfacce 18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Proprietà delle Classi e degli Oggetti in Java

Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di

Dettagli

Definizione di metodi in Java

Definizione di metodi in Java Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.

Dettagli

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

Definizione di classi

Definizione di classi Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E05 Definizione di classi A. Miola Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di classi 1 Contenuti

Dettagli

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

Dettagli

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo

Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo Esempi al calcolatore su: 1) 2) Subtyping e polimorfismo 1 Esempio 1: 2 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il

Dettagli

Ottenere una modifica del parametro attuale

Ottenere una modifica del parametro attuale Ottenere una modifica del parametro attuale Le variabili passate come parametri a una funzione, se alterate durante l esecuzione, non cambiano valore all uscita dalla funzione (parametri passati per valore)

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti Programmazione ad oggetti Tipi di dati Tipo = insieme di valori + insieme di operazioni Es. int: valori:, -2, -1, 0, 1, 2, operazioni:: +,-,*,/,

Dettagli

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe String Una stringa Java rappresenta uno specifico valore e come

Dettagli

TIPI PRIMITIVI: LIMITI

TIPI PRIMITIVI: LIMITI TIPI PRIMITIVI: LIMITI I tipi primitivi sono i "mattoni elementari" del linguaggio In varie situazioni può però essere necessario trattare i tipi primitivi come oggetti quando una funzione pretende come

Dettagli

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it

Dettagli

Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri

Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri

Dettagli

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto

Dettagli

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe

Dettagli

Java Le stringhe. Stringhe

Java Le stringhe. Stringhe Java Le stringhe 1 Le stringhe in Java In Java le stringhe non sono semplicemente array di caratteri terminati con zero come avviene in C In Java le stringhe sono oggetti appartenenti alla classe String

Dettagli

Scope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano

Scope delle variabili e passaggio parametri. Danilo Ardagna Politecnico di Milano Scope delle variabili e passaggio parametri Danilo Ardagna Politecnico di Milano 1-4-2014 Introduzione! Con le funzioni è stato introdotto un meccanismo per definire dei piccoli programmi all interno di

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione VIII Tatiana Zolo tatiana.zolo@libero.it 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

Dettagli

Uso degli oggetti. Un programma Java. è un insieme di oggetti, ognuno istanza di una classe, che si inviano messaggi

Uso degli oggetti. Un programma Java. è un insieme di oggetti, ognuno istanza di una classe, che si inviano messaggi Uso degli oggetti Uso di oggetti predefiniti attraverso l'invio di messaggi. Il concetto di metodo; argomenti e restituzione di valori; segnatura e prototipo di un metodo. Il concetto di overloading. Le

Dettagli

Esercitazione: Implementazione in linguaggio C dell ADT. Stack con l utilizzo. di linked list

Esercitazione: Implementazione in linguaggio C dell ADT. Stack con l utilizzo. di linked list Esercitazione: Implementazione in linguaggio C dell ADT Stack con l utilizzo di linked list Laboratorio di Programmazione Introduzione un ADT (Abstract Data Type) è un modello (formale) che generalizza

Dettagli

I costruttori. Il costruttore standard. Esempio di valori di default. Alterare il costruttore standard

I costruttori. Il costruttore standard. Esempio di valori di default. Alterare il costruttore standard I costruttori Servono a inizializzare i valori dei campi degli oggetti. Vengono invocati automaticamente dopo che l oggetto è stato creato. Il costruttore standard Questo tipo di costruzione mette dei

Dettagli

Ereditarietà e Polimorfismo

Ereditarietà e Polimorfismo Ereditarietà e Polimorfismo Riusare il software A volte si incontrano classi con funzionalità simili In quanto sottendono concetti semanticamente vicini È possibile creare classi disgiunte replicando le

Dettagli

La classe java.lang.object

La classe java.lang.object La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita

Dettagli

Strutturare il codice: sottoprogrammi

Strutturare il codice: sottoprogrammi Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Motivazioni Alcuni problemi si presentano frequentemente durante lo sviluppo di un programma

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList! Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

Definizione di classi

Definizione di classi Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 19 Maggio 2010 1 Contenuti Classi per istanziare oggetti Esempio: la classe Punto Variabili d istanza Metodi d istanza Costruttori Ulteriori

Dettagli

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22 Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)

Dettagli

Linguaggi ad oggetti. Linguaggi di Programmazione: Paradigmi di Programmazione. I principali linguaggi ad oggetti. Programmazione ad oggetti.

Linguaggi ad oggetti. Linguaggi di Programmazione: Paradigmi di Programmazione. I principali linguaggi ad oggetti. Programmazione ad oggetti. Linguaggi di Programmazione: Paradigmi di Programmazione Linguaggi ad oggetti I linguaggi di programmazione ad oggetti consentono di applicare metodologie di sviluppo di programmi "object oriented", ossia

Dettagli

Esempio: Costruttori ed ereditarietà

Esempio: Costruttori ed ereditarietà Esempio: 1 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il costruttore di default (quello senza parametri) Se in un costruttore

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 Esercizi svolti Esercizi proposti Paradigma OO Nella programmazione tradizionale,

Dettagli

IL CONCETTO DI CLASSE

IL CONCETTO DI CLASSE IL CONCETTO DI CLASSE Una CLASSE riunisce le proprietà di: componente software: può essere dotata di suoi propri dati / operazioni moduli: riunisce dati e relative operazioni, fornendo idonei meccanismi

Dettagli

Prima lezione di laboratorio. I mattoni di base di un programma Java. Comandi Unix. Riassunto. Oggi. Un programma complicato.

Prima lezione di laboratorio. I mattoni di base di un programma Java. Comandi Unix. Riassunto. Oggi. Un programma complicato. I mattoni di base di un programma Java Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@dimi.uniud.it Programmazione, lezione 2 1 ottobre

Dettagli

Definizione di metodi

Definizione di metodi Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 9 Definizione di metodi Carla Limongelli Novembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Definizione di metodi 1 Contenuti

Dettagli

Lezione 9 programmazione in Java Classi come contenitori

Lezione 9 programmazione in Java Classi come contenitori Lezione 9 programmazione in Java Classi come contenitori Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Gestione della Memoria Dati dinamici e statici Il passaggio

Dettagli

Operazioni numeriche - Input

Operazioni numeriche - Input Operazioni numeriche - Input Espressioni, funzioni matematiche, classi involucro, Acquisizione di input 11/11/2004 Laboratorio di Programmazione - Luca Tesei 1 Operazioni fra interi e decimali In Java

Dettagli

Riassunto. I mattoni di base di un programma Java. Oggi. Un programma complicato. Oggi. Perché è complicato? Stefano Mizzaro 1.

Riassunto. I mattoni di base di un programma Java. Oggi. Un programma complicato. Oggi. Perché è complicato? Stefano Mizzaro 1. I mattoni di base di un programma Java Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione, lezione 2 28 settembre

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Le basi del linguaggio Java Aprile 2010 Le basi del linguaggio Java 1 Prerequisiti Nozioni generali sulla sintassi e semantica del

Dettagli

Allocazione Dinamica della Memoria

Allocazione Dinamica della Memoria Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella Corso di Informatica Tipi strutturati: Stringhe Anno Accademico 2010/2011 Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri quali

Dettagli

Linguaggi ad oggetti (object oriented) LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE. Programmazione ad oggetti

Linguaggi ad oggetti (object oriented) LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE. Programmazione ad oggetti LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE Anno Accademico 2000-2001 Alberto Martelli Programmazione ad Oggetti Parte I Linguaggi ad oggetti (object oriented) I linguaggi di programmazione

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso AA 2015/2016 Tutor: Vincenzo Lomonaco vincenzo.lomonaco@unibo.it Programma Introduzione al calcolatore

Dettagli

Linguaggio C: le funzioni. Introduzione e sintassi

Linguaggio C: le funzioni. Introduzione e sintassi ISIS "Guido Tassinari" di Pozzuoli Indirizzo Informatico - Articolazione Informatica Informatica Prof. A.S. 2012/2013 Linguaggio C: le funzioni. Introduzione e sintassi 21/10/2012 Introduzione Spesso alcuni

Dettagli

Tipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Tipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. Array di Tipi di dato utente Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Array di Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione

Dettagli

Specifica: la sintassi. Specifica: la semantica. Specifica: la semantica

Specifica: la sintassi. Specifica: la semantica. Specifica: la semantica Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi Che cos è un tipo di dato? Tutti i linguaggi di programmazione tipati forniscono tipi ed operatori predefiniti

Dettagli

Oggetti Composti (1) Oggetti Composti (2)

Oggetti Composti (1) Oggetti Composti (2) Oggetti Composti () Negli esempi che abbiamo visto finora gli attributi delle classi erano variabili di tipo primitivo E però possibile definire come attributi dei riferimenti ad oggetti di qualche classe

Dettagli

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

Oggetti e classi. Cos è un oggetto

Oggetti e classi. Cos è un oggetto Oggetti e classi Cos è un oggetto Basta guardarsi intorno per scoprire che il mondo reale è costituito da oggetti: libri, biciclette, giocattoli, ma anche ragazzi, bambini, fiori, gatti, cani, fiumi, montagne,

Dettagli

Uso di metodi statici. Walter Didimo

Uso di metodi statici. Walter Didimo Uso di metodi statici Walter Didimo Metodi di istanza Fino ad ora abbiamo imparato a creare oggetti e ad invocare metodi su tali oggetti i metodi venivano eseguiti dagli oggetti un metodo invocato su un

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 Sommario Paradigma O.O. Oggetti e Classi Ereditarietà Paradigma Object-Oriented Il paradigma O.O. si ispira all ambiente che ci circonda,

Dettagli

Strutture dati e loro organizzazione. Gabriella Trucco

Strutture dati e loro organizzazione. Gabriella Trucco Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi

Dettagli

OO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini

OO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini Primi concetti di Java Lorenzo Bettini OO puro Java è object-oriented puro Non come il C+ + (OO ibrido) Per compatibilità col C Ogni cosa è un oggetto Gli oggetti si manipolano tramite riferimenti String

Dettagli

Programmazione orientata agli oggetti

Programmazione orientata agli oggetti Programmazione orientata agli oggetti La programmazione orientata agli oggetti (OOP, Object Oriented Programming) è un paradigma di programmazione che prevede di raggruppare in un unica entità (la classe)

Dettagli

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. Cicli e array Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione all ambiente

Dettagli

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

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

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input

Dettagli

Il concetto di Package

Il concetto di Package Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2008-2009 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 19 - Package in Java 1 Il concetto

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Costruttori di copia, funzioni di accesso e variabili static aa 2008/2009 Claudio De Stefano Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/2009 1

Dettagli

Il paradigma OO e le Classi

Il paradigma OO e le Classi Oggetti e Classi (CAP 10) Alberto Garfagnini Università degli studi di Padova 1 Dicembre 2009 Il paradigma OO e le Classi La programmazione ad Oggetti () è una filosofia di programmazione che si basa sui

Dettagli

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Linguaggio C: le funzioni. Introduzione e sintassi

Linguaggio C: le funzioni. Introduzione e sintassi Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Introduzione e sintassi La presente dispensa

Dettagli

Una classe Borsellino. Tipi numerici di base - Costanti. Esempio d uso. Classe Borsellino cont d. Primi passi per l implementazione di Purse

Una classe Borsellino. Tipi numerici di base - Costanti. Esempio d uso. Classe Borsellino cont d. Primi passi per l implementazione di Purse Una classe Borsellino Tipi numerici di base - Interi e decimali Definizione di costanti /** Realizza un borsellino per le monete. Registra il numero di monete e calcola il valore totale public class Purse

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Sintassi e Semantica: Convenzioni di Stile versione 1.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi

Dettagli

5 - Istruzioni condizionali

5 - Istruzioni condizionali 5 - Istruzioni condizionali 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

Informatica I. Ingegneria Medica. Prof. Diego Salamon

Informatica I. Ingegneria Medica. Prof. Diego Salamon Informatica I Ingegneria Medica Prof. Diego Salamon Java: Classi e Oggetti Prof. Diego Salamon Metafore Classi e Oggetti sono un astrazione della realtà. I linguaggi orientati agli oggetti contengono livelli

Dettagli

ADT: Abstract Data Type. Quasi ADT. ADT per collezioni di dati (code generalizzate) 04 I tipi di dati astratti (I parte)

ADT: Abstract Data Type. Quasi ADT. ADT per collezioni di dati (code generalizzate) 04 I tipi di dati astratti (I parte) ADT: Abstract Data Type I tipi di dati astratti (I parte) Gianpiero Cabodi e Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Scopo Livello di astrazione sui dati tale da mascherare completamente

Dettagli

Programmazione 1 A.A. 2015/2016

Programmazione 1 A.A. 2015/2016 Cognome e Nome Matricola Programmazione 1 A.A. 2015/2016 Appello del 16 Dicembre 2015 Compito n 1 Prima parte Esercizio 1 (10 punti) Cosa stampa il seguente frammento di codice Java? int[] A = {3, 8, 91,

Dettagli

Esercizio 3. Oppure fare queste operazioni nel metodo main all interno della classe Persona.

Esercizio 3. Oppure fare queste operazioni nel metodo main all interno della classe Persona. Esercizio 3 Scrivere un programma con i seguenti requisiti. Utilizzare una classe Persona che dichiara le variabili nome, cognome, età. Si dichiari inoltre un metodo dettagli() che restituisce in una stringa

Dettagli

Università di Roma Tor Vergata L12-1

Università di Roma Tor Vergata L12-1 Università di Roma Tor Vergata L12-1 soluzione di un problema fl 1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio

Dettagli

Strutture Dati. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Strutture Dati 1 / 16

Strutture Dati. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Strutture Dati 1 / 16 Strutture Dati Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Strutture Dati 1 / 16 Introduzione Fino ad ora nei nostri programmi abbiamo usato Variabili;

Dettagli

Lezione 6. Visibilità degli identificatori e tempo di vita degli oggetti

Lezione 6. Visibilità degli identificatori e tempo di vita degli oggetti Lezione 6 Visibilità degli identificatori e tempo di vita degli oggetti Programmazione I Paolo Valente - 2009/2010 Ripasso dichiarazioni oggetti Finora abbiamo scritto le dichiarazioni di variabili e costanti

Dettagli

Gestione dinamica della memoria

Gestione dinamica della memoria Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.

Dettagli

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo.

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo. Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 21 settembre 2015 TEMPO DISPONIBILE: 1 ora e 40

Dettagli

Università degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria

Università degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria di Cassino e del Lazio Meridionale Corso di Informatica Allocazione dinamica di memoria Anno Accademico 2015/2016 Francesco Tortorella Allocazione dinamica di memoria Finora abbiamo considerato variabili

Dettagli

Laboratorio di Programmazione 1 [Java]

Laboratorio di Programmazione 1 [Java] Laboratorio di Programmazione 1 [Java] Prova di esame - 7 Settembre 2010 Tempo massimo: 50 minuti Si implementino in Java le classi Tavolo e Ristorante. La classe Tavolo ha i seguenti attributi: numero

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA1 1.1 Programmazione base 1 Prerequisiti Saper scrivere algoritmi elementari Tecniche elementari di sviluppo di una applicazione Modalità a riga di comando Utilizzo

Dettagli

Programmazione orientata agli oggetti: le classi

Programmazione orientata agli oggetti: le classi Programmazione orientata agli oggetti: le classi Oggetti e tipi di dati La programmazione che abbiamo visto finora agisce su variabili che appartengono a tipi di dati predefiniti: interi, floating point,

Dettagli

Fondamenti di Informatica I

Fondamenti di Informatica I Sapienza Università di Roma, Facoltà di Ingegneria Corso di Fondamenti di Informatica I Canale 1 (A-K) Anno Accademico 2009-2010 Corso di Laurea in Ingegneria Informatica Docente: Camil Demetrescu Esercitatore:

Dettagli

Finestre di dialogo. Corso di Laboratorio di Programmazione Web. Controllo dell input e window.alert. prompt di stringhe!

Finestre di dialogo. Corso di Laboratorio di Programmazione Web. Controllo dell input e window.alert. prompt di stringhe! Corso di Funzioni ed Oggetti Finestre di dialogo prompt( Inserisci il valore, 1000 ); restituisce la stringa inserita nel campo alarm( Stai per uscire! ); Dipartimento di Informatica Università degli Studi

Dettagli

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave

Dettagli

Programmazione orientata agli oggetti Classi, package e file system. Package

Programmazione orientata agli oggetti Classi, package e file system. Package Programmazione orientata agli oggetti Classi, package e file system 1 Classi e file Java impone delle regole molto precise di corrispondenza tra classi e file In generale, le regole sono: Ogni classe deve

Dettagli

PARTE II. Introduzione al Paradigma della PROGRAMMAZIONE ORIENTATA AGLI OGGETTI

PARTE II. Introduzione al Paradigma della PROGRAMMAZIONE ORIENTATA AGLI OGGETTI PARTE II Introduzione al Paradigma della PROGRAMMAZIONE ORIENTATA AGLI OGGETTI 1 INDICE Capitolo 1 La Strutturazione dei Dati. 3 1.1 Tipi bulit-in e primitivi 3 1.2 Aggregati di Dati e Costruttori di Tipi..

Dettagli

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

Laboratorio di Matematica e Informatica 1

Laboratorio di Matematica e Informatica 1 Laboratorio di Matematica e Informatica 1 Matteo Mondini Antonio E. Porreca matteo.mondini@gmail.com porreca@disco.unimib.it Dipartimento di Informatica, Sistemistica e Comunicazione Università degli Studi

Dettagli