Questi lucidi provengono dal Capitolo 7 del libro. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

Documenti analoghi
Array. C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo

Capitolo 7 array e array list

Capitolo 8. Arrays e Array Lists

Capitolo 7 Vettori e array. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

Array 1. Array: sequenza di valori omogenei (cioè dello stesso tipo). Costruire un array: new double[10]

Esempio. public class Purse { public Purse() { nickels = 0; dimes = 0; quarters = 0; } public double gettotal() {

Arrays Array L ay ist

Capitolo 2. Utilizzare oggetti

Proge&are le Classi Ing. Massimo Cossen.no Sistemi Informa.vi Aziendali a.a. 2008/2009

Capitolo 3. Realizzare classi

Oggetti. Oggetti e classi. Utilizzo di classi. Classe

Implementare le classi

Tipi di dato Fondamentali

sayhello public private protected return public class Greeter { public String sayhello() { String message = Hello, World! ; return message; } }

Capitolo 12: Vettori e array. Capitolo 12. Vettori e array Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2

Progetto di classi: Metodi Costruttori Documentazione e commenti Variabili di istanza (campi)

Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo.

Esercitazioni aggiuntive Martedì Laboratorio L-12

Ereditarietà (ancora)

Ereditarietà (ancora)

public BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; }

Bank account. private double balance; 11/2/2011

Tipi di dato F n o d n am ent en ali

Fondamenti di informatica 2 Claudio Biancalana. Esercitazione capitolo 19 Array

Array. In Java un array è un oggetto senza metodi, con attributo pubblico length che memorizza la dimensione dell array

Realizzare classi. Cosa abbiamo fatto finora. Realizzare classi. Realizzare classi. Realizzare classi. Realizzare classi

Scelte. Costrutto condizionale. Il costrutto if. Il costrutto if. Rappresentazione con diagramma a blocchi. Il costrutto if

Capitolo 3. Realizzare classi. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

Tipi di dato Fondamentali

Esempio su strutture dati dinamiche: ArrayList

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

Esempio su strutture dati dinamiche: ArrayList

Informatica - Laboratorio gennaio 06. Laboratorio. Esercizio 1

Esempio: il conto bancario

ArrayList. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

Tipi di dato Fondamentali

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

Questi lucidi provengono dal capitolo 2 di:

Definiamo la prima classe vera. Concetti fondamentali 2. Il corpo del metodo. Definizione di un metodo

!"#$%&' ()*+,$-.+/)*+0)1*$23456)1*$78 (+,,$9&&:

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

Metodi e variabili istanza

Fondamenti di Informatica T-1

Esempio su strutture dati dinamiche: ArrayList

Impariamo a programmare in. Lezione 6

I Metodi. Fondamenti di Informatica A-K

Esercitazione Fondamenti di Informatica 2

Variabili e Parametri. Scope, Lifetime Inizializzazione

Variabili e Parametri

Gli Array Ing. Massimo Cossen.no Sistemi Informa.vi Aziendali a.a. 2008/2009

Fondamenti di informatica T-1 (A K) Esercitazione 8: classi e oggetti

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

DataSet. ... public BankAccount getmaximum() { return x; }... private BankAccount maximum;... } DataSet

Concetti principali Ereditarietà e (overriding) di metodi. Ereditarietà e costruttori Livelli di accesso protected e package La classe Object

Livelli di astrazione

LINKEDLIST: implementazione iteratore. LINKEDLIST: iteratore INNERITERATOR INNERITERATOR

E21 Esercizi sulle collezioni in Java

Linguaggi di Programmazione II Matricole con le due ultime cifre dispari

Fondamenti di Informatica

Fondamenti di Informatica T-1

Cenni su programmazione con tipi generici (generics)

Algoritmi di Ricerca. Esempi di programmi Java

Capitolo 17. Introduzione alle strutture di dati. Capitolo 17 Introduzione alle strutture di dati

Capitolo 1. Introduzione. Cay S. Horstmann Concetti di informatica e fondamenti di Java

Capitolo 4. Tipi di dati fondamentali. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Array mono- e bi-dimensionali Cicli while e do-while

