








Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Esempi pratici molto utili per la programmazione a oggetti Java di base
Tipologia: Esercizi
1 / 14
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!









public class Test { public static void main(String[] args) { Persona p = new Persona("pippo","Franco", "[email protected]","11/10/2001"); System. out .println("eta: " + p.getEta()); //UPCASTING Persona s = new Studente("pippo2","Franco2","[email protected]","11/10/2001","informatica"," 4"); Persona l = new Lavoratore("pippo2","Franco2","[email protected]","11/10/2001", 12000 ,"839134"); // Classe a = new Qualcosa() // Si può fare perchè Qualcosa è sottoclasse di Classe //BINDING DINAMICO p.presentati(); s.presentati(); l.presentati(); //DOWNCASTING boolean eFurioCorsos = ((Studente)s).fuoriCorso(); boolean eRicco = ((Lavoratore)l).ricco(); System. out .println(eFurioCorsos + " " + eRicco); } } public class Studente extends Persona{ private String corso; private String matricola; public Studente(String nome, String cognome, String email, String compleanno, String corso, String matricola) { super(nome, cognome, email, compleanno); this.corso = corso; this.matricola = matricola; } @Override public void presentati() { super.presentati(); System. out .println("sono uno studente del corso di " + corso); } public boolean fuoriCorso(){ int eta = super.getEta(); return eta > 30 ; } }
public class Lavoratore extends Persona{ private int redditoAnnuale; private String professione; public Lavoratore(String nome, String cognome, String email, String compleanno, int redditoAnnuale, String professione) { super(nome, cognome, email, compleanno); this.redditoAnnuale = redditoAnnuale; this.professione = professione; } @Override public void presentati() { super.presentati(); System. out .println("sono un " + professione + " e guadagno "
public class ArrayUtils { // stampare a schermo l’array (es l’array deve essere stampato in questo modo [1, 2, 3, 4, 5 ecc..]) public static void print(int[] array) { System. out .print("["); for (int i = 0 ; i < array.length; i++) { System. out .print(array[i]); if (i < array.length - 1 ) { System. out .print(", "); } } System. out .println("]"); } // restituire la somma degli elementi dell’array passato public static int sum(int[] array){ int somma = 0 ; for(int i = 0 ; i < array.length; i++){ somma += array[i]; } return somma; } // trovarne la media public static double average(int[] array){ int somma = 0 ; for(int i = 0 ; i < array.length; i++){ somma += array[i]; } return (double)somma/array.length; } // trovare i valori di massimo e di minimo (deve essere realizzato in un unico metodo) public static int[] maxMin(int[] array){ int[] maxMin = new int[ 2 ]; int max = array[ 0 ]; int min = array[ 0 ]; for(int i = 1 ; i < array.length; i++){ if(max < array[i]){ max = array[i]; } else if(min > array[i]){ min = array[i]; } } maxMin[ 0 ] = max; maxMin[ 1 ] = min; return maxMin; } // restituire l’array inverso (es se prima si ha [1, 2, 3, 4], in output devo avere [4, 3, 2, 1]) public static int[] reverse(int[] array){ int[] reversedArray = new int[array.length]; for(int i = array.length - 1 , j = 0 ; i >= 0 ; i--, j++){ reversedArray[j] = array[i];
return reversedArray; } // rimuovere un elemento in una certa posizione passata anch’essa come parametro (restituire il nuovo array con l’elemento eliminato). public static int[] remove(int[] array, int pos){ int[] newArray = new int[array.length - 1 ]; int i = 0 , j = 0 ; while(i < array.length){ if(i != pos){ newArray[j] = array[i]; j++; } i++; } return newArray; } }
public class TestAnagrafe { public static void main(String[] args) { Anagrafe anagrafe = new Anagrafe( 3 ); Persona p = new Persona("pippo","franco","[email protected]","11/11/1999"); Persona p1 = new Persona("pippa","franca","[email protected]","11/11/1999"); Persona p2 = new Persona("pluto","plutino","[email protected]","11/11/1999"); anagrafe.registraPersona(p); anagrafe.registraPersona(p1); anagrafe.registraPersona(); anagrafe.mostraAnagrafe(); } } public class Persona { protected String nome; protected String cognome; protected String email; protected String compleanno; public Persona(String nome, String cognome, String email, String compleanno) { this.nome = nome; this.cognome = cognome; this.email = email; this.compleanno = compleanno; } public void presentati() { System. out .println("Salve mi chiamo " + nome + " " + cognome +
private int capienza; private int personeRegistrate; public Anagrafe(int capienza) { if(capienza > 0 ) { this.capienza = capienza; this.personeRegistrate = 0 ; this.persone = new Persona[capienza]; }else{ System. exit ( 0 ); } } public void registraPersona(Persona p) { this.inserisciDentroArray(p); } public void registraPersona(){ Persona p = this.generaPersona(); this.inserisciDentroArray(p); } public void mostraAnagrafe(){ for(int i = 0 ; i < persone.length && persone[i] != null; i++){ persone[i].presentati(); } } private void inserisciDentroArray(Persona p){ if (personeRegistrate < capienza) { persone[personeRegistrate] = p; personeRegistrate++; } else { System. out .println("Capienza massima raggiunta, impossibile registrare altre persone"); } } private Persona generaPersona() { Scanner scanner = new Scanner(System. in ); System. out .println("inserisci nome: "); String nome = scanner.nextLine(); System. out .println("inserisci cognome: "); String cognome = scanner.nextLine(); System. out .println("inserisci email: "); String email = scanner.nextLine(); System. out .println("inserisci data di nascita: "); String compleanno = scanner.nextLine(); System. out .println("studente, lavoratore o persona ?"); String tipo = scanner.nextLine(); if (tipo.equals("studente")) { System. out .println("inserisci corso"); String corso = scanner.nextLine(); System. out .println("inserisci matricola"); String matricola = scanner.nextLine(); return new Studente(nome, cognome, email, compleanno, corso,
matricola); } else if (tipo.equals("lavoratore")) { System. out .println("inserisci professione"); String professione = scanner.nextLine(); System. out .println("inserisci reddito annuale "); int reddito = scanner.nextInt(); return new Lavoratore(nome, cognome, email, compleanno, reddito, professione); } else { return new Persona(nome, cognome, email, compleanno); } } } public class Lavoratore extends Persona{ private int redditoAnnuale; private String professione; public Lavoratore(String nome, String cognome, String email, String compleanno, int redditoAnnuale, String professione) { super(nome, cognome, email, compleanno); this.redditoAnnuale = redditoAnnuale; this.professione = professione; } @Override public void presentati() { super.presentati(); System. out .println("sono un " + professione + " e guadagno "
public void print(){ for(int i = 0 ; i < matrice.length; i++){ for(int j = 0 ; j < matrice[i].length; j++){ System. out .print(matrice[i][j] + " "); } System. out .println(); } } public int[] getRiga(int riga){ return matrice[riga]; } public int[] getColonna(int colonna){ int[] arrayColonna = new int[matrice.length]; for(int i = 0 ; i < matrice.length; i++){ arrayColonna[i] = matrice[i][colonna]; } return arrayColonna; } public void printDiagonale(){ if(matrice.length == matrice[ 0 ].length){ for(int i = 0 , j = 0 ; i < matrice.length; i++, j++){ System. out .print(matrice[i][j] + " "); } } } public void printDiagonalePremium(){ if(matrice.length == matrice[ 0 ].length){ for(int i = 0 , j = 0 ; i < matrice.length; i++, j++){ for(int k = 0 ; k < i; k++){ System. out .print(" "); } System. out .println(matrice[i][j]); } } } public void setRandomValues(){ Random random = new Random(); for(int i = 0 ; i < matrice.length; i++){ for(int j = 0 ; j < matrice[i].length; j++){ matrice[i][j] = random.nextInt( 10 ); } } } }
public class Ricorsione { //elevazione a esponenza private static long exp(int base, int esponente){ if(esponente == 0 ) { return 0 ; }else if(esponente == 1 ){
return base; }else{ return base * exp (base, esponente - 1 ); } } //somma I numeri disperi da 1 a n private static int sommDispari(int n){ if(n == 1 ){ return 1 ; }else if(n % 2 == 0 ){ return sommDispari (n - 1 ); }else{ return n + sommDispari (n - 1 ); } } //controlla se un numero e’ primo private static boolean ePrimo(int n){ return controllaDivisori (n, 2 ); } private static boolean controllaDivisori(int n, int divisore){ if(divisore == n){ return true; }else{ return (n % divisore != 0 ) && controllaDivisori (n, divisore + 1 ); //IDEA: mi basta trovare un solo divisore di n compreso tra 2 e n - 1 // per far si che tutta la rispsota sia false ( T && T && F ) = F } } public static void main(String[] args) { System. out .println( exp ( 2 , 10 )); System. out .println( expVeloce ( 2 , 10 )); System. out .println( sommDispari ( 7 )); System. out .println( ePrimo ( 3 )); } }
public class Ordinamento { // Questa classe contiene 4 dei metodi principali per ordinare un array: // in ordine: 1) BubbleSort // 2) SelectionSort // 3) QuickSort // 4) MergeSort // public static void bubbleSort(int[] array) { int n = array.length; int temp = 0 ; for (int i = 0 ; i < n; i++) { for (int j = 1 ; j < (n - i); j++) { if (array[j - 1 ] > array[j]) { //scambio degli elementi temp = array[j - 1 ]; array[j - 1 ] = array[j]; array[j] = temp;
if (l < r) { // Trova l'indice che divide l'array a meta int m = (l + r) / 2 ; // Ordina la prima e la seconda metà sort (arr, l, m); sort (arr, m + 1 , r); // Fa il merge delle metà ordinate merge (arr, l, m, r); } } private static void merge(int arr[], int l, int m, int r) { // Trova le lunghezze dei due sottoarray da unire int n1 = m - l + 1 ; int n2 = r - m; /* Crea degli array temporanei / int L[] = new int[n1]; int R[] = new int[n2]; /Copia i dati negli array temporanei/ for (int i = 0 ; i < n1; ++i) L[i] = arr[l + i]; for (int j = 0 ; j < n2; ++j) R[j] = arr[m + 1 + j]; / Merge degli array temporanei*/ int i = 0 , j = 0 ; int k = l; while (i < n1 && j < n2) { if (L[i] <= R[j]) { arr[k] = L[i]; i++; } else { arr[k] = R[j]; j++; } k++; } while (i < n1) { arr[k] = L[i]; i++; k++; } while (j < n2) { arr[k] = R[j]; j++; k++; } } }
public class Test { public static void main(String[] args) { MioArrayList mioArrayList = new MioArrayList(); mioArrayList.add( 10 ); mioArrayList.add( 9 ); mioArrayList.add( 8 ); mioArrayList.add( 1 ); mioArrayList.print(); mioArrayList.remove( 0 ); mioArrayList.print(); System. out .println(mioArrayList.size()); } }