Progettare le Classi

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Progettare le Classi"

Transcript

1 Progettare le Classi C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo trad. Nicola Fanizzi corso di Programmazione, CdS: Informatica TPS Dip. di Informatica, Università degli studi di Bari

2 Obiettivi 2 Imparare come scegliere le classi giuste da implementare Capire i concetti di coesione e accoppiamento Minimizzare l'uso degli effetti collaterali Documentare le responsabilità dei metodi e dei loro chiamanti con precondizioni e postcondizioni

3 Obiettivi 3 Capire la differenza tra metodi d'istanza e metodi statici Introdurre il concetto dei campi statici Capire le regole di visibilità per le variabili locali e i campi d'istanza Imparare l'uso dei pacchetti

4 Scegliere le Classi 4 Una classe rappresenta un singolo concetto del dominio del problema Il nome di una classe dovrebbe essere un sostantivo che descrive il concetto Concetti dalla matematica: Punto Rettangolo Ellissi Concetti dalla vita reale ContoCorrente RegistratoreDiCassa

5 Scegliere le Classi 5 Attori: terminano in -or, -er (Inglese) / -ore, -ere (Italiano); fanno per noi qualche tipo di lavoro Scanner Random -> nome migliore: RandomNumberGenerator Classi di Utilità: niente oggetti, solo metodi statici e costanti Math Programmi: hanno solo il metodo main Non trasformare le azioni in classi: PayCheck (busta paga) migliore di ComputePayCheck

6 Coesione 6 Una classe deve rappresentare un singolo concetto L'interfaccia pubblica di una classe è coesiva se tutte le sue caratteristiche sono relative al concetto che la classe rappresenta

7 Coesione 7 Questa classe manca di coesione: public class CashRegister { public void enterpayment (int dollars, int quarters, int dimes, int nickels, int pennies)... public static final double NICKEL_VALUE = 0.05; public static final double DIME_VALUE = 0.1; public static final double QUARTER_VALUE = 0.25;... }

8 Coesione 8 CashRegister,, come detto, riguarda due concetti: registratore di cassa e moneta Soluzione: Costruire due classi public class Coin { public Coin(double avalue, String aname){... } public double getvalue(){... }... } public class CashRegister { public void enterpayment (int coincount, Coin cointype) {... }... }

9 Accoppiamento 9 Una classe dipende da un'altra se usa oggetti di quella classe CashRegister dipende da Coin nel determinare l'entità del pagamento Coin non dipende da CashRegister Alto accoppiamento = molte dipendenze tra classi Minimizzare l'accoppiamento per minimizzare l'impatto dei cambi di interfaccia Per visualizzare le relazioni disegnare diagrammi di classe UML: Unified Modeling Language Notazione per l'analisi e la progettazione

10 Accoppiamento 10 UML: Relazioni di dipendenza tra le classi CashRegister e Coin

11 Alto e Basso Accoppiamento tra Classi 11 Figure 2 High and Low Coupling Between Classes

12 Accessori, Mutatori e Classi Immutabili Accessore: : non cambia lo stato del parametro implicito 12 double balance = account.getbalance(); Mutatore: : modifica l'oggetto sul quale è invocato account.deposit(1000);

13 Accessori, Mutatori e Classi Immutabili Classe Immutabile: : non ha metodi mutatori (es., String) 13 String name = "John Q. Public"; String uppercased = name.touppercase(); // il nome non è cambiato È più sicuro restituire riferimenti ad istanze di classi immutabili; non si può modificare l'oggetto in un momento inatteso