Note ed esercizi aggiuntivi

Algoritmi di Ricerca. Esempi di programmi Java

Parola chiave extends

Bank. Bank. BankAccount. Bank. Bank. private BankAccount[] conti; // Posizione attuale private int posizioneattuale;...

Classi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array

Le basi del linguaggio Java

Capitolo 16. Programmazione generica. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

Fondamenti di Informatica T-1

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

Array. Definizione e utilizzo di vettori

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Programmazione. Cognome... Nome... Matricola... Prova scritta del 20 febbraio 2012

Il Linguaggio Java. Classe. Classi ed oggetti

Anno Accademico 2003/04. Docente modulo 1: Annalisa De Bonis. Ripete l esecuzione di statement fino a che la condizione e` verificata

Corso sul linguaggio Java

A.A. 2018/2019. AlgoBuild: Introduzione agli Array FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Conoscere l uso delle collezioni in Java. Conoscere il concetto di Generics (programmazione

E7 Esercizi sul Capitolo 7 Realizzazione di Classi

Laboratorio di Programmazione Lezione 3. Cristian Del Fabbro

Programmazione in Java Parte II

Lezione 4 Casting, stringhe e caratteri, operatori relazionali, espressioni e variabili booleane

Lezione 6 programmazione in Java

Parcheggio.rtf 1/8 6 gennaio Prova di programmazione: parcheggio a pagamento

Laboratorio di Sistemi Ordinamento di oggetti Java

Classe. Costruttori (inizializzazione dell oggetto) Operazioni o metodi (operazione sull oggetto; comportamento dell oggetto)

Calcolare x n = x x x (n volte)

Fondamenti di Informatica T-1

Transcript:

Questi lucidi provengono dal Capitolo 7 del libro Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

Vettori La classe ArrayList (vettore o lista sequenziale) gestisce oggetti disposti in sequenza. Un vettore può crescere e calare di dimensione in base alle necessità La classe ArrayList fornisce metodi per svolgere le operazioni più comuni, come l inserimento e la rimozione di elementi La classe ArrayList è una classe generica: ArrayList<T> contiene oggetti di tipo T. ArrayList<BankAccount> accounts = new ArrayList<BankAccount>(); accounts.add(new BankAccount(1001)); accounts.add(new BankAccount(1015)); accounts.add(new BankAccount(1022)); Il metodo size restituisce la dimensione attuale del vettore

Ispezionare gli elementi Per ispezionare gli oggetti contenuti nel vettore si usa il metodo get e non l operatore [ ] Come con gli array, i valori degli indici iniziano da 0 Ad esempio, accounts.get(2) restituisce il conto bancario avente indice 2, cioè il terzo elemento del vettore: BankAccount anaccount = accounts.get(2); // fornisce il terzo elemento del vettore Accedere a un elemento non esistente è un errore. L errore di limiti più frequente è il seguente: int i = accounts.size(); anaccount = accounts.get(i); // Errore // gli indici validi vanno da 0 a i-1

Aggiungere elementi Per assegnare un nuovo valore a un elemento di un vettore già esistente si usa il metodo set: BankAccount anaccount = new BankAccount(1729); accounts.set(2, anaccount); È possibile inserire un oggetto in una posizione intermedia all interno di un vettore. accounts.add(i, a) L invocazione accounts.add(i, a) aggiunge l oggetto c nella posizione i e sposta tutti gli elementi di una posizione, a partire dall elemento attualmente in posizione i fino all ultimo elemento presente nel vettore.

Aggiungere elementi Figura 3 Aggiungere un elemento in una posizione intermedia di un vettore

Rimuovere elementi Figura 4 Rimuovere un elemento da una posizione intermedia di un vettore L'invocazione accounts.remove(i) elimina l elemento che si trova in posizione i, sposta di una posizione all indietro tutti gli elementi che si trovano dopo l elemento rimosso e diminuisce di uno la dimensione del vettore.

File: ArrayListTester.java 01: import java.util.arraylist; 02: 03: /** 04: Questo programma collauda la classe ArrayList. 05: */ 06: public class ArrayListTester 07: { 08: public static void main(string[] args) 09: { 10: ArrayList<BankAccount> accounts 11: = new ArrayList<BankAccount>(); 12: accounts.add(new BankAccount(1001)); 13: accounts.add(new BankAccount(1015)); 14: accounts.add(new BankAccount(1729)); 15: accounts.add(1, new BankAccount(1008)); 16: accounts.remove(0); Segue

File: ArrayListTester.java 17: 18: System.out.println("size=" + accounts.size()); 19: BankAccount first = accounts.get(0); 20: System.out.println("first account number=" 21: + first.getaccountnumber()); 22: BankAccount last = accounts.get(accounts.size() - 1); 23: System.out.println("last account number=" 24: + last.getaccountnumber()); 25: } 26: }

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 conto bancario con saldo uguale a zero. 09: @param anaccountnumber il numero di questo conto bancario 10: */ 11: public BankAccount(int anaccountnumber) 12: { 13: accountnumber = anaccountnumber; 14: balance = 0; 15: } 16: Segue

File: BankAccount.java 17: /** 18: Costruisce un conto bancario con un saldo assegnato. 19: @param anaccountnumber il numero di questo conto bancario 20: @param initialbalance il saldo iniziale 21: */ 22: public BankAccount(int anaccountnumber, double initialbalance) 23: { 24: accountnumber = anaccountnumber; 25: balance = initialbalance; 26: } 27: 28: /** 29: Restituisce il numero di conto del conto bancario. 30: @return il numero di conto 31: */ 32: public int getaccountnumber() 33: { 34: return accountnumber; 35: } Segue

File: BankAccount.java 36: 37: /** 38: Versa denaro nel conto bancario. 39: @param amount l importo da versare 40: */ 41: public void deposit(double amount) 42: { 43: double newbalance = balance + amount; 44: balance = newbalance; 45: } 46: 47: /** 48: Preleva denaro dal conto bancario. 49: @param amount l importo da prelevare 50: */ 51: public void withdraw(double amount) 52: { 53: double newbalance = balance - amount; 54: balance = newbalance; Segue

File: BankAccount.java 5: } 6: 7: /** 8: Ispeziona il valore del saldo attuale del conto bancario. 9: @return il saldo attuale 0: */ 1: public double getbalance() 2: { 3: return balance; 4: } 5: 6: private int accountnumber; 7: private double balance; 8: }

File: BankAccount.java Output: Size: 3 First account number: 1008 Last account number: 1729

Il ciclo for generalizzato Il ciclo for generalizzato scandisce tutti gli elementi di una raccolta: double[] data =...; double sum = 0; for (double e : data) // si legge "per ogni e in data" { sum = sum + e; } Segue

Il ciclo for generalizzato Per scandire tutti gli elementi di un array non è obbligatorio utilizzare il ciclo for generalizzato: lo stesso ciclo può essere realizzato con un for normale e una variabile indice esplicita. double[] data =...; double sum = 0; for (int i = 0; i < data.length; i++) { double e = data[i]; sum = sum + e; }

Il ciclo for generalizzato Il ciclo for generalizzato può essere usato anche per ispezionare tutti gli elementi di un vettore. Ad esempio, il ciclo seguente calcola il saldo totale di tutti i conti bancari: ArrayList<BankAccount> accounts =... ; double sum = 0; for (BankAccount a : accounts) { sum = sum + a.getbalance(); } Il ciclo è equivalente a questo ciclo normale : double sum = 0; for (int i = 0; i < accounts.size(); i++) { BankAccount a = accounts.get(i); sum = sum + a.getbalance(); }

Sintassi 8.3: Il ciclo for generalizzato for (Tipo variabile : aggregato) istruzioneinterna Esempio: for (double e : data) sum = sum + e; Obiettivo: Eseguire un ciclo avente un iterazione per ogni elemento appartenente a un aggregato. All inizio di ciascuna iterazione viene assegnato alla variabile l elemento successivo dell aggregato, poi viene eseguita l istruzioneinterna.