vuoi
o PayPal
tutte le volte che vuoi
Più casi con lo stesso valore non sono consentiti, inoltre è molto importante inserire il comando break, in caso
contrario non si terminerà la sequenza di istruzioni. Il caso default è opzionale, se non c’è nessuna corrispondenza con
i vari i casi si eseguiranno gli statements presenti nel caso di default, in mancanza di esso non verrà eseguito alcuno
statement
Ciclo while e do-while-> entrambi ripetono un blocco di istruzioni nché la condizione risulta true
La differenza tra i due cicli sta nel fatto che il ciclo do-while ripete almeno una volta le istruzioni all’interno del ciclo
e successivamente veri ca la condizione, mentre il ciclo while veri ca da subito la condizione, e se essa risulta false
da subito nessuna istruzione all’interno di tale ciclo verrà eseguit
Bisogna porre particolare attenzione a non creare cicli in niti
Ciclo for-> permette di iterare un gruppo di istruzioni per un numero ben de nito di volte, inizializzando una variabile
che funge da contatore, il valore di questa variabile di controllo verrà incrementato (o diminuito) ad ogni ciclo
completato. Il ciclo verrà ripetuto no a quando la condizione risulterà false
for (int i=0;i<10; i++) { //(initialization; condition; iteration;)
statement1;
statement2;
}
Array-> un array può contenere un numero pre ssato di oggetti tutti dello stesso tipo. Al momento della creazione di
un array si devono de nire le dimensioni e la lunghezza (length), cioè il numero massimo di elementi che possono
essere inseriti, non il numero di elementi presenti. Gli elementi all’interno di un array vengono identi cati dal loro
indice (gli indici cominciano sempre da 0)
Un array monodimensionale, è semplicemente una lista di oggetti dello stesso tipo. La JVM veri ca che il programma
utilizzi gli indici corretti per gli array e che non siano richiamati indici al di fuori del range dell’array. Se il programma
prova ad accedere a indici al di fuori del range dell’array o ad indici negativi si avrà un errore a runtime
Per quanto riguarda gli array multidimensionali, questi si possono de nire come array di array
type [] arrayName=new type[length];
• Creazione di un array monodimensionale:
type [][] arrayName=new type[righe][colonne];
• Creazione di un array bidimensionale:
type[] arrayName= {element1, element 2, element 3};
• In alternativa: arrayName[index]=element;
• Aggiunta di un elemento all’array:
arrayName.length; //fornisce un intero
• Lunghezza array: import java.util.Arrays;
Posso importare la classe Arrays ( ) per utilizzare vari metodi tra cui
Arrays.sort(arrayName);
• Ordinare un array: Arrays.sort(arrayName, fromIndex, toIndex);
• Ordinare un insieme di elementi dell’array:
Arrays.equals(arrayName1, arrayName2); //true or false
• Comparare due array: Arrays. ll( arrayName, value);
• Inserire lo stesso valore su tutto l’array:
Arrays.toString(arrayName);
• Stampare un array:
forniscono la possibilità di de nire, sotto un solo nome, interi gruppi di istruzioni (statements).
Metodi->
In questo modo si può riutilizzare un blocco di codice in molte parti del programma, semplicemente richiamando il
nome con cui è stato de nito, senza dover riscrivere tutto il blocco di istruzioni
La parameter-list è una sequenza di variabili (type varName) separati da una virgola, vengono usati per passare dei
valori al metodo, se il metodo non ha necessità di usare valori questa lista sarà vuota
8 di 17
. fi fi fi : fi fi . fi fi fi . . a fi fi fi .
fi . . : . fi . fi .
Quando si de nisce un metodo deve essere de nito anche il tipo di dato che viene ritornato da tale metodo (type). Nel
caso in cui il metodo non ritorni nessun dato il type del metodo deve essere void, mentre negli altri casi è necessario
utilizzare il return statement per speci care qual è il dato da ritornare, che deve essere congruente con il type del
metodo. type methodName (parameter-list){
statements;
return value; //solo se necessario
}
Oggetti e classi-> In JAVA ogni “cosa” è un oggetto, si può pensare ad una class come ad un tipo di dato astratto che
de nisce un object. Un programma è un insieme di oggetti che dialogano tra loro dicendosi l’un l’altro cosa fare
attraverso dei messaggi. Un’oggetto è caratterizzato da: variabili che ne descrivono lo stato, metodi da cui deriva il
comportamento di tale oggetto, e un unico indirizzo di memoria nel quale è allocato
Quando si va a de nire una classe si de nisce un nuovo tipo di dato, che può essere utilizzato per creare oggetti di
quel tipo (o oggetti di altro tipo)
All’interno di una classe posso de nire solo variabili (instance variables), solo metodi o entrambi. Tutto ciò che viene
de nito all’interno della classe fa parte dei members of the class
Per usare un oggetto all’interno del programma bisogna istanziare tale oggetto
Costruttore->Un costruttore inizializza un nuovo oggetto immediatamente dopo la sua creazione, il costruttore deve
avere lo stesso nome della classe che lo contiene e può ricevere zero o più parametri. Se non di de nisce un costruttore
public class Box{ Box myBox= new Box();
double larghezza; Statement per istanziare un oggetto box con tutte
double lunghezza; le variabili impostate a zero di default
double altezza;
double volume(){
return larghezza*altezza*lunghezza;
}
}
Class per de nire un oggetto Bo
parametrizzato, viene de nito un costruttore di default che porta a zero (o null) tutte le variabili present nell’oggetto
istanziato. All’interno di un costruttore parametrizzato e dei metodi di una classe che de nisce un oggetto è molto
usata la keyword this. per riferirsi all’oggetto corrente
Un concetto fondamentale dei linguaggio OOP (Object Oriented Programming) è l’astrazione, ovvero la possibilità di
dividere sistemi complessi in un insieme di sistemi semplici. Questo è possibile grazie a 3 meccanismi principali:
incapsulamento, ereditarietà e polimor smo.
Incapsulamento-> è il meccanismo che gestisce l’accesso ai dati e al codice presente all’interno dei programmi, o più
precisamente all’interno delle classi. Consiste nel fatto che lo stato di un dato oggetto non viene liberamente condiviso
ma incapsulato, cioè racchiuso, in modo sia raggiungibile e modi cabile solo secondo una precisa regola
Esistono dei meccanismi atti a incapsulare metodi e variabili detti modi catori di accesso.
Metodi e variabili pubbliche di una classe rappresentano tutto quello
che un utente esterno alla classe deve sapere
Metodi e variabili private possono essere accedute solo ed
esclusivamente da metodi della stessa classe
Metodi e variabili de niti protected possono essere acceduti anche da
classi appartenenti allo stesso package o ereditate
Ereditarietà-> è il processo mediante il quale un oggetto acquisisce la proprietà di un altro oggetto, più precisamente
signi ca che un programmatore può creare una classe e poi farne un clone aggiungendo nuove proprietà rispetto la
classe originale. In questo modo si avrà una classe “madre” detta superclass con determinate funzioni e una classe
“ glia” detta derivata con le funzioni della superclass e funzioni aggiuntive. In questo modo se si apportano modi che
alla superclass automaticamente vengono apportate anche alla classe derivata da essa
È inoltre possibile sovrascrivere il metodo ereditato dalla superclass (Method Overriding)
class Car extends class Vehicle{
variabili e metodi aggiuntivi;
} 9 di 17
fi fi
fi fi fi fi fi fi fi .
x fi fi fi fi .
. fi . . . fi fi . . . fi . fi . fi
Polimor smo-> nell'ambito dei linguaggi di programmazione si riferisce in generale alla possibilità di un’ espressione
di assumere valori diversi in relazione ai tipi di dato a cui viene applicata. Ci sono vari esempi di polimor smo, tra
questi la tecnica detta method overloading, che consiste nella possibilità di de nire più
metodi con lo stesso nome all’interno di una stessa classe, ma con una parameter-list
differente per numero di parametri o per tipo di parametri. Oltre ai metodi è possibile
eseguire anche l’overloading dei costruttori di una classe, l’importante è che la lista di
parametri sia differente per tipo di parametri o per numero di parametri
Classi Astratte-> È una classe che viene de nita per essere una superclass, ovvero una base di partenza per altre classi.
Viene detta astratta perchè non tutti i metodi al suo interno sono de niti (abstract methods), di conseguenza avendo al
suo interno metodi astratti non può essere istanziata. Tutti i metodi astratti verranno puoi de niti nelle classi derivate
da essa, se non si de niscono tutti la classe derivata dovrà essere de nita anch’essa astratta. Per dichiarare una classe
astratta bisogna ricorrere all’uso della keyword abstract.
abstract class A{ class B extends class A{
abstract void methodName1(); void methodName1(){
void methodName2(){ statementMethod1;
statementMethod2; }
} }//end class
}//end class Classe derivata dalla classe astratta che implementa il
Classe astratta contente un metodo astratto e uno metodo astratto.
concret
Interfacce-> Un'interfaccia è un insieme di metodi astratti senza body che possono essere implementati su più classi.
Ogni classe che implementa l'interfaccia de nisce i metodi in modo diverso dalle altre classi che implementano la
stessa interfaccia
Per implementare un interfaccia in una classe è necessario utilizzare la keyword implements
La differenza fondamentale tra classe astratta ed interfaccia è che la prima può avere metodi non astratti, mentre
un’interfaccia può avere solo ed esclusivamente metodi astratti che verranno implementati dalle classi, inoltre una
classe può estendere solo un’altra classe astratta, mentre una singola classe può implementare più interfacce
public interface Comparator<T>{
public int compare(T a, T b); //metodo senza body perchè è un interfaccia
}
Interfaccia Comparato
Stringhe-> una stringa è una sequenza di caratteri implementata come oggetto di tipo String, essendo oggetti si
possono richiamare vari metodi della classe String utili per lo sviluppo di programmi
String s= new String (arrayName);
• Creare una stringa da un array di caratteri:
strName.length();
• Lunghezza della stringa: strName.charAt(index);
• Estrarre un singolo carattere dalla stringa:
strName1.equals(strName2); strName1.equalsIgnoreCase(strName2);
• Confrontare due stringhe: oppure
strName.sta