14 Effetti Collaterali 14 Effetto collaterale di un metodo: ogni modifica di dati osservabile esternamente public void transfer(double amount, BankAccount other) { balance = balance - amount; other.balance = other.balance + amount; // Modifica il parametro esplicito } Aggiornare un parametro esplicito può risultare qualcosa di inaspettato per altri programmatori meglio evitare, se possibile

15 Effetti Collaterali 15 Un altro esempio di effetto collaterale è l'output public void printbalance() // non raccomndabile { System.out.println("The balance is now $" + balance); } Cattiva idea: il messaggio è in inglese e si usa System.out Meglio disaccoppiare l'input/output dal lavoro reale delle classi Si deve minimizzare gli effetti collaterali che vanno oltre la modifica del parametro implicito

16 Errore Comune: Modificare un Parametro di Tipo Primitivo 16 void transfer(double amount, double otherbalance) { balance = balance - amount; otherbalance = otherbalance + amount; } Non funziona Scenario: double savingsbalance = 1000; harryschecking.transfer(500, savingsbalance); System.out.println(savingsBalance); In Java, un metodo non può modificare alcun parametro di tipo primitivo

17 Modifica Parametro Numerico Nessun Effetto sul Chiamante 17 Figure 3(1): Modifying a Numeric Parameter Has No Effect on Caller

18 Modifica Parametro Numerico Nessun Effetto sul Chiamante 18 Figure 3(2): Modifying a Numeric Parameter Has No Effect on Caller

19 Modifica Parametro Numerico Nessun Effetto sul Chiamante 19 Figure 3(3): Modifying a Numeric Parameter Has No Effect on Caller

20 Modifica Parametro Numerico Nessun Effetto sul Chiamante 20 Figure 3(4): Modifying a Numeric Parameter Has No Effect on Caller

21 Chiamata per Valore e per Riferimento Chiamata per valore: : i parametri del metodo sono copiati nelle variabili parametro quando il metodo comincia la sua esecuzione Chiamata per riferimento: : i metodi possono modificare direttamente i parametri Java ammette chiamate per valore 21

22 Chiamata per Valore e per Riferimento 22 Un metodo può cambiare lo stato di parametri che sono riferimenti ad oggetti, ma non può sostituire un riferimento ad oggetto con un altro public class BankAccount { public void transfer (double amount, BankAccount otheraccount) { balance = balance - amount; double newbalance = otheraccount.balance + amount; otheraccount = new BankAccount(newBalance); // non funziona } }

23 Esempio: Chiamata per Valore 23 harryschecking.transfer(500, savingsaccount); Figure 4: Modifying an Object Reference Parameter Has No Effect on the Caller

24 Precondizioni 24 Precondizione: : Vincolo che il chiamante di un metodo deve soddisfare Rendere pubbliche le precondizioni in modo che il chiamante non invocherà metodi passando parametri sbagliati /** Deposita denaro sul amount la cifra da depositare (Precondizione: amount >= 0) */

25 Precondizioni 25 Uso Tipico: Porre restrizioni sui parametri di un metodo Richiedere che un metodo venga invocato quando l'oggetto è nello stato appropriato Se viene violata una precondizione, il metodo non è più responsabile del calcolo del corretto risultato. È libero di fare qualsiasi cosa

26 Precondizioni 26 Un metodo può lanciare una eccezione qualora una precondizione venga violata (cfr. Cap. 14) if (amount < 0) throw new IllegalArgumentException(); balance = balance + amount; Un metodo non è obbligato a testare la precondizione (il test potrebbe essere costoso) // se il saldo diventa negativo, è colpa del chiamante balance = balance + amount;

27 Precondizioni 27 Un metodo può fare il controllo di un'asserzione assert amount >= 0; balance = balance + amount; Per abilitare il controllo delle asserzioni: java -enableassertions MyProg Si possono disabilitare le asserzioni dopo aver testato il programma, in modo da farlo girare alla massima velocità

28 Precondizioni 28 Molti programmatori inesperti in tali casi fanno tornare tacitamente al chiamante if (amount < 0) return; // poco raccomandabile; // difficile da debuggare balance = balance + amount;

29 Sintassi 9.1: Asserzione 29 assert condition; Esempio: assert amount >= 0; Scopo: : asserire che una condizione è soddisfatta. Se il controllo è abilitato e la condizione è falsa, viene lanciato un errore di asserzione

30 Postcondizioni 30 Postcondizione: : Condizione che è vera dopo che un metodo è stato completato Se la chiamata del metodo soddisfa le precondizioni deve assicurare che le postcondizioni siano valide Ci sono due tipi di postcondizioni: Il valore da restituire venga calcolato correttamente L'oggetto è in un determinato stato dopo che la chiamata del metodo sia completata

31 Postcondizioni 31 /** Deposita denaro su questo conto. (Postcondizione: getbalance() >= amount la cifra da depositare (Precondizione: amount >= 0) */ Non serve documentare postcodizioni ovvie che replichino la

32 Postcondizioni 32 Formulare pre- e postcondizioni solo in termini dell'interfaccia della classe amount <= getbalance() // maniera giusta di dichiarare una postcondizione amount <= balance // formulazione sbagliata Contratto: : se il chiamante soddisfa le precondizioni, il metodo soddisferà la postcondizione

33 Metodi Statici 33 Ogni metodo deve trovarsi in una classe Un metodo statico non viene invocato su un oggetto Perché scrivere un metodo che non opera su un oggetto? Ragione generale: incapsulare calcoli che non riguardano solo numeri. I numeri non sono oggetti, non si possono invocare metodi su di essi Es: x.sqrt() non sarà mai lecito in Java

34 Metodi Statici 34 public class Financial { public static double percentof(double p, double a) { return (p / 100) * a; } // Si possono aggiungere altri metodi di matematica finanziaria } Chiamata su una classe invece di un oggetto: double tax = Financial.percentOf(taxRate, total); main è statico non ci sarebbero ancora oggetti su cui invocarlo

35 Campi static 35 Un campo static appartiene alla classe e non ad un qualunque oggetto della classe. Si chiama anche campo di classe. public class BankAccount {... private double balance; private int accountnumber; private static int lastassignednumber = 1000; } Se lastassignednumber non fosse static, ogni istanza di BankAccount avrebbe il suo valore di lastassignednumber

36 Campi static 36 public BankAccount() { // Genera il prossimo numero conto da assegnare lastassignednumber++; // Updates the static field // assegna il campo numero conto presso questa banca account accountnumber = lastassignednumber; // imposta il campo istanza } Minimizzare l'uso di campi statici (vanno bene campi statici che siano anche final)

37 Campi static 37 Tre modalità di inizializzazione: 1) Non far nulla. Il campo assume 0 (per numeri), false (valori booleani), o null (per oggetti) 2) Usare una esplicita inizializzazione, come public class BankAccount {... private static int lastassignednumber = 1000; // eseguto una sola volta, // al caricamento della classe } 3) Usare un blocco di inizializzazione statica

38 Campi static 38 3) Usare un blocco di inizializzazione (statico) public class BankAccount {... private static int lastassignednumber; } static { lastassignednumber = 1000; } NB: vale anche per inizializzare i campi d'istanza; in tal caso occorre omettere la parola chiave static

39 Campi static 39 I campi statici andrebbero dichiarati sempre come private Eccezione: : Costanti statiche, che potrebbero essere sia private sia public public class BankAccount {... public static final double OVERDRAFT_FEE = 5; // Vi si fa riferimento con // BankAccount.OVERDRAFT_FEE }

40 Campi di Classe e di Istanza 40

41 Visibilità delle Variabili Locali 41 Visibilità (scope)) di una variabile: regione del programma nella quale si può accedere alla variabile La visibilità di una variabile locale si estende dalla sua dichiarazione alla fine del blocco che la racchiude

42 Visibilità delle Variabili Locali 42 A volte si può usare lo stesso nome di variabile in due metodi. Tali variabili sono mutuamente indipendenti; le loro visibilità sono disgiunte

43 Visibilità delle Variabili Locali 43 public class RectangleTester { public static double area(rectangle rect) { double r = rect.getwidth() * rect.getheight(); return r; } public static void main(string[] args) { Rectangle r = new Rectangle(5, 10, 20, 30); double a = area(r); System.out.println(r); } }

44 Visibilità delle Variabili Locali 44 Lo scope di una variabile locale non può contenere la definizione di un'altra variabile con lo stesso nome Rectangle r = new Rectangle(5, 10, 20, 30); if (x >= 0) { double r = Math.sqrt(x); // Errore non puoi dichiarare qui un'altra var. chiamata r... }

45 Visibilità delle Variabili Locali 45 Tuttavia, ci possono essere variabioli locali con nomi identici se gli scope non si sovrappongono if (x >= 0) { double r = Math.sqrt(x);... } // lo scope di r finisce qui else { Rectangle r = new Rectangle(5, 10, 20, 30); // OK qui è lecito dichiarare un'altra r... }

46 Visibilità di Classe 46 I membri private hanno uno scope di classe: si può accedere a tutti i membri in qualunque metodo all'interno della classe Al di fuori della classe, occorre qualificare i membri pubblici Math.sqrt harryschecking.getbalance

47 Scope dei Membri della Classe 47 All'interno di un metodo non serve qualificare i campi e i metodi che appartengono alla data classe Un campo o metodo d'istanza non qualificatosi riferisce al parametro this public class BankAccount { public void transfer(double amount, BankAccount other) { withdraw(amount); // ovvero this.withdraw(amount); } }... other.deposit(amount);

48 Visibilità Sovrapposte 48 Una variabile locale può oscurare (shadow( shadow) ) un campo con lo stesso nome Lo scope locale vince su quello di classe public class Coin {... public double getexchangevalue(double exchangerate) { double value; // Variabile locale... return value; } private String name; private double value; // Campo con lo stesso nome }

49 Visibilità Sovrapposte 49 Si accede a campi oscurati qualificandoli con il riferimento this value = this.value * exchangerate;

50 Organizzare Classi Correlate in Package Package: insieme di classi correlate Per assegnare alcune classi in un package, si deve mettere una riga 50 package packagename; come prima istruzione del sorgente contenente le classi Il nome di un pacchetto consiste in uno o più identificatori separati da punti

51 Organizzare Classi Correlate in Package 51 Ad esempio, per mettere la classe Financial nel package com.horstmann.bigjava, il file Financial.java deve cominciare come segue: package com.horstmann.bigjava; public class Financial {... } Il package di default non ha nome nè serve qualificarlo con un'istruzione package

52 Organizzare Classi Correlate in Package 52 Package java.lang java.util java.io Java.awt Java.applet Java.net Java.sql Java.swing Org.omg.CORBA Scopo Supporto al linguaggio Utilità Input e Output Abstract Windowing Toolkit Applet Networking Accesso ai Database Swing user interface Common Object Request Broker Architecture Esempio Math Random PrintScreen Color Applet Socket ResultSet JButton IntHolder

53 package packagename; Sintassi 9.2: Specifica dei Package 53 Esempio: package it.uniba.di.fanizzi; Scopo: : per dichiarare che tutte le classi nel file presente appartiene ad un particolare package

54 Importare dai Package 54 Si può sempre usare una classe senza importarla java.util.scanner in = new java.util.scanner(system.in); Usare nomi qualificati è tedioso Usare import permette di usare nomi più corti import java.util.scanner;... Scanner in = new Scanner(System.in)

55 Importare dai Package 55 Si possono importare tutte le classi in un package import java.util.*; Non c'è mai bisogno di importare java.lang Non c'è bisogno di importare altre classi nello stesso package

56 I Nomi di Package e Localizzare le Classi Su usano i package per evitare collisioni di nomi 56 java.util.timer vs. javax.swing.timer I nomi di package dovrebbero essere non ambigui Raccomandazione: iniziare invertendo il nome del dominio com.horstmann.bigjava edu.sjsu.cs.walters: : per le classi di Bertha Walters (walters@cs.sjsu.edu( walters@cs.sjsu.edu)

57 I Nomi di Package e Localizzare le Classi 57 La stringa del path dovrebbe corrispondere al nome del package: com/horstmann/bigjava/financial.java Il nome del percorso inizia con il percorso della classe: export CLASSPATH=/home/walters/lib:. set CLASSPATH=c:\home\walters\lib;. CLASSPATH contiene le directory di base che possono contenere directory di package

58 Directory di Base e Sottodirectories per Package 58 Figure 6: Base Directories and Subdirectories for Packages

59 Importazione di Pacchetti static 59 (da Argomenti avanzati 9.4) A partire da Java 5.0, per agevolare la scrittura/lettura: import static import static java.lang.system.*; import static java.lang.math.*; public class RootTester { public static void main(string args[]) { double r = sqrt(pi); out.println( radice +r); } }

Progettazione di classi

Progettazione di classi Capitolo 8 Progettazione di classi Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Obiettivi del capitolo Imparare a identificare le classi giuste da realizzare Assimilare

Dettagli

Capitolo 9. Progettare Classi

Capitolo 9. Progettare Classi Capitolo 9 Progettare Classi Obiettivi Imparare a scegiere quali sono le classi appropriate da implementare Comprendere I concetti di coesione ed accoppiamento Minimizzare l uso di effetti collaterali

Dettagli

Progettazione di classi

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

Dettagli

Capitolo 8 Progettazione di classi

Capitolo 8 Progettazione di classi Obiettivi del capitolo Capitolo 8 Progettazione di classi Identificare le classi giuste da realizzare Concetti di coesione e di accoppiamento Ridurre al minimo l uso degli effetti collaterali Pre-condizioni

Dettagli

Esercizio: la classe CashRegister

Esercizio: la classe CashRegister Esercizio: la classe CashRegister Si veda anche il libro di testo: Consigli pratici 3.1 Sezione 4.2 Sezione 8.2 Esercizi 8.1 e 8.2 1 Problema Si chiede di realizzare una classe CashRegister che simuli

Dettagli

I metodi statici -1. Variabili statiche Vogliamo assegnare a ciascuncontoun numeroidentificativo diverso. I metodi statici -2

I metodi statici -1. Variabili statiche Vogliamo assegnare a ciascuncontoun numeroidentificativo diverso. I metodi statici -2 I metodi statici -1 I metodi statici non hanno il parametro implicito il metodo sqrt di Math I metodi statici vengono detti anche metodi di classe perche` non operano su una particolare istanza della classe

Dettagli

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

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

Dettagli

Scope e visibilità per classi

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

Dettagli

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

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

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

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

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

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Classi astratte Le classi astratte sono un ibrido tra le classi concrete e le interfacce. Hanno le stesse caratteristiche di una

Dettagli

Parola chiave extends

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

Dettagli

Introduzione a Classi e Oggetti

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

Dettagli

Funzioni in C. Violetta Lonati

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

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

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

Dettagli

Java: Compilatore e Interprete

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

Dettagli

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012 Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono

Dettagli

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. 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

Dettagli

Dichiarazioni di import: Introduzione

Dichiarazioni di import: Introduzione Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 10 Import di classi e di metodi statici Dichiarazioni di import:

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni

Dettagli

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.

Dettagli

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

Dettagli

Test di unità con JUnit4

Test di unità con JUnit4 Test di unità con JUnit4 Richiamo sul test di unità Il test d unità è una metodologia che permette di verificare il corretto funzionamento di singole unità di codice in determinate condizioni. Nel caso

Dettagli

Programmazione a Oggetti Lezione 10. Ereditarieta

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

Dettagli

Inizializzazione, Assegnamento e Distruzione di Classi

Inizializzazione, Assegnamento e Distruzione di Classi Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della

Dettagli

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione basata sul campo d utilizzo. I principali package sono:

Dettagli

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

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

Dettagli

dall argomento argomento della malloc()

dall argomento argomento della malloc() Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È

Dettagli

Esercitazione n 4. Obiettivi

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

Dettagli

Programmazione A.A. 2002-03. Programmazione Orientata agli Oggetti: Lavorare con gli oggetti ( Lezione XXVII)

Programmazione A.A. 2002-03. Programmazione Orientata agli Oggetti: Lavorare con gli oggetti ( Lezione XXVII) Programmazione A.A. 2002-03 I Programmazione Orientata agli Oggetti: Lavorare con gli oggetti ( Lezione XXVII) Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2012-13 25 luglio 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

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

Dettagli

Livelli di astrazione

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

Dettagli

Il linguaggio Java. Concetti base. I packages

Il linguaggio Java. Concetti base. I packages Il linguaggio Java I packages Concetti base Un package è una collezione di classi ed interfacce correlate che fornisce uno spazio dei nomi ed un controllo sugli accessi Un package facilita il reperimento

Dettagli

Realizzazione di una classe con un associazione

Realizzazione di una classe con un associazione Realizzazione di una classe con un associazione Nel realizzare una classe che è coinvolta in un associazione, ci dobbiamo chiedere se la classe ha responsabilità sull associazione. Diciamo che una classe

Dettagli

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo

Dettagli

Object Oriented Programming

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

Dettagli

UML Diagrammi delle classi. UML Diagramma classi 1

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

Dettagli

Visibilità dei Membri di una Classe

Visibilità dei Membri di una Classe Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce

Dettagli

Modulo 4: Ereditarietà, interfacce e clonazione

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

Dettagli

Esercizio: la classe CashRegister

Esercizio: la classe CashRegister Esercizio: la classe CashRegister Si veda anche il libro di testo: Consigli pratici 3.1 Sezione 4.2 Sezione 8.2 Esercizi 8.1 e 8.2 1 Problema Si chiede di realizzare una classe CashRegister che simuli

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 14 giugno 2013 Testo Il database di una banca è costituito da due vettori paralleli. Il primo

Dettagli

Rectangle BankAccount Purse

Rectangle BankAccount Purse Rectangle BankAccount Purse StringTokenizer RandomNumberGenerator GestoreNuoviConti Math main CalcolaBustaPaga PogrammaPerIlPagamento Purse public class Purse { public Purse() {...} public void addnickels(int

Dettagli

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 10 Correttezza A. Miola Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Correttezza 1 Contenuti Introduzione alla correttezza

Dettagli

Programmazione a Oggetti Modulo B

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

Dettagli

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete La prima applicazione Java Programma MyFirstApplication Il programma visualizza una finestra vuota sullo schermo. Importo il package delle classi usate nel seguito. Dichiaro la classe MyFirstApplication

Dettagli

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni Esercizio 1 Nella classe definita di seguito indicare quali sono le variabili di istanza, quali sono le variabili

Dettagli

http://www.programmiamo.altervista.org/c/oop/o...

http://www.programmiamo.altervista.org/c/oop/o... PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.

Dettagli

Appunti di Informatica www.mimmocorrado.it 1

Appunti di Informatica www.mimmocorrado.it 1 Installare Java Il programma può essere scaricato dal seguente indirizzo: http://www.java.com/it/download/windows_ie.jsp?locale=it&host=www.java.com Per installare la JDK è necessario: 1. scaricare il

Dettagli

Variabili e Parametri. Scope, Lifetime Inizializzazione

Variabili e Parametri. Scope, Lifetime Inizializzazione Variabili e Parametri Scope, Lifetime Inizializzazione Categorie di Variabili Variabili di istanza / campi saldo in BankAccount Variabili locali newsaldo nel metodo deposita() Parametri importo per il

Dettagli

Variabili e Parametri

Variabili e Parametri Variabili e Parametri Scope, Lifetime Inizializzazione Categorie di Variabili Variabili di istanza / campi saldo in BankAccount Variabili locali newsaldo nel metodo deposita() Parametri importo per il

Dettagli

Esempio: il conto bancario

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

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

Progettazione di classi

Progettazione di classi Progettazione di classi Scegliere una classe Una classe rappresenta un singolo concetto Nome della classe = nome che esprime il concetto Una classe può rappresentare un concetto matematico Point Rectangle

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

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

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

Dettagli

Concetti di base di ingegneria del software

Concetti di base di ingegneria del software Concetti di base di ingegneria del software [Dalle dispense del corso «Ingegneria del software» del prof. A. Furfaro (UNICAL)] Principali qualità del software Correttezza Affidabilità Robustezza Efficienza

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

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

Dettagli

Tale attività non è descritta in questa dispensa

Tale attività non è descritta in questa dispensa Fondamenti di informatica Oggetti e Java ottobre 2014 1 Nota preliminare L installazione e l uso di Eclipse richiede di aver preliminarmente installato Java SE SDK Tale attività non è descritta in questa

Dettagli

Classi ed Oggetti in JAVA

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 rigutini@dii.unisi.it www.dii.unisi.it/~rigutini/

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015 Java:Struttura di Programma Fabio Scanu a.s. 2014/2015 Altre Attenzioni da riservare Java è Case Sensitive: La variabile «a» e la variabile «A» sono diverse Java ha alcune regole di scrittura: I nomi delle

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Object Oriented Software Design

Object Oriented Software Design Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Object Oriented Software Design Corso di Tecniche di Programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria

Dettagli

Strumenti per la programmazione

Strumenti per la programmazione Editing del programma Il programma deve essere memorizzato in uno o più files di testo editing codice sorgente 25 Traduzione del programma Compilazione: è la traduzione effettuata da un compilatore Un

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Traccia di soluzione dell esercizio del 25/1/2005

Traccia di soluzione dell esercizio del 25/1/2005 Traccia di soluzione dell esercizio del 25/1/2005 1 Casi d uso I casi d uso sono in Figura 1. Ci sono solo due attori: il Capo officina e il generico Meccanico. Figura 1: Diagramma dei casi d uso. 2 Modello

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento

Dettagli

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B 23.XI.2012 VINCENZO MARRA Indice Esercizio 1 1 Menu 1 Tempo: 35 min. 2 Commento 1 2 Esercizio 2 2 Ordinamento e ricerca binaria con la classe

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti: Javadoc Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti: /* commenti */ // commenti /** commenti documentazione */ Questi ultimi generano automaticamente

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Guida all uso di Java Diagrammi ER

Guida all uso di Java Diagrammi ER Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con

Dettagli

Basi di dati. Concetti introduttivi ESEMPIO. INSEGNAMENTI Fisica, Analisi, Aule. Docenti. Entità Relazioni Interrogazioni. Ultima modifica: 26/02/2007

Basi di dati. Concetti introduttivi ESEMPIO. INSEGNAMENTI Fisica, Analisi, Aule. Docenti. Entità Relazioni Interrogazioni. Ultima modifica: 26/02/2007 Basi di dati Concetti introduttivi Ultima modifica: 26/02/2007 ESEMPIO INSEGNAMENTI Fisica, Analisi, Informatica Aule Docenti Entità Relazioni Interrogazioni St udent i Database 2 Tabella (I) STUDENTE

Dettagli

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Si noti che le soluzioni ai quesiti saranno considerate valide

Dettagli

I metodi statici non hanno il parametro implicito

I metodi statici non hanno il parametro implicito I metodi statici -1 I metodi statici non hanno il parametro implicito q Esempio: il metodo sqrt di Math I metodi statici vengono detti anche metodi di classe perche` non operano su una particolare istanza

Dettagli

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

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

Dettagli

Classi 15/12/2010. Astrazione, astrazione astrazione. Astrazione, astrazione astrazione. Astrazione, astrazione astrazione

Classi 15/12/2010. Astrazione, astrazione astrazione. Astrazione, astrazione astrazione. Astrazione, astrazione astrazione Classi Introduzione al progetto di classi Metodi Costruttori Variabili di istanza (campi) Documentazione e commenti Astrazione, astrazione astrazione Astrazione, astrazione astrazione Anni 60/70: programmi

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Programmazione Java: Variabili membro, Metodi La parola chiave final

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

Dettagli

4. Un ambiente di sviluppo per Java

4. Un ambiente di sviluppo per Java pag.15 4. Un ambiente di sviluppo per Java Esistono in commercio molti ambienti di sviluppo utilizzati dai programmatori Java, in particolare si tratta di editor complessi che mettono a disposizione tools

Dettagli

13. Chain of Responsibility

13. Chain of Responsibility Chain of Responsibility 92 13. Chain of Responsibility (GoF pag. 223) 13.1. Descrizione Consente di separare il mittente di una richiesta dal destinario, in modo di consentire a più di un oggetto di gestire

Dettagli

Rappresentazione grafica di entità e attributi

Rappresentazione grafica di entità e attributi PROGETTAZIONE CONCETTUALE La progettazione concettuale, ha il compito di costruire e definire una rappresentazione corretta e completa della realtà di interesse, e il prodotto di tale attività, è lo schema

Dettagli

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report Facoltà di Lingue e Letterature Straniere Le QUERY 2 Che cos è una Query? Una Query rappresenta uno strumento per interrogare un database.

Dettagli

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

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

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

Un oggetto per la lettura dalla tastiera

Un oggetto per la lettura dalla tastiera Fondamenti di informatica Oggetti e Java ottobre 2012 1 Un oggetto per la lettura dalla tastiera Le API di Java hanno un oggetto System.in che rappresenta la tastiera del calcolatore, ma che non è semplice

Dettagli

Uso di base delle funzioni in Microsoft Excel

Uso di base delle funzioni in Microsoft Excel Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce

Dettagli

La struttura dati ad albero binario

La struttura dati ad albero binario La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,

Dettagli

Corso di Amministrazione di Reti A.A. 2002/2003

Corso di Amministrazione di Reti A.A. 2002/2003 Struttura di Active Directory Corso di Amministrazione di Reti A.A. 2002/2003 Materiale preparato utilizzando dove possibile materiale AIPA http://www.aipa.it/attivita[2/formazione[6/corsi[2/materiali/reti%20di%20calcolatori/welcome.htm

Dettagli

RISOLUTORE AUTOMATICO PER SUDOKU

RISOLUTORE AUTOMATICO PER SUDOKU RISOLUTORE AUTOMATICO PER SUDOKU Progetto Prolog - Pierluigi Tresoldi 609618 INDICE 1.STORIA DEL SUDOKU 2.REGOLE DEL GIOCO 3.PROGRAMMAZIONE CON VINCOLI 4.COMANDI DEL PROGRAMMA 5.ESEMPI 1. STORIA DEL SUDOKU

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

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse Prova Finale a.a. 2011/2012 Laboratorio 1: Introduzione a Java e Eclipse 1 Java 6 Standard Edition Linguaggio Java (... (javac, Tool di sviluppo Librerie per l'interfaccia grafica Librerie di base Macchina

Dettagli

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Programmazione in Java (I modulo) Lezione 3: Prime nozioni Programmazione in Java (I modulo) Lezione 3: Prime nozioni La volta scorsa Abbiamo avuto un primo assaggio! Abbiamo visto come usare l editor per scrivere un programma Java. Abbiamo analizzato riga per

Dettagli