Sgomberiamo il campo dai dubbi
|
|
- Rossana Bernardini
- 6 anni fa
- Visualizzazioni
Transcript
1 Il linguaggio Java 1 Sgomberiamo il campo dai dubbi Cosa non è Java: Non è un linguaggio per animare il WWW Non è una versione ridotta del C++ Non è lo strumento che segnerà la fine di Microsoft Cosa è Java Un moderno linguaggio di programmazione OO Orientato alla programmazione di applicazioni network-centric 2
2 Perché Java Il problema: L inadeguatezza dello schema di sviluppo tradizionale (binary distribution) in ambienti distribuiti e multipiattaforma La soluzione: Java, un linguaggio O.O. per lo sviluppo di applicazioni architecture independent, robuste, adattabili, scalabili ed efficienti 3 Java: caratteristiche generali - 1 Familiare: La sintassi di Java ricalca la sintassi del C++ Un programmatore C++ non incontra grosse difficoltà ad imparare il linguaggio Java Semplice: Programmare usando Java è molto più semplice di programmare usando altri linguaggi OO (C++) Un buon programmatore Java è più produttivo di un buon programmatore C++ 4
3 Java: caratteristiche generali - 2 Object-oriented: Java è un linguaggio OO puro con ereditarietà, binding dinamico ed oggetti gestiti tramite riferimenti Il costrutto delle interfaces fornisce le potenzialità dell ereditarietà multipla senza alcun problema di duplicazione di codice Portabile: La specifica del linguaggio non contiene componenti implementation dependent 5 Java: caratteristiche generali - 3 Architecture neutral: L applicazione viene compilata in un linguaggio intermedio (Java ByteCode) che viene interpretato L interprete nasconde le caratteristiche peculiari dell hardware e del sistema operativo Lo stesso codice oggetto può essere eseguito su tutte le piattaforme per le quali venga fornito un interprete Java (attualmente Solaris, Windows NT/95, MacOS, OS/2, AIX, e Linux) 6
4 Java: caratteristiche generali - 4 Dinamico: Le fasi di loading e linking avvengono a run-time Robusto: Java è un linguaggio fortemente tipizzato con numerose caratteristiche che diminuiscono la possibilità di introdurre errori nelle applicazioni, tra le quali: assenza di puntatori abbondanza di controlli run-time (rispetto dei limiti degli array, controlli di tipo, controlli sul codice caricato dinamicamente, ecc.) gestione automatica della memoria (garbage collecting) 7 Java: caratteristiche generali - 5 Multi-threaded: Java supporta la gestione dei thread a livello di linguaggio, oltre che di macchina virtuale, fornendo la possibilità di creare facilmente applicazioni concorrenti 8
5 L ambiente Java Java Source Byte code Loader Java Compiler Byte Code moves through network or file system Byte code Verifier Java Byte Code Interpreter Machine Code Generator (JIT) Run time Hardware/OS 9 Java - il primo programma file: HelloWorld.java public class HelloWorld { public static void main(string args[]){ System.out.println( Hello world! ); 10
6 Compilazione ed esecuzione c:\classes>javac HelloWorld.java c:\classes>java HelloWorld HelloWorld! c:\classes> 11 La struttura di un programma Java - nozioni preliminari Un programma Java è organizzato come un insieme di classi Classi diverse possono essere raggruppate all interno della stessa Compilation unit Il programma principale è rappresentato da un metodo speciale della classe il cui nome coincide con il nome del programma 12
7 Java - il primo programma grafico File: HelloWorldWindow.java import java.awt.*; package examples, class HelloWorldWindow { public static void main(string args[]) { Frame f=new Frame("HelloWorldWindow"); f.add(new Label("HelloWorld!",Label.CENTER),"Center"); f.pack(); f.setvisible(true); 13 Compiliazione ed esecuzione c:\classes>cd examples c:\classes\examples>javac HelloWorldWindow.java c:\classes\examples>cd.. c:\classes>java examples.helloworldwindow c:\classes> 14
8 La struttura di un programma Java Package Ogni package contiene una o più compilation unit Il package introduce un nuovo ambito di visibilità dei nomi Compilation unit Ogni compilation unit contiene una o più classi o interfaccie delle quali una sola pubblica Classi e interfaccie Relazioni con il file system package directory compilation unit file 15 Il linguaggio Java in dettaglio Costrutti per la programmazione in the small Il type system di Java Tipi predefiniti e relative costanti ed operatori Tipi definiti dall utente Dichiarazione di variabili Istruzioni per il controllo di flusso Costrutti per la programmazione in the large Classi Interfaccie Packages 16
9 I commenti in Java // questo è un commento che termina con la fine della linea /* questo è un commento che può spaziare su più linee */ 17 Identificatori Gli identificatori (nomi di classi, variabili, attributi, metodi ecc.) sono sequenze alfanumeriche che: Devono iniziare con una lettera o con il carattere '_' Il resto dell identificatore può contenere sia lettere che numeri, o il carattere '_' Non devono coincidere con una delle parole riservate Esempi Ok: HelloWorld helloworld h ello_world prova PROVA prova1 prova1a prova2 Errati: 2prova +prova prova + hello-world hello? prova-1 Java è case sensitive 18
10 Le costanti Costanti intere: L 0xff34d 0xcafebabeL L Costanti reali: e+3 1.0E f F D e-2f Costanti boolean: true false Costanti carattere: a % \t \n \\ \ \123 Costanti di tipo stringa: prova prova\n prova( \ aaa\ ) 19 Il tipe system di Java Java è un linguaggio fortemente tipizzato Distinguiamo tra: tipi primitivi tipi riferimento 20
11 I tipi primitivi Tipi numerici: byte: 8 bit short: 16 bit int: 32 bit long: 64 bit float: 32 bit, secondo specifica IEEE754 double: 64 bit, secondo specifica IEEE754 Altri tipi: boolean: true o false char: 16 bit, carattere Unicode 21 Operatori per i tipi numerici - 1 Operatori unari operatori di segno +x -x incremento e decremento (prefissi e/o postfissi) ++x --x x++ x-- operatore di complemento binario (valido per soli tipi interi ): ~x 22
12 Operatori per i tipi numerici - 2 Operatori binari validi per tutti i tipi numerici x+y x-y x*y x/y x%y validi per i soli tipi interi x<<y x>>y x>>>y x&y x y x^y Operatori di confronto x==y x!=y x<y x>y x<=y x>=y 23 Operatori per il tipo boolean Operatore unario negazione logica:!x Operatori binari operatori standard x&y x y x^y operatori con semantica condizionale x&&y x y operatori di confronto x==y x!=y 24
13 Operatori per il tipo char Operatori di confronto x==y x!=y x<y x>y x<=y x>=y 25 Gli operatori di auto assegnamento E` possibile usare l operatore: x?= y al posto di un qualsiasi operatore? che sia lecito utilizzare nell espressione: x=x?y Tale espressione equivale alla precedente x?=y Esempi: x+=5 equivale a x=x+5 x*=2 equivale a x=x*2 26
14 Altri operatori Operatore condizionale si applica a tutti i tipi <condizione>? <valore1> : <valore2> L assegnamento come operatore x=y=3 (y=3)==3 L operatore di concatenazione tra stringhe si applica a tutti i tipi pippo +2 pippo I tipi riferimento Tipi array Tipi definiti dall utente 28
15 Tipo array Dato un tipo T (predefinito o definito dall utente) un array di T è definito come: T[] Similmente sono dichiarati gli array multidimensionali: T[][] T[][][] Esempi: int[] float[][] Persona[] 29 Tipi definiti dall utente Classi Interfaccie... i dettagli nel seguito 30
16 Dichiarazione e inizializzazione di variabili Dichiarazione int i; int i,j; Persona p; float f1,f2; double d; Inizializzazione int i=0; int i=0, j=4; Persona p=new Persona(); float f1=1.23f, f2=127.2f; double d=1.23; 31 Dichiarazione e inizializzazione di variabili: gli array Dichiarazione: int[] ai1, ai2; float[] af1; double ad[]; Persona[][] ap; Inizializzazione: int[] ai={1,2,3; double[][] ad={{1.2, 2.5, {1.0,
17 Dichiarazione di array ed allocazione di memoria La dichiarazione di un array non alloca spazio per gli elementi dell array L allocazione si realizza dinamicamente tramite l operatore new int[] i=new int[10], j; float[][] f=new float[10][10]; Persona[] p=new Persona[30]; j=new int[30]; che alloca però solo lo spazio per l array, non per i suoi elementi (tranne nel caso di tipi predefiniti). 33 Istruzioni per il controllo del flusso Sequenza di istruzioni Blocco di istruzioni Istruzione condizionale Cicli Ciclo con uscita all inizio Ciclo con uscita alla fine Ciclo con uscita in mezzo Ciclo con contatore Istruzione switch 34
18 Sequenza e blocco Una sequenza di istruzioni è composta da una serie di istruzioni separate dal carattere ; a=3; b=4; c=a*b+3; Un blocco di istruzioni è composto da una sequenza di istruzioni racchiuse da parentesi graffe {a=1; b=3; c=a+128; Un blocco di istruzioni è equivalente ad una singola istruzione 35 Istruzione condizionale Permette la scelta tra due diversi percorsi del flusso di controllo Sintassi if(<condizione>) <istruz.1> [else <istruz.2>] Il ramo else si lega all istruzione if più vicina 36
19 Istruzione condizionale: esempi Esempio 1: if(x==5) System.out.println( x vale 5 ); System.out.println( fatto! ); Esempio 2: if(x>0 && y>0) System.out.println( x ed y positivi ); else if(x>0) System.out.println( x positivo ); else if(y>0) System.out.println( y positivo ); else System.out.println( nessuno dei due positivi ); System.out.println( fatto! ); 37 Istruzione condizionale: esercizio Si scriva un programma che legge un intero su riga di comando corrispondente ad un mese e restituisce il numero di giorni in quel mese Si faccia uso dell istruzione: Integer.parseInt(<string>) che restituisce un intero a partire da una stringa 38
20 Ciclo con condizione all inizio Sintassi: while(<condizione>) <istruzione> ; Esempio int r=5; while(r>0) { System.out.println( HelloWorld! ); r--; 39 Ciclo con condizione all inizio: esercizio Si scriva un programma per il calcolo del fattoriale Si scriva un programma che legge un intero da riga di comando e stampa a video un triangolo formato da * con base di lunghezza pari all intero letto Si osservi che l istruzione: System.out.print(<string>) stampa la stringa passata come parametro senza andare a capo 40
21 Ciclo con condizione alla fine Sintassi: do <istruzione> while(<condizione>) Esempio: int r=5; do { System.out.println("HelloWorld!"); r--; while(r>0); 41 Ciclo con condizione alla fine: esercizio Si scriva un programma che esegue il prodotto tra due numeri secondo l algoritmo delle somme ripetute. Si faccia uso del ciclo con condizione alla fine 42
22 Ciclo con condizione in mezzo E` possibile uscire da un ciclo tramite l istruzione break Sfruttando questo fatto è possibile creare cicli con condizione di terminazione in mezzo Esempio: java.io.fileinputstream s=new FileInputStream( a ); while(true) { b=s.read(); if(b==0) break; System.out.println(b); 43 Ciclo con condizione in mezzo: esercizio Si scriva un programma che legge un file byte a byte salvando il contenuto in un array di 500 byte. Il programma deve terminare quando la fine del file è stata raggiunta o quando si sono letti 500 byte Si osservi che l istruzione: s.read() applicata ad un FileInputStream s restituisce -1 quando si è raggiunta la fine del file. 44
23 Ciclo con contatore Sintassi: for(<istr1>; <condiz>; <istr2>) <istr3> Equivalente a: <istr1>; while(<condiz>) { <istr3> <istr2> 45 Ciclo con contatore: esempi Esempio 1: int r; for(r=0; r<5; r++) System.out.println( HelloWorld! ); Esempio 1 bis: for(int r=0; r<5; r++) System.out.println( HelloWorld! ); Esempio 2: for(int r=0; r<10; r+=2) System.out.println( r= +r); 46
24 Ciclo con contatore: esercizio Si scriva un programma che stampa a video le tabelline (da 1 a 10). Si faccia uso del ciclo con contatore 47 Ancora sull istruzione break Sintassi completa di un istruzione break: break [<label>] Significato: restituisce il controllo all istruzione che include quella con il break e che è marcata con l identificatore specificato Esempio: ciclo1 : while(true) { ciclo2 : while(true) { leggi(x); if(x==1) break ciclo1; else break ciclo2; 48
25 Istruzione switch Sintassi: switch(<espressione>) { case <espr_cost_1> : [<istr_1>;]* case <espr_cost_2> : [<istr_2>;]*... case <espr_cost_n> : [<istr_n>;]* [ default : [<istr>;]* ] L espressione all interno dello switch deve essere di tipo char, byte, short, o int 49 Istruzione switch: esempio public class Prova { static public void main(string[] args) { int x=integer.parseint(args[0]); switch(x) { case 1: case 2: case 3: System.out.println( x pari a 1,2 o 3 ); break; case 4: System.out.println( x pari a 4 ); break; default: System.out.println( x diverso da 1,2,3 o 4 ); 50
26 Istruzione switch: esercizio Si scriva un programma che legge un intero su riga di comando corrispondente ad un mese e restituisce il numero di giorni in quel mese. Si usi l istruzione switch 51 Conversioni automatiche di tipo Promozioni byte -> short, int, long, float, double short -> int, long, float, double int -> long, float, double long -> float or double float -> double char -> int, long, float, double 52
27 Conversioni forzate: casting È possibile forzare una conversione di tipo attraverso l operatore di casting: (<tipo>)<espressione> Tra tipi semplici sono consentite le seguenti conversioni (con perdita di informazione) short -> byte, char char -> byte, short int -> byte, short, char long -> byte, short, char, int float -> byte, short, char, int, long double -> byte, short, char, int, long, float byte -> char 53 Classi I costrutti OO per la programmazione in the large Interfaccie Ereditarietà Polimorfismo e binding dinamico Packages 54
28 Definizione di una nuova classe Una nuova classe viene definita nel seguente modo: class <nome classe> { <lista di definizioni di attributi e metodi> Esempio: class Automobile { Definizione di attributi Gli attributi di una classe definiscono la struttura dello stato degli oggetti che vi appartengono Ogni attributo è definito usando la stessa sintassi usata per la definizione delle variabili locali Esempio class Automobile { String colore, marca, modello; int cilindrata, numporte; boolean accesa; 56
29 Definizione di metodi I metodi di una classe definiscono il comportamento degli oggetti che vi appartengono Ogni metodo è definito come segue: <tipo val. rit.> <nome.>([<dic. par. formali>]) <corpo> Il tipo void viene utilizzato per metodi che non ritornano alcun valore 57 Definizione di metodi: esempio class Automobile { String colore, marca, modello; int cilindrata, numporte; boolean accesa; void accendi() {accesa=true; boolean puopartire() {return accesa; void dipingi(string col) {colore=col; void trasforma(string ma, String mo) { marca=ma; modello=mo; 58
30 Visibilità dei nomi I nomi degli attributi e dei metodi sono visibili all interno di tutta la classe Le variabili dichiarate in un blocco sono visibili solo all interno del blocco Le variabili locali ad un metodo (o i parametri formali) possono mascherare gli attributi Le variabili dichiarate all interno di un blocco possono mascherare le variabili dichiarate all interno di blocchi più esterni 59 Oggetti Ogni variabile il cui tipo sia una classe (o un interfaccia) contiene un riferimento ad un oggetto Nuovi oggetti sono costruiti usando l operatore new Esempio: Automobile a=new Automobile(); Ad una variabile di tipo riferimento può essere assegnato il riferimento null 60
31 Accesso ad attributi e metodi di un oggetto L accesso ad attributi e metodi di un oggetto per il quale si abbia un riferimento si effettua tramite la notazione punto Esempio: Automobile a=new Automobile(); a.accendi(); a.dipingi( Blu ); System.out.println( Num. porte: +a.numporte); 61 Accesso ad attributi e metodi di un oggetto da metodi dello stesso oggetto Nella definizione di un metodo ci si riferisce ad attributi e metodi dell oggetto sul quale il metodo sia stato invocato direttamente (senza notazione punto) Esempio class Automobile {... boolean puopartire() {return accesa; void dipingi(string col) {colore=col;... La pseudo-variabile this contiene un riferimento all oggetto corrente e può essere utilizzata per aggirare eventuali mascheramenti 62
32 La pseudo-variabile this: esempio class Automobile { String colore, marca, modello; int cilindrata, numporte; boolean accesa; void accendi() {accesa=true; boolean puopartire() {return accesa; void dipingi(string col) {this.colore=col; void trasforma(string marca, String modello) { this.marca=marca; this.modello=modello; 63 Classi: esercizio Si definisca l insieme di classi necessarie per descrivere un computer (Monitor, Tastiera, Mouse, Case, Scheda) 64
33 Passaggio parametri I parametri il cui tipo sia uno dei tipi semplici sono passati per copia I parametri il cui tipo sia un tipo riferimento (classi, interfacce e array) sono passati per copia del riferimento ovvero, gli oggetti sono passati per riferimento 65 Overloading All interno di una stessa classe possono esservi più metodi con lo stesso nome purché si distinguano per numero e/o tipo dei parametri Il tipo del valore di ritorno non basta a distinguere due metodi Esempio: class C { int f() {... int f(int x) {... // corretto void f(int x) {... // errato 66
34 Creazione e distruzione di oggetti La creazione di un oggetto comporta due operazioni: l allocazione della memoria necessaria a contenere l oggetto e l inizializzazione dello spazio allocato Quest ultima operazione è svolta dal costruttore A differenza del C++ in Java non è necessario deallocare esplicitamente gli oggetti creati con una operazione new. Di ciò si occupa il garbage collector 67 Costruttori Nella definizione di una classe è possibile specificare uno o più costruttori Il costruttore è un metodo particolare che ha lo stesso nome della classe Nel caso ci siano più costruttori, essi si distinguono perché differiscono per numero e/o tipo dei parametri Per i costruttori non viene indicato il tipo del risultato (è implicito nel nome del costruttore) Il costruttore di default (senza parametri) viene fornito dal compilatore a meno che non si definiscano altri costruttori 68
35 Costruttori: esempio class Automobile { String colore, marca, modello; int cilindrata, numporte; boolean accesa; Automobile() { colore=marca=modello= null; cilindrata=numporte=0; Automobile(String colore, String marca, String modello) { this.colore=colore; this.marca=marca; this.modello=modello; void accendi() {accesa=true; boolean puopartire() {return accesa; void dipingi(string col) {this.colore=col; 69 Ancora sui costruttori È possibile invocare un costruttore dall interno di un altro tramite la notazione: this(<elenco di parametri attuali>); Esempio: class Persona { String nome; int eta; Persona(String nome) {this.nome=nome; eta=0; Persona(String nome, int eta) { this(nome); this.eta=eta; 70
36 Classi e costruttori: esercizio Esercizio 1: Si costruisca una classe che implementa uno stack di interi di dimensione fissa (stabilita in fase di costruzione) Esercizio 2: Si modifichi la classe precedente (introducendone altre se necessario) per implementare uno stack di dimensione variabile (allocazione dinamica di memoria) Esercizio 3: Si usi la classe precedente per realizzare un programma che legge un file byte a byte e lo inverte 71 Metodi e attributi di classe Sintassi: static <definizione dell attributo o metodo> Un attributo di classe è condiviso da tutti gli oggetti della classe Si può accedere ad un attributo di classe senza bisogno di creare un oggetto tramite la notazione: <nome classe>.<nome attributo> Un metodo di classe può essere invocato senza bisogno di creare un oggetto tramite la notazione: <nome classe>.<nome metodo>(<par. attuali>) 72
37 Metodi e attributi di classe: vincoli Un metodo static può accedere ai soli attributi e metodi static Un metodo convenzionale può accedere liberamente a metodi ed attributi static 73 Metodi e attributi di classe: esempio class Shape { static Screen screen=new Screen(); // si noti l iniz. static void setscreen(screen s) {screen=s; void show(screen s) {setscreen(s); Shape.setScreen(new Screen()); // corretto Shape.show(); // errato, show è un metodo normale Shape s1=newshape(), s2=new Shape(); Screen s=new Screen(); s1.setscreen(s); // corretto, si possono chiamare // metodi static su oggetti // in questo punto s2.screen==s1.screen==s 74
38 Attributi costanti È possibile definire attributi costanti tramite la notazione: final <definizione di attributo>=<valore> Esempio class Automobile { int colore; final int BLU=0, GIALLO=1,...; void dipingi(int colore) {this.colore=colore;... Automobile a=new Automobile(); a.blu=128; // errato System.out.println( BLU= +a.blu); // corretto 75 Esercizio È corretto affermare che tramite attributi e metodi di classe e attributi costanti è possibile definire funzioni, variabili e costanti globali? 76
39 La gerarchia di ereditarietà Le classi di un sistema OO sono legate in una gerarchia di ereditarietà Data una classe C, una sottoclasse di C si definisce tramite la notazione: class K extends C { <definiz. di attr. e metodi> La sottoclasse eredita tutti gli attributi ed i metodi della sopraclasse Java supporta solo ereditarietà semplice 77 La classe Object In mancanza di una differente indicazione, una classe Java estende la classe Object La classe Object fornisce alcuni metodi tra i quali vale la pena citare i seguenti: public boolean equals(object); protected void finalize(); public String tostring(); 78
40 Overriding Una sottoclasse può aggiungere nuovi attributi e metodi ma anche... ridefinire i metodi delle sue sopraclassi Esempio: class AutomobileElettrica extends Automobile { boolean batteriecariche; void ricarica() {batteriecariche=true; void accendi() { if(batteriecariche) accesa=true; else accesa=false; 79 La pseudo variabile super All interno di un metodo che ridefinisce un metodo della sopraclasse diretta ci si può riferire al metodo che si sta ridefinendo tramite la notazione: super.<nome metodo>(<lista par. attuali>) Esempio: class AutomobileElettrica extends Automobile {... void accendi() { if(batteriecariche) super.accendi(); else System.out.println( Batterie scariche ); 80
41 Ereditarietà e costruttori I costruttori non vengono ereditati All interno di un costruttore è possibile richiamare il costruttore della sopraclasse tramite la notazione: super(<lista di par. attuali>) posta come prima istruzione del costruttore Se il programmatore non chiama esplicitamente un costruttore della sopraclasse, il compilatore inserisce automaticamente il codice che invoca il costruttore di default della sopraclasse 81 Ereditarietà: esercizio Si definisca una classe Persona e due sottoclassi Uomo e Donna. La classe Persona deve avere un metodo chisei() che stampa il nome della persona. Nelle sottoclassi tale metodo deve essere ridefinito perché stampi anche il sesso 82
42 Information hiding in Java Attributi e metodi di una classe possono essere: pubblic sono visibili a tutti vengono ereditati protected sono visibili solo alle sottoclassi vengono ereditati private sono visibili solo all interno della stessa classe non sono visibili nelle sottoclassi 83 Information hiding: esempio class Automobile { private String colore, marca, modello; private int cilindrata, numporte; private boolean accesa; public Automobile() { colore=marca=modello=null; cilindrata=numporte=0; public Automobile(String col, String ma, String mo) {colore=col; marca=ma; modello=mo; public void accendi() {accesa=true; public boolean puopartire() {return accesa; public void dipingi(string col) {colore=col; 84
43 Information hiding: esercizio Si modifichi l esercizio precedente introducendo le dichiarazioni di visibilità per i membri delle classi 85 Classi e metodi astratti Un metodo astratto è un metodo per il quale non viene specificata alcuna implementazione Una classe è astratta se contiene almeno un metodo astratto Non è possibile creare istanze di una classe astratta Le classi astratte sono molto utili per introdurre della astrazioni di alto livello 86
44 Classi e metodi astratti: esempio abstract class Shape { static Screen screen; Shape(Screen s) {screen=s; abstract void show(); class Circle extends Shape { void show() { Shape s=new Shape(); // errato Circle c=new Circle(); // corretto 87 Classi astratte: esercizio Nell esercizio precedente si introduca una classe astratta OggettoConNome, sopraclasse di Persona 88
45 Classi e metodi final Se vogliamo impedire che sia possibile creare sottoclassi di una certa classe la definiremo final Esempio: final class C {... class C1 extends C // errato Similmente, se vogliamo impedire l overriding di un metodo dobbiamo definirlo final Esempio: class C { final void f() {... class C1 extends C { void f() {... // errato 89 Ereditarietà ed array Se X è una sopraclasse di Y allora l array X[] è sopra-array dell array Y[] Lo stesso vale per gli array multidimensionali Tale scelta non è type safe Esempio: void f(x[] ax) { ax[0]=new X();... f(new Y[10]); 90
46 I limiti dell ereditarietà semplice L ereditarietà semplice non permette la descrizione di numerose situazioni reali Esempio: Supponiamo di avere una classe Giocattolo ed una classe Automobile. In assenza di ereditarietà multipla non posso definire la classe AutomobileGiocattolo 91 I problemi dell ereditarietà multipla In presenza di ereditarietà multipla è possibile ereditare due o più metodi con la stessa signature da più sopraclassi. Ciò determina un conflitto tra implementazioni diverse C1 f (int i) : int C2 f (int i) : int K f (int i) : int C1 C2 C C 92
47 Ereditarietà semplice vs. ereditarietà multipla: la soluzione di Java Distinguere tra una gerarchia di ereditarietà (semplice) ed una gerarchia di implementazione (multipla)... introducendo il costrutto delle interfacce In tal modo è possibile distinguere tra l uso dell ereditarietà al fine di riutilizzare il codice e l uso al fine di descrivere una gerarchia di tipi 93 Interfacce Una interfaccia è una classe priva di attributi non costanti ed i cui metodi sono tutti pubblici ed astratti Sintassi: interface <nome> { <lista di definizione di metodi privi di corpo> 94
48 Interfacce ed ereditarietà Una interfaccia può ereditare da una o più interfacce Sintassi: interface <nome> extends <nome 1 >,..,<nome n > {... La gerarchia di ereditarietà tra interfacce definisce una gerarchia di tipi 95 Interfacce: esercizio In che senso una interfaccia descrive un tipo meglio di una classe? 96
49 La gerarchia di implementazione Una classe può implementare una o più interfacce se la classe non è astratta deve fornire una implementazione per tutti i metodi presenti nelle interfacce che implementa altrimenti la classe è astratta Sintassi: class <nome> implements <nome 1 >,..,<nome n > { Polimorfismo Polimorfismo è la capacità per un elemento sintattico di riferirsi a elementi di diverso tipo In Java una variabile di un tipo riferimento T può riferirsi ad un qualsiasi oggetto il cui tipo sia T o un sottotipo di T Similmente un parametro formale di un tipo riferimento T può riferirsi a parametri attuali il cui tipo sia T o un sottotipo di T 98
50 Polimorfismo: esempio class Automobile {... class AutomobileElettrica extends Automobile {... class Parcheggio { private Automobile buf[]; private int nauto; public Parcheggio(int dim) {buf=new Automobile[dim]; public void aggiungi(automobile a) {buf[nauto++]=a;... Automobile a=new AutomobileElettrica(); Parcheggio p=new Parcheggio(100); p.aggiungi(new AutomobileElettrica()); 99 Polimorfismo ed interfacce Una interfaccia può essere utilizzata come tipo di una variabile Una siffatta variabile potrà riferirsi ad un qualsiasi oggetto che implementi l interfaccia (polimorfismo) Esempio: interface OggettoCheSpara { spara(); class Pistola implements OggettoCheSpara {... OggettoCheSpara o=new Pistola(); o.spara(); 100
51 Polimorfismo: tipo statico e tipo dinamico In presenza di polimorfismo distinguiamo tra il tipo statico ed il tipo dinamico di una variabile (o di un parametro formale) La regola del polimorfismo prima enunciata obbliga il tipo dinamico ad essere un sottotipo (proprio o meno) del tipo dinamico 101 Polimorfismo e binding dinamico In Java, a fronte della invocazione x.f(x1,...,xn), l implementazione scelta per il metodo f dipende dal tipo dinamico di x e non dal suo tipo statico 102
52 Binding dinamico: esempio class Persona { private String nome; public Persona(String nome) {this.nome=nome; public void chisei() { System.out.println( Ciao, io sono +nome); class Uomo extends Persona { public Uomo(String nome) {super(nome); public void chisei() {super.chisei(); System.out.println( sono un maschio );... Persona p=new Uomo( Giovanni ); p.chisei(); OUTPUT: Ciao, io sono Giov anni sono un maschio 103 Polimorfismo e binding dinamico: esercizio Si costruisca uno stack di persone e lo si usi per conservarvi tanto uomini quanto donne. Al termine si verifichi l effetto del binding dinamico richiamando il metodo chisei() su tutti gli oggetti conservati 104
53 Conversioni forzate tra tipi riferimento: casting È possibile forzare esplicitamente la conversione da un tipo riferimento T ad un sottotipo T1 purché: Il tipo dinamico dell espressione che convertiamo sia un sottotipo di T1 Esempio: Object o=new AutomobileElettrica(); Automobile a=o; // errato, Object non è un // sottotipo di Automobile Automobile a=(automobile) o; // corretto (casting) 105 Casting: esercizio Si spieghi perché il casting è fondamentale per implementare contenitori generici (stack di Object ecc.) 106
54 Package ed information hiding Package e visibilità degli attributi e dei metodi Attributi e metodi di una classe C per i quali non sia dichiarato alcun tipo di visibilità sono visibili solo all interno di classi che appartengano allo stesso package di C Tale costrutto gioca un ruolo analogo alla dichiarazione di friendship in C++ Package ed importazione di classi Un package contiene un insieme di classi pubbliche ed un insieme di classi private Solo le classi pubbliche si possono importare in altri package Package e compilation unit Ogni compilation unit contiene classi appartenenti allo stesso package Una compilation unit contiene una sola classe pubblica (per default la prima) ed eventualmente altre classi private 107 Il package java.lang Il package java.lang contiene classi di uso molto frequente (String, Object, ecc.) Non è necessario importare le classi appartenenti al package java.lang prima di utilizzarle 108
Il linguaggio Java Istruzioni di Controllo
Il linguaggio Java Istruzioni di Controllo Istruzioni per il controllo di flusso Istruzioni di selezione if switch Istruzioni di iterazione while do-while for Istruzioni di salto break continue return
DettagliA. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
DettagliIntroduzione a Java. Riferimenti
Introduzione a Java Si ringraziano Massimiliano Curcio e Matteo Giacalone 1: Introduction 1 Riferimenti! Java tutorial: http://java.sun.com/docs/books/tutorial/! Il Java tutorial è parte di una più ampia
DettagliProgrammazione ad Oggetti. Java Parte II
Programmazione ad Oggetti Java Parte II Overview Caratteristiche lessicali Il primo programma Java 1 Commenti /* Commento tradizionale, eventualmente su più linee, non nidificato */ // Commento su di una
DettagliProgrammazione 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
DettagliCorso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliIL 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
DettagliElementi 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
DettagliProgrammazione Java Avanzata Programmazione Object- Oriented in Java
Programmazione Java Avanzata Programmazione Object- Oriented in Java Ing. Gianluca Caminiti Testi di Riferimento (Java) Cay Horstmann Concetti di informatica e fondamenti di Java Apogeo, 2007 (Versione
DettagliINTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
DettagliEsempio 2: Subtyping
Esempio 2: Subtyping 22 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile di classi già esistenti mediante l aggiunta o la ridefinizione
DettagliProgrammazione. 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
DettagliEsonero di Informatica I. Ingegneria Medica
Di seguito sono elencati una serie di domande tipo esonero ; i quiz vogliono dare un sistema di autovalutazione e di confronto allo studente che deve prepararsi alla prova di metà corso. Il numero e l
DettagliProgrammazione. 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
DettagliLinguaggio 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
DettagliFunzioni, 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
DettagliLa 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
DettagliInformatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)
DettagliProgrammazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali
Programmazione a Oggetti Lezione 7 Il linguaggio Java: aspetti generali Sommario Obiettivi di JAVA Portabilità: produrre codice eseguibile su più piattaforme (JVM) Affidabilità: Evitare il più possibile
DettagliL ereditarieta` Riuso del software: Ereditarieta`, Composizione, Polimorfismo e Binding Dinamico Ereditarietà Ereditarietà
L ereditarieta` Programmazione in Rete e Laboratorio Matteo Baldoni Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino Riuso del software: Ereditarieta`, Composizione,
DettagliLe 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
DettagliRiassunto: 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,
DettagliSTRINGHE 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
DettagliOO 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
DettagliUguaglianza e copia di oggetti
Uguaglianza e copia di oggetti Sommario 1. Classi Object e Class 2. Uguaglianza superficiale e uguaglianza profonda 3. Copia superficiale e copia profonda 4. Uguaglianza e copia in classi derivate 1 La
DettagliSommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C
Sommario Introduzione... xv Organizzazione del volume... xv Argomenti...xvi Domande...xvi Verifiche...xvi Domande e risposte...xvi Esercizi...xvi Non è richiesta alcuna precedente esperienza di programmazione...
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
Dettagli6 - 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
DettagliLinguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
DettagliJava. Java : compilatore e interprete. Programma Java. Java Virtual Machine. Token. Alfabeto
Java Il linguaggio Java è un linguaggio di programmazione ad alto livello algoritmo: astrazione della realtà linguaggio di programmazione: astrazione del processore variabile e tipo: astrazione della locazione
DettagliJava. Java : compilatore e interprete. Programma Java. Java Virtual Machine. Il linguaggio Java è un linguaggio di programmazione ad alto livello
Java Il linguaggio Java è un linguaggio di programmazione ad alto livello algoritmo: astrazione della realtà linguaggio di programmazione: astrazione del processore variabile e tipo: astrazione della locazione
DettagliIndice. Introduzione a tool per lo sviluppo e l'esecuzione di programmi in linguaggio Java. Compilazione ed esecuzione di un programma
Indice Introduzione a tool per lo sviluppo e l'esecuzione di programmi in linguaggio Java Introduzione all ambiente di sviluppo - Compilazione ed esecuzione di un programma - Compilazione ed esecuzione
DettagliJava. Java: compilatore e interprete. Programma Java. Java Virtual Machine. Token. Alfabeto
Java Java: compilatore e interprete Il linguaggio Java è un linguaggio di programmazione ad alto livello - algoritmo: astrazione della realtà - linguaggio di programmazione: astrazione del processore -
Dettagli14 - 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
DettagliIndice. 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
Dettagli19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni 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
DettagliTipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:
Tipi di dato Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: esprimere in modo sintetico la loro rappresentazione in memoria, e un insieme di operazioni ammissibili permettere
DettagliAlgebra 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
DettagliEsempi in Java di program.ne O-O
Esempi in Java di program.ne O-O Ereditarietà Polimorfismo statico e dinamico Esercitazione laboratorio Interfaccia Comparable e Comparator 1 Gerarchia di ereditarietà Persona IS_A Docente Studente Tecnico
DettagliInformatica 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
DettagliLinguaggi 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
DettagliDefinizione di classi. Walter Didimo
Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti
DettagliIntroduzione Programmazione Java
Introduzione Programmazione Java Paolo Tomeo paolo.tomeo@poliba.it Regole basilari Java è case sensitive quindi prestare attenzione alle maiuscole Il commento si inserisce con // all'inizio della linea
DettagliProgrammazione in Java (I modulo)
Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto
DettagliEsempi 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
DettagliUniversità degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso
Obiettivi Di seguito vengono riportate una serie di domande che possono essere poste durante la prova formale del corso. Le seguenti domande non sono da ritenersi esaustive ma esemplificative. 1. Architettura
Dettagli1 Il Paradigma ad Oggetti
1 Il Paradigma ad Oggetti 1.1 Mini-Java In questa sezione introduciamo un sottoinsieme molto elementare del linguaggio ad oggetti Java, che chiamiamo Mini-Java. Nel linguaggio Mini-Java abbiamo incluso
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliProgrammazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
DettagliProgrammazione 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
DettagliCostanti e Variabili
Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli
Dettagli18 - 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/
DettagliObject-Oriented Technology. Giuliano Armano 1
Object-Oriented Technology Giuliano Armano 1 Object Oriented Technology ADT + Eredità + Polimorfismo Object-Orientation Giuliano Armano 2 Terminologia Tipica Classica... Tipo di dato (astratto) = ADT Operazione
DettagliLezione 6 Introduzione al C++ Mauro Piccolo
Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Oggetti e Classi Metodi Parametri Variabili di istanza Costruttori Esercizi Paradigma Object-Oriented Il paradigma OO
DettagliFondamenti 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,
DettagliProgramma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza
DettagliUnità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.
Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti
DettagliLa programmazione ad oggetti: chiamate di metodi. Overloading. This
ISTITUTO D ISTRUZIONE SUPERIORE FERRARIS BRUNELLESCHI - EMPOLI Materia: INFORMATICA PROGRAMMA SVOLTO A.S. 2015/2016 Classe IV C Informatica Proff. Fabio Ciao / Simone Calugi Libro di testo: Cloud B P.
DettagliIntroduzione a Java. Giovanni Pardini Dipartimento di Informatica Università di Pisa.
a Java 1 Giovanni Pardini pardinig@di.unipi.it www.di.unipi.it/~pardinig Dipartimento di Informatica Università di Pisa 30 novembre 2009 1 2 3 1 Sintassi di base Hello World! Blocchi e variabili 2 Sintassi
DettagliLinguaggi 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
DettagliPrincipi di OOP con JAVA
Principi di OOP con JAVA lezioni 08 - gen - 2004 15 - gen - 2004 Tommaso Di Noia t.dinoia@poliba.it OOP (elementi) Programmazione Procedurale e Orientata agli Oggetti. FUNZIONI OGGETTI STRUTTURE DATI METODI
DettagliCapitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125
Capitolo 6 Uso della gerarchia c 2005 Pearson Education Italia Capitolo 6-1 / 125 Sommario: Uso della gerarchia 1 Notazione UML per le classi 2 Introduzione alla gerarchia 3 Gerarchia e tipi La gerarchia
DettagliProgrammazione 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.
DettagliUnità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso
Unità Didattica 2 Linguaggio C Espressioni, Operatori e Strutture linguistiche per il controllo del flusso 1 Espressioni e assegnazioni Le espressioni sono definite dalla grammatica: espressione = variabile
DettagliProgrammazione ad oggetti
Programmazione ad oggetti Tipi di dati Tipo = insieme di valori + insieme di operazioni Es. int: valori:, -2, -1, 0, 1, 2, operazioni:: +,-,*,/,
DettagliINGEGNERIA DEL SOFTWARE
INGEGNERIA DEL SOFTWARE JAVA Avvertenza: gli appunti si basano sul corso di Ingegneria del Software tenuto dal prof. Picco della facoltà di Ingegneria del Politecnico di Milano (che ringrazio per aver
DettagliRiassunto. 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
DettagliEreditarietà (ultima)
Ereditarietà (ultima) Classi astratte Un ibrido tra classi e interfacce Hanno alcuni metodi implementati normalmente, altri astratti Un metodo astratto non ha implementazione abstract class AccountTransaction...
Dettagli7 - 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
DettagliIL 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
DettagliLinguaggio 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
DettagliCorso di Fondamenti di Informatica Il sistema dei tipi in C++
Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout
DettagliJava il Corso Fondamentale
Java il Corso Fondamentale Imparare a Programmare APP per Android, applicativi per Server e Desktop, applet e molto altro. IlTuoCorso - Ermes srl Via E.De Amicis 57 20123 Milano Il corso Ciao! Se desideri
DettagliSommario PREFAZIONE... XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLE APPLICAZIONI JAVA...
Sommario PREFAZIONE... XI Lo scopo di questo libro... xi La metodologia di insegnamento... xiii L apprendimento attraverso il codice... xiii La programmazione orientata agli oggetti... xiii L accesso al
DettagliModulo 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
DettagliR. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone
Il linguaggio Java Nato nel maggio 95 (James Gosling & al.) Orientato ad oggetti, basato sulle classi, concorrente Fortemente tipato: distinzione chiara tra errori statici ed errori dinamici Ad alto livello:
DettagliEreditarietà e Polimorfismo. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni
Ereditarietà e Polimorfismo Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Ereditarietà L ereditarietà è lo strumento che permette di costruire nuove classi utilizzando
DettagliIl linguaggio Java e la progettazione di software object-oriented. Java 1
Il linguaggio Java e la progettazione di software object-oriented Java 1 ANTEFATTO/MOTIVAZIONE: un (cattivo) esempio Per realizzare un'applicazione gestionale, di una certa dimensione, vari programmatori
Dettagli18 - 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
DettagliTIPI PRIMITIVI E CLASSI WRAPPER
I tipi primitivi come oggetti Package java.lang In varie situazioni, può essere comodo poter trattare i tipi primitivi come oggetti per passarli per riferimento a una funzione quando una funzione pretende
DettagliEreditarietà 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
DettagliFondamenti di Programmazione Prof.ssa Elisa Tiezzi. Programmazione orientata a oggetti
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi Programmazione orientata a oggetti 1 Programmazione OO Concetti base: dati istruzioni Dati: variabili tipi Istruzioni: istruzioni base strutture di controllo
DettagliPrimi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
DettagliIn questa lezione. Polimorfismo
In questa lezione Polimorfismo (in Java) Tipo statico e tipo dinamico dei reference Binding dinamico (late binding) Casting (Upcasting e Downcasting) Operatore instanceof Polimorfismo con Object Polimorfismo
DettagliRicerca e ordinamento su array di oggetti. Corso di Programmazione 2 Esercitazione 5
Ricerca e ordinamento su array di oggetti Corso di Programmazione 2 Esercitazione 5 Sommario Ricercare in array di oggetti Interfaccia comparable Ordinare array di oggetti Problema Come ordinare, ricercare
DettagliEredità e Polimorfismo in Java
Eredità e Polimorfismo in Java Corso di Linguaggi di Programmazione ad Oggetti 1 A.A. 2003/04 A cura di Definizione di Classe Java è un linguaggio object-oriented per cui il costrutto fondamentale è quello
DettagliOgni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
DettagliProprietà 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
DettagliProgrammazione orientata agli oggetti Classi astratte e interfacce
Programmazione orientata agli oggetti Classi astratte e interfacce Fondamenti di Informatica L-B 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma
Dettagli16 - Ereditarietà, tipi e gerarchie
16 - Ereditarietà, tipi e gerarchie 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
DettagliNascita 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
DettagliJava: Definire Classi e Creare Oggetti
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 21 marzo 2014 Introduzione Programmare con gli Oggetti Un programma Java è costituito
DettagliLaboratorio 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[]
DettagliIl 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
DettagliI 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
DettagliInformatica 3. LEZIONE 2: Sintassi e semantica
Informatica 3 LEZIONE 2: Sintassi e semantica Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4: Routine Convenzioni dei nomi Informatica
DettagliEsercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
DettagliLinguaggio 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