Capitolo 3. Realizzare classi
|
|
|
- Fulvio Salvatori
- 9 anni fa
- Просмотров:
Транскрипт
1 Capitolo 3 Realizzare classi
2 Obbiettivi del capitolo Acquisire familiarità con il procedimento di realizzazione di classi Essere in grado di realizzare semplici metodi Capire a cosa servono e come si usano i costruttori Capire come si accede a variabili di esemplare e variabili locali Apprezzare l importanza dei commenti per la documentazione
3 Scatole Nere Una scatola nera fa la sua cosa magicamente Nasconde il suo lavoro interno Incapsulamento: l'occultamento di dettagli senza importanza Quale è il concetto corretto per ogni particolare scatola nera? Continua
4 Scatole Nere I Concetti sono scoperti tramite l astrazione Astrazione: eliminare caratteristiche non essenziali, fino a che solamente l'essenza del concetto rimane In programmazione a oggetti le scatole nere per mezzo delle quali è implementato un programma sono chiamate oggetti
5 Livelli di Astrazione: Esempi di vita reale Scatole nere in una automobile: trasmissione, modulo di controllo elettronico, etc. Figure 1: Disegno dei Livelli di Astrazione in una Automobile
6 Livelli di Astrazione: Esempi di vita reale Gli Automobilisti non hanno bisogno di capire come lavorano le scatole nere I Conducenti interagiscono con la macchina usando pedali, bottoni, etc. Il Meccanico può esaminare se la centralina spedisca in modo corretto il segnale di accensione alle candele La centralina, i transistor e i condensatori sono scatole nere prodotte magicamente da un fabbricante di componenti elettronici Continua
7 Livelli di Astrazione : Esempi di vita reale L'Incapsulamento conduce all' efficienza: Il Meccanico interagisce solamente con i componenti della macchina (es. Centralina), non con i sensori e transistor Il Conducente si preoccupa solamente dell'interazione con la macchina (es. mettendo benzina nel serbatoio), non del motore o della centralina
8 Livelli di Astrazione : Creazione Software Figura 2: Disegno dei livelli di astrazione nella creazione di un software
9 Livelli di Astrazione : Creazione Software Vecchi tempi:i programmi del computer manipolavano solo tipi primitivi come numeri e caratteri Manipolare molte di queste quantità primitive era difficile per i programmatori e conduceva ad errori Soluzione: Incapsulare i calcoli di routine in scatole nere Continua
10 Livelli di Astrazione : Creazione Software L'Astrazione inventa tipi di dati di alto livello In programmazione orientata ad oggetti,gli oggetti sono scatole nere Incapsulamento: Il Programmatore che usa un oggetto conosce il suo comportamento, ma non sa nulla sulla sua struttura interna Continua
11 Livelli di Astrazione : Creazione Software In Programmazione,si possono progettare buone e cattive estrazioni con uguale facilità; capire quello che fa un buon software è un'importante parte dell'istruzione di un ingegnere esperto di programmaione Prima definisci il comportamento di una classe poi lo perfezioni
12 Auto-Valutazione 1. Nei Capitoli 1 e 2 avete usato System.out come scatola nera per fare in modo che dati venissero visualizzati sullo schermo del computer.chi ha progettato e realizzato System.out? 2. Supponete di lavorare in una ditta che produce software per elaborazioni finanziarie personali e che vi venga chiesto di progettare e realizzare una classe che rappresenti conti bancari.quali saranno gli utenti della vostra classe?
13 Risposte 1. I programmatori che hanno realizzato e implementato le librerie di java 2. Gli altri programmatori che lavorano nelle elaborazioni finanziarie personali
14 Creazione dell interfaccia Pubblica di una Classe Comportamento di un conto in banca (Astrazione): Deposito di soldi Prelievo di soldi Saldo attuale
15 Creazione dell interfaccia Pubblica di una Classe : I Metodi Metodi della classe BankAccount: deposit withdraw getbalance Noi vogliamo poter eseguire chiamate di metodi come nell esempio seguente: harryschecking.deposit(2000); harryschecking.withdraw(500); System.out.println(harrysChecking.getBalance());
16 Creazione dell interfaccia Pubblica di una Classe : la definizione dei metodi Specificatori di accesso (ad esempio public) Tipi di ritorno (ad esempio String o void) Nomi dei metodi (ad esempio deposit) Lista di parametri (double amount per deposit) Corpo dei metodi all interno { } Continua
17 Creazione dell interfaccia Pubblica di una Classe : la definizione dei metodi Esempio public void deposit(double amount) {... } public void withdraw(double amount) {... } public double getbalance() {... }
18 Sintassi 3.1: Definizione di metodo Specificatore di acesso tiporestituito nomemetodo(tipoparametro nomeparametro,...) { corpo del metodo } Esempio: public void deposit(double amount) {... } Obiettivo: Definire il comportamento di un metodo
19 Creazione dell interfaccia Pubblica di una Classe : Definizione del Costruttore Un costruttore inizializza le variabili di istanza Nome del Costruttore = Nome della classe public BankAccount() { // corpo che verra riempito più avanti } Continua
20 Creazione dell interfaccia Pubblica di una Classe : Definizione del Costruttore Il Corpo del costruttore viene eseguito quando un nuovo oggetto è creato Le istruzioni nel un corpo del un costruttore inizializzano i dati interni (stato) dell'oggetto che si sta costruendo Tutti i costruttori di una classe hanno lo stesso nome della classe Il Compilatore può utilizzare selettivamente uno dei costruttori a seconda dei parametriche ricevono
21 Sintassi 3.2: Definizione dei costruttori SpecificatoreDiAccesso nomeclasse(tipoparametro nomeparametro,..) { corpo del costruttore } Esempio: public BankAccount(double initialbalance) {... } Obiettivo: Definire il comportamento di un costruttore
22 Interfaccia Pubblica di BankAccount Il costruttore e i metodi pubblici di una classe formano la public interface di una classe. public class BankAccount { // Costruttore public BankAccount() { // corpo riempito in seguito } public BankAccount(double initialbalance) { // corpo riempito in seguito } // Metodi public void deposit(double amount) Continua
23 Interfaccia Pubblica di BankAccount // Metodi public void deposit(double amount) } { } // corpo riempito in seguito public void withdraw(double amount) { // corpo riempito in seguito } public double getbalance() { // corpo riempito in seguito } // parte privata riempita in seguito
24 Syntassi 3.3: Definizione di classe specificatorediaccesso class NomeClasse { costruttori metodi campi (variabili di istanza) } Esempio: public class BankAccount { public BankAccount(double initialbalance) {... } public void deposit(double amount) {... }... } Obiettivo: Definire una classe, la sua interfaccia pubblica e I suoi dettagli realizzativi
25 Auto-valutazione 3. Come è possibile svuotare il conto bancario harryschecking usando I metodi dell interfaccia pubblica della classe? 4. Supponete di voler realizzare una più potente astrazione di conto bancario che tenga traccia di un numero di conto oltre al sando.come modifichereste l interfaccia pubblica per gestire questo miglioramento?
26 Risposte 3. harryschecking.withdraw(harryschecking.getbalance()) 4. Aggiungendo un parametro accountnumber nel costruttore, e aggiungendo un metodo getaccountnumber. Non abbiamo bisono di un metodo setaccountnumber il numero dell account non cambia mai dopo averlo creato.
27 Commenti nell Interfaccia Pubblica /** preleva denaro dal conto amount l importo da prelevare */ public void withdraw(double amount) { // realizzazione(completata in seguito) } /** Ispeziona il saldo attuale del conto il saldo attuale */ public double getbalance() { // realizzazione(completata in seguito) }
28 I commenti nelle Classi /** Un conto bancario ha un saldo che può essere modificato da depositi e prelievi. */ public class BankAccount {... } Fornire commenti di documentazione per Ogni classe Ogni metodo Ogni parametro Ogni valore di ritorno.
29 Sommario Metodi Javadoc Figure 3: Un riassunto dei metodi generato da javadoc
30 Sommario Metodi Javadoc Figure 4: Dettaglio di metodi generato da javadoc
31 Auto-valutazione 5. Supponete di aver migliorato la classe in modo che a ciascun conto sia associato un numero di conto univoco. Scrivete un commento per la documentazione del seguente costruttore: Public BankAccount(int accountnumber, double initialbalance) Continua
32 Auto-valutazione 6. Perchè il seguente commento per la documentazione non è adeguato? /** Ogni conto ha un numero di il numero di conto di questo conto bancario. */ int getaccountnumber()
33 Risposte 5. /** Costruiamo un nuovo bankaccount con un bilancio accountnumber il numero di conto di questo initialbalance il bilancio iniziale di questo account */ 6. La prima frase della descrizione del metodo dovrebbe descrivere il metodo stesso
34 Campi di Istanza (o esemplare) Un oggetto memorizza I propri dati all interno di variabili (campi) Campo:un termine tecnico per identificare la posizione di un blocco di memoria Isanza di una classe: uno specifico oggetto di una classe La dichiarazione di classe specifica i campi di esemplare: public class BankAccount {... private double balance; }
35 Campi di Istanza La dichiarazione di un campo di istanza consiste nelle parti seguenti: Specificatori di acesso (come private) Tipo di variabile (come double) Nome di variabile (come balance) Ogni oggetto di una classe ha il proprio set di campi di istanza Bisognerebbe dichiarare tutti i campi di istanza come privati
36 Campi di Istanza Figure 5: CampidiIstanza
37 Sintassi 3.4:Dichiarazione dei Campi di Istanza specificatorediacesso class NomeClasse {... specificatorediaccesso tipovariabile NomeVariabile;... } Esempio: public class BankAccount {... private double balance;... } Obbiettivo: Definire un campo che sia presente in ciascun oggetto di una classe.
38 Accessi ai Campi di Istanza Il metodo deposit della classe BankAccount può accedere al campo di istanza private: public void deposit(double amount) { double newbalance = balance + amount; balance = newbalance; } Continua
39 Accessi ai Campi di Istanza Gli altri metodi non possono: public class BankRobber { public static void main(string[] args) { BankAccount momssavings = new BankAccount(1000);... momssavings.balance = -1000; // ERRORE } } Incapsulamento = Nascondere i Dati ed offrire l accesso solo attraverso i metodi pubblici
40 Auto-Valutazione 7. Supponete di modificare la classe BankAccount in modo che ogni conto bancario abbia un numero di conto. Come si modificano I campi di esemplare? 8. Quali sono I campi di esemplare della classe Rectangle?
41 Risposte 7. Un campo di istanza private int accountnumber; deve essere aggiunto alla classe 8. private int x; private int y; private int width; private int height;
42 Implementazione dei Costruttori I costruttori contengono istruzioni per inizializzare i campi di istanza di un oggetto public BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; }
43 Esempio di chiamata del Costruttore BankAccount harryschecking = new BankAccount(1000); Crea un nuovo oggetto di type BankAccount Invoca il secondo costruttore (perchè è stato fornito un parametro di costruzione) Assegna il valore 1000 al parametro initialbalance Assegna al campo balance dell oggetto appena creatro il valore initialbalance Restituisce, come valore dell espressione new, un riferimento a un oggetto,che è la posizione in memoria dell oggetto appena creato Memorizza il riferimento all oggetto nella variabile harryschecking
44 Implementazione dei Metodi Alcuni metodi non hanno valore di ritorno public void withdraw(double amount) { double newbalance = balance - amount; balance = newbalance; } Alcuni metodi restituiscono un valore public double getbalance() { return balance; }
45 Esempio di chiamata dei Metodi harryschecking.deposit(500); Assegna il valore 500 al parametro amount Legge il valore del campo dell oggetto balance che è riferito da harryschecking Aggiunge il valore di amount a balance e immagazzina il risultato nella variabile NewBalance Immagazina il valore newbalance nel campo di istanza balance, sovrascrivendo il valore vecchio
46 Syntassi 3.5: L enunciato return return espressione; o return; Esempio: return balance; obbiettivo: Specificare il valore restituito da un metodo e terminare l esecuzione del metodo immediatamente. Il valore restituito diventa il valore dell espressione di invocazione del metodo
47 Il File BankAccount.java 01: /** 02: Un conto bancario ha un saldo che può essere modificato 03: da depositi e prelievi. 04: */ 05: public class BankAccount 06: { 07: /** 08: Costruisce un Bankaccount con saldo uguale a 0. 09: */ 10: public BankAccount() 11: { 12: balance = 0; 13: } 14: 15: /** 16: Costruisce un conto bancario con un saldo assegnato. initialbalance il saldo iniziale 18: */ Continua
48 File BankAccount.java 19: public BankAccount(double initialbalance) 20: { 21: balance = initialbalance; 22: } 23: 24: /** 25: Versa denaro nel conto bancario. amount l importo da prelevare 27: */ 28: public void deposit(double amount) 29: { 30: double newbalance = balance + amount; 31: balance = newbalance; 32: } 33: 34: /** 35: preleva denaro dal conto bancario. amount l importo da prelevare Continua
49 File BankAccount.java 37: */ 38: public void withdraw(double amount) 39: { 40: double newbalance = balance - amount; 41: balance = newbalance; 42: } 43: 44: /** 45: Ispeziona il valore del saldo attuale. il saldo attuale 47: */ 48: public double getbalance() 49: { 50: return balance; 51: } 52: 53: private double balance; 54: }
50 Auto-valutazione 9. Come è stato realizzato il metodo getwidth della classe Rectangle? 10. Come è stato realizzato il metodo translate della classe Rectangle?
51 Risposte 9. public int getwidth() { return width; } 10. C è più di una risposta corretta. Una possibile implementazione è la seguente: public void translate(int dx, int dy) { int newx = x + dx; x = newx; int newy = y + dy; y = newy; }
52 Collaudare una Classe Collaudare una classe: serve una classe col metodo main che contiene istruzioni per testare altre classi. Tipicamente si eseguono i passaggi seguenti: 1. Costruzione di uno o più oggetti della classe che si sta collaudando. 2. Invocazione di uno o più metodi 3. Visualizzazione di uno o più risultati Continua
53 Collaudare una Classe I dettagli per costruire i programmi variano. Nella maggior parte dei casi, bisogna eseguire questi passi: 1. Creare una nuova cartella per il vostro programma 2. Creare due file, uno per ciascuna classe. 3. Compilare entrambi I file 4. Eseguire il programma di collaudo.
54 File BankAccountTester.java 01: /** 02: Classe di collaudo per la classe BankAccount. 03: */ 04: public class BankAccountTeste 05: { 06: /** 07: Collauda I metodi della classe BankAccount. args non utilizzato 09: */ 10: public static void main(string[] args) 11: { 12: BankAccount harryschecking = new BankAccount(); 13: harryschecking.deposit(2000); 14: harryschecking.withdraw(500); 15: System.out.println(harrysChecking.getBalance()); 16: } 17: }
55 Auto-Valutazione 11. Quando eseguite il programma BankAccountTester quanti oggetti di tipo BankAccount vengono costruiti? E quanti oggetti di tipo BankAccountTester?
56 Risposte 11. Un oggetto BankAccount, nessun oggetto BankAccountTester. L obbiettovo dela classe BankAccountTester è contenere solo il metodo main.
57 Categorie di Variabili Categorie di variabili Campi di Esemplare (balance in BankAccount) Variabili locali (newbalance nel metodo deposit) Variabili parametro (amount nel metodo deposit) Un campo di istanza appartiene ad un oggetto Il campo rimane attivo (accessibile) fino a quando nessun metodo viene piu usato (quando l oggetto non e piu referenziato)
58 Categorie di Variabili In Java, il garbage collector raccoglie oggetti quando essi non sono più usati Le variabili locali e parametro appartengono a un metodo I campi di istanza sono inizializzati a un valore di default, ma le variabili locali dei metodi vanno inizializzate
59 Tempo di vita delle Variabili harryschecking.deposit(500); double newbalance = balance + amount; balance = newbalance; Continua
60 Tempo di vita delle Variabili Figure 7: Tempo di vita delle Variabili Continua
61 Tempo di vita delle Variabili Figure 7: Tempo di vita delle Variabili
62 Auto-Valutazione 13. Cosa hanno in comune le variabili locali e le variabili parametro? 14. Durante l esecuzione del programma BankAccountTester del paragrafo precedente,quanti campi di esemplare,quante variabili locali e quante variabili parametro vengono create, e quali sono i loro nomi?
63 Risposte 13. Le variabili di entrambe le categorie appartengono a un metodo loro diventano vive quando il metodo viene chiamato, e muoiono quando il metodo termina. Differiscono nella loro inizializzazione. Le variabili parametro sono inizializzate con i valori passati alla chiamata; le variabili locali devono essere inizializzate esplicitamente. Continua
64 Risposte 14. Un campo di istanza,chiamato balance. Tre variabili locali, una chiamata harryschecking, la seconda chiamata newbalance (con i metodi deposit e withdraw); due variabili parametro, entrambe chiamate amount (nei due metodi deposit e withdraw).
65 Parametri impliciti ed espliciti nei metodi Il parametro impliciti di un metodo e l'oggetto tramite il quale è invocato il metodo La parola this denota il parametro implicito
66 Parametri impliciti ed espliciti nei metodi L'Uso di un nome di campo di istanza in un metodo denota il campo di istanza del parametro implicito (dell oggetto stesso, cioe ) public void withdraw(double amount) { double newbalance = balance - amount; balance = newbalance; }
67 Parametri impliciti ed espliciti nei metodi balance è il saldo (balance)dell'oggetto alla sinistra del punto: momssavings.withdraw(500) vuol dire double newbalance = momssavings.balance - amount; momssavings.balance = newbalance;
68 Parametri impliciti e this Ogni metodo ha un parametro implicito Il parametro implicito è sempre chiamato this Eccezione: Metodi Statici non hanno nessun parametro implicito double newbalance = balance + amount; // vuol dire davvero double newbalance = this.balance + amount;
69 Parametri impliciti e this Quando ci si riferisce ad un campo di istanza in un metodo, il compilatore lo applica automaticamente al parametro this momssavings.deposit(500);
70 Parametri impliciti e this Figure 8: I parametri impliciti di una chiamata a un metodo
71 Auto-Valutazione 15. Quanti parametri impliciti ed espliciti ci sono nel metodo withdraw della classe BankAccount,e quali sono I loro nomi e tipi? 16. Qualèilsignificatodithis.amount nel metodo deposit? Oppure, se l espressione è priva di significato,per quale motivo lo è?
72 Auto-Valutazione 17. Quanti parametri impliciti ed espliciti ci sono nel metodo main della classe BankAccountTester, e quali sono I loro nomi?
73 Risposte 15. Un parametro implicito, chiamato this, del tipo BankAccount, e un parametro esplicito, chiamato amount, del tipo double. 16. Non ci sono espressioni legali. Questa è del tipo BankAccount e la classe BankAccount non ha campi denominati amount. 17. Nessun parametro implicito il metodo è statico e un parametro esplicito, chiamato args.
Capitolo 3. Realizzare classi. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione
Capitolo 3 Realizzare classi Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Obiettivi del capitolo Acquisire familiarità con il procedimento di realizzazione di classi Essere
Livelli di astrazione
Realizzare Classi Astrazione Perdita di dettaglio Utile nella descrizione, progettazione, implementazione e utilizzo di sistemi complessi Dettagli trascurabili vengono incapsulati in sottosistemi più semplici
Programmazione Java Struttura di una classe, Costruttore, Riferimento this
Programmazione Java Struttura di una classe, Costruttore, Riferimento this [email protected] http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento
sayhello public private protected return public class Greeter { public String sayhello() { String message = Hello, World! ; return message; } }
sayhello public class Greeter { public String sayhello() { String message = Hello, World! ; return message; publicprivate protected return void return; Greeter main main public class GreeterTest { public
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
Esempio: il conto bancario
Ereditarietà Prof. Francesco Scarcello D.E.I.S., Università della Calabria Corso di Informatica 2 Esempio: il conto bancario public class BankAccount { public BankAccount() { balance = 0; public BankAccount(double
Laboratorio di programmazione
Laboratorio di programmazione Lezione VIII Tatiana Zolo [email protected] 1 PROGRAMMAZIONE A OGGETTI Quando si programma a oggetti si scompone il problema in sottogruppi di parti collegate che tengono
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
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
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
Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo.
Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo. public abstract class FiguraPiana2{ private double base; public FiguraPiana2(double
Classi ed Oggetti in JAVA
Classi ed Oggetti in JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 [email protected] www.dii.unisi.it/~rigutini/
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
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
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.
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
Esercitazioni aggiuntive Martedì 14-17 -- Laboratorio L-12
Laboratorio LP2 Esercitazioni aggiuntive Martedì 14-17 -- Laboratorio L-12 [email protected] Esercizio P14.8 Scrivete un programma Find che cerchi in tutti i file specificati sulla riga di comando una
Parola chiave extends
Il Linguaggio Java Ereditarietà Ereditarietà L'ereditarietà permette di creare nuove classi sulla base di classi esistenti In particolare, permette di riusare il codice (metodi e campi); aggiungere nuovi
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,
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
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
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
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
Introduzione a Classi e Oggetti
Introduzione a Classi e Oggetti Oggetto: concetto astratto Entità di un programma dotata di tre proprietà caratteristiche stato informazioni conservate nell oggetto condizionano il comportamento dell oggetto
Lezione 13 Classi interne
Lezione 13 Classi interne Questa lezione chiude la parte del corso più squisitamente dedicata alla programmazione orientata agli oggetti con Java. Sarà esaminato un nuovo tipo di classi, finora taciuto,
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
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
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
Java Native Interface Appunti
Java Native Interface Appunti Riccardo Rizzo 1/8 Introduzione L'uso delle Java Native Interface e' giustificato tutte quelle volte che una applicazione non puo' essere scritta interamente in Java. Per
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
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
Modularizzazione del software
Modularizzazione del software Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: Subroutine e function DIS - Dipartimento di informatica e sistemistica
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/
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
Lezione 10 programmazione in Java. Anteprima. Programmazione OO. La programmazione orientata agli Oggetti. Javadoc. Esercizi
Lezione 10 programmazione in Java Nicola Drago [email protected] Dipartimento di Informatica Università di Verona Anteprima La programmazione orientata agli Oggetti Cosè un oggetto I metodi Il costruttore
Lezione 9 programmazione in Java Classi come contenitori
Lezione 9 programmazione in Java Classi come contenitori Nicola Drago [email protected] Dipartimento di Informatica Università di Verona Anteprima Gestione della Memoria Dati dinamici e statici Il passaggio
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
RETI DI CALCOLATORI Linguaggio Java: Eccezioni
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Eccezioni Prof. Franco Zambonelli Lucidi realizzati in collaborazione
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
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
Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012
Programmazione a oggetti e JAVA Prof. B.Buttarazzi A.A. 2011/2012 Sommario Variabili statiche Ereditarietà multipla Le interfacce Binding Esercizi Esercizio ContoCorrente Creare una classe ContoCorrente
Corso di Laurea Ingegneria Informatica Laboratorio di Informatica
Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Capitolo 4 Traduzione ed esecuzione di programmi Ottobre 2006 Traduzione ed esecuzione di programmi 1 Nota bene Alcune parti del presente
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
Progettazione di classi
Progettazione di classi Scegliere una classe Una classe rappresenta un singolo concetto Esempi: Una classe puo` rappresentare un concetto matematico Point Rectangle Ellipse Una classe puo` rappresentare
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
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
Gestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - [email protected] A pessimistic programmer sees the array as half empty.
Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà
L ereditarietà è il meccanismo attraverso cui viene implementata la relazione di specializzazione (is-a). L ereditarietà è il meccanismo attraverso cui una classe (derivata) eredita da un altra classe
Classi. Oggetti e classi. Creazione e inizializzazione di oggetti in C++ Distruzione di oggetti in C++
Informatica 3 Informatica 3 LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) Modulo 1: Introduzione: oggetti e classi Modulo 2: Link e associazioni Modulo 3: Aggregazione Lezione 7 -
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
L Allocazione Dinamica della Memoria
L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania [email protected] http://www.diit.unict.it/users/mpalesi Sommario Questo documento
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[]
Il linguaggio C Il linguaggio C. Caratteristiche del C. Caratteristiche del C. Linguaggi di Programmazione I. Ferdinando Cicalese
03-10-2003 Il linguaggio C Linguaggio general-purpose Il linguaggio C Creato nel 1972 nei Bell Labs da Dennis Ritchie su PDP11 Usato per il Sistema Operativo Unix da Ken Thompson Negli anni 80 nasce ANSI
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
4 GLI ARRAY E LE STRINGHE
13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si
