3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;

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

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Laboratorio di Programmazione 1 [Java]

Programmazione 1 A.A. 2015/2016

Insieme.java. Printed by Paolo. Feb 24, 04 16:44 Page 1/1 class Insieme { private int[] elementi; Tuesday February 24, /10

Algoritmi di Ricerca. Esempi di programmi Java

Programmazione II Compitino (Vers. B)

Definizione di classi con array di oggetti

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002.

Esercitazione. Docente Ing. Mariateresa Celardo

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

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

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Programmazione II Compitino (Vers. B)

Algoritmi di Ricerca. Esempi di programmi Java

Laboratorio di Programmazione 1 [Java]

Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un

Ricerca e ordinamento su array di oggetti. Corso di Programmazione 2 Esercitazione 5

// inizializzazione della biblioteca con utenti, libri e prestiti // non richiesta Biblioteca.inizializza();

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

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

Algoritmi di Ricerca. Esempi di programmi Java

Cognome Nome Matricola Postazione PC. Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a Gennaio 2015

Programmazione 1 A.A. 2015/2016

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2012

Esercizi della lezione 5 di Java

Metodi statici. Dichiarazione e chiamata di metodi statici

public static boolean mr (String[] a, String[] b) { 2. Esercizio 3. Scrivere una versione ricorsiva del metodo definito per risolvere l Esercizio 2.

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

Esempio: Interfacce. Gioco Interfacce

Programmazione ad Oggetti: JAVA. Esercitazione

Esempio: Interfacce. Gioco Interfacce

Eccezioni Precisazioni e approfondimenti

Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008

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

Esempi in Java di program.ne O-O

Laboratorio di Sistemi Classi e relazioni Java

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Luglio Soluzione degli Esercizi

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:

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a febbraio 2013

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi

Corso di Laurea Ingegneria Civile Elementi di Informatica. Esercizi. Carla Limongelli. Esercizi 1

Programmazione II Compitino (Vers. A)

La classe Object. Ce li ha anche HelloWorld!!!

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Esercizi sui metodi. Carla Limongelli. Maggio Esercizi 1

Uguaglianza e copia di oggetti

Esempio su strutture dati dinamiche: ArrayList

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

Definizione di classi

Studente (Cognome Nome):

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

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

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010

16 - Ereditarietà, tipi e gerarchie

Fondamenti di Informatica I

Esempio: L EURO-CONVERTITORE (1) Scopo

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Richiami di Fondamenti di Informatica - 1

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca)

Studente (Cognome Nome):

Tipi di dato strutturati: Array

Fondamenti di Informatica T1 Mappe

Laboratorio di Programmazione Lezione 4. Cristian Del Fabbro

GESTIONE DEGLI ERRORI

Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73

14 - Metodi e Costruttori

Introduzione Programmazione Java

Programmazione I. 11 gennaio Considerate la seguente gerarchia di classi (rappresentata mediante un diagramma UML): +f(double x):

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

Iterazioni. L istruzione while. while (condition) istruzione

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

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

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

Esempio su strutture dati dinamiche: ArrayList

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

TEMA D ESAME 1. Segnalare eventuali errori o situazioni non gestibili con opportune eccezioni o messaggi di errore. TEMA D ESAME 2

ARRAY E STRINGHE. G. Frosini Slide 1

Stringhe e Array. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Corso di Fondamenti di Informatica Tipi strutturati: Strutture typedef Anno Accademico 2008/2009 Francesco Tortorella

Fondamenti di Programmazione Recupero Primo Parziale 30 Gennaio 2008 Traccia A

Java vs Ocaml. Una prima analisi

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

Informatica 3 secondo recupero 13 Settembre 2002

Linguaggi di Programmazione II Matricole con le due ultime cifre dispari

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

ESERCIZI JAVA. Esercizi sulle Interfacce. Esercizio 1:

Decima Esercitazione. Accesso a risorse condivise tramite Monitor Java

esercizi Esercizi / problemi

Esercitazione 15. Il problema dello Sleeping Barber

Le basi del linguaggio Java

Transcript:

Un esempio di definizione di classe con array di oggetti Sia data la classe StudUniv per gli studenti universitari (definita in una lezione precedente). Scrivere una nuova classe Corso, dove ciascun corso è caratterizzato da nome del corso, nome del docente titolare del corso, numero di crediti associati al corso, settore scientifico disciplinare del corso e da un elenco di studenti universitari, il cui numero massimo deve essere impostato dal costruttore della classe. Definire i seguenti metodi per la classe Corso: 1. i metodi che restituiscono i valori delle variabili istanza; 2. un metodo che aggiunge uno studente al corso; 3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso; 4. un metodo che, data una matricola k, restituisce l elenco degli studenti del corso la cui matricola è maggiore di k; 5. un metodo che, date due stringhe che denotano un nome ed un cognome, restituisce true se nell elenco degli studenti del corso compare uno studente con nome e cognome dati, altrimenti il metodo restituisce false. La prima soluzione presentata utilizza una variabile istanza cont, inizializzata a 0, che denota la prima posizione libera nell array che rappresenta l elenco di studenti in un oggetto della classe Corso. public class Corso { private String nomecorso, nomedocente, ssd; private int cfu; private StudUniv[] studenti; private int cont = 0; public Corso (String nc, String nd, int c, String ssd, int m) { this.nomecorso = nc; this.nomedocente = nd; this.cfu = c; this.ssd = ssd; this.studenti = new StudUniv[m]; public String legginomecorso() { return this.nomecorso; public String legginomedocente() { return this.nomedocente; public int legginumcfu() { return this.cfu; public String leggissd() { return this.ssd;

public StudUniv[] leggielencostudenti() { return this.studenti; public void aggstudente (StudUniv s) { if (this.cont < this.studenti.length) { this.studenti[cont] = s; this.cont++; public int[] elencomatricole() { int[] a = new int[cont]; a[i] = this.studenti[i].leggimatricola(); public StudUniv[] elencostudenti (int k) { if (this.studenti[i].leggimatricola() > k) StudUniv[] a = new StudUniv[c]; if (this.studenti[i].leggimatricola() > k) { a[j] = this.studenti[i]; public boolean esistestudente (String nome, String cognome) { if (this.studenti[i].legginome().equals(nome) && this.studenti[i].leggicognome().equals(cognome)) Osservazione Sia la specifica dell ultimo metodo definito nella classe Corso modificata come segue: definire un metodo che, dato uno studente universitario s, restituisce true se s compare nell elenco degli studenti del corso, altrimenti il metodo restituisce false. In tal caso, può risultare utile definire un metodo equals nella classe StudUniv che confronta due studenti e restituisce true se tutti i campi dei due oggetti sono uguali, altrimenti

restituisce false. Quindi, se aggiungiamo nella classe StudUniv il seguente metodo public boolean equals (StudUniv s) { if (this.nome.equals(s.nome) && this.cognome.equals(s.cognome) && this.matricola == s.matricola) else il metodo nella classe Corso che controlla se un dato studente compare nell elenco degli studenti del corso può essere definito come segue: public boolean esistestudente (StudUniv s) { if (this.studenti[i].equals(s)) Scrivere un breve programma di prova che illustri l uso della classe Corso e dei suoi metodi. public class CorsoTest { public static void main(string[] args) { Corso c = new Corso("Lab.Progr.","Nesi",6,"INF/01",100); StudUniv s1 = new StudUniv("Andrea","Rossi",134678); StudUniv s2 = new StudUniv("Elena","Bianchi",149987); StudUniv s3 = new StudUniv("Paolo","Neri",150456); c.aggstudente(s1); c.aggstudente(s2); c.aggstudente(s3); int[] m = c.elencomatricole(); for (int i=0; i<m.length; i++) System.out.println(m[i]); int matr = 149500; StudUniv[] a = c.elencostudenti(matr); System.out.println("Gli studenti del corso "+ c.legginomecorso() + " con matricola > " + matr + " sono:"); for (int i=0; i<a.length; i++) System.out.println(a[i].leggiNome() +" "+ a[i].leggicognome()); if (c.esistestudente(s2)) System.out.println(s2.leggiNome() +" "+ s2.leggicognome() + " segue il corso "+ c.legginomecorso()); Il risultato di tale programma di prova è la seguente stampa:

134678 149987 150456 Gli studenti del corso Lab.Progr. con matricola > 149500 sono: Elena Bianchi Paolo Neri Elena Bianchi segue il corso Lab.Progr. Una soluzione alternativa per la definizione della classe Corso, in cui non viene utilizzata la variabile istanza cont, è la seguente: public class CorsoN { private String nomecorso, nomedocente, ssd; private int cfu; private StudUniv[] studenti; public CorsoN (String nc, String nd, int c, String ssd, int m) { this.nomecorso = nc; this.nomedocente = nd; this.cfu = c; this.ssd = ssd; this.studenti = new StudUniv[m]; public String legginomecorso() { return this.nomecorso; public String legginomedocente() { return this.nomedocente; public int legginumcfu() { return this.cfu; public String leggissd() { return this.ssd; public StudUniv[] leggielencostudenti() { return this.studenti; public void aggstudente (StudUniv s) { int i = 0; while (i < this.studenti.length) { if (this.studenti[i]!= null) i++; else {

this.studenti[i] = s; return; public int[] elencomatricole() { if (this.studenti[i]!= null) int[] a = new int[c]; if (this.studenti[i]!= null) { a[j] = this.studenti[i].leggimatricola(); public StudUniv[] elencostudenti (int k) { if (this.studenti[i]!= null && this.studenti[i].leggimatricola() > k) StudUniv[] a = new StudUniv[c]; if (this.studenti[i]!= null && this.studenti[i].leggimatricola() > k) { a[j] = this.studenti[i]; public boolean esistestudente (StudUniv s) { int i = 0; while (i < this.studenti.length) { if (this.studenti[i]!= null && this.studenti[i].equals(s)) else { i++;