Le classi in Kotlin
Per creare una classe in Kotlin uso la parola class seguita dal nome e da due parentesi graffe.
class nome {
...
}
All'interno della classe posso definire
- Gli attributi o proprietà della classe tramite le costanti e le variabili.
- I metodi della classe tramite le funzioni.
In opzione posso anche definire nella classe dei parametri iniziali forniti al momento dell'istanza
class nome(parametri) {
...
}
Dove parametri è la lista delle variabili passate dall'esterno.
Un esempio pratico
Esempio 1 (proprietà)
Creo la classe Dado.
class Dado {
}
La classe va scritta al di fuori della funzione main().
E' buona norma dare alla classe un nome con la prima lettera maiuscola.
All'interno della classe definisco una variabile "facce".
class Dado {
var facce=6
}
Ora lancio un'istanza dalla funzione main sul classe Dado
Creo un oggetto "prova" tramite la classe Dado.
- fun main() {
- val prova = Dado()
- println(prova.facce)
- }
- class Dado {
- var facce=6
- }
L'oggetto "prova" eredita tutte le proprietà e i metodi della classe "Dado".
Pertanto, quando stampo l'attributo facce nell'oggetto prova, il programma restituisce sei.
6
Esempio 2 (metodo)
In questo esempio creo un metodo "lancio" nella classe Dado che mi permette di generare un numero casuale da 1 a 6.
- fun main() {
- val prova = Dado()
- prova.Lancio()
- }
- class Dado {
- var facce=6
- fun Lancio() {
- val numero = (1..6).random()
- println(numero)
- }
- }
Quando richiamo il metodo prova.Lancio() nella riga 3 nella funzione principale, Kotlin genera un numero casuale da 1 a 6 e lo stampa a video.
Ad esempio 4 o altro.
4
Esempio 3 (valore di ritorno)
Questo codice ha la stessa funzionalità del precedente.
Tuttavia, in questo caso il metodo genera un valore di ritorno.
- fun main() {
- val prova = Dado()
- val x=prova.Lancio()
- println(x)
- }
- class Dado {
- var facce=6
- fun Lancio(): Int {
- val numero = (1..6).random()
- return numero
- }
- }
Pertanto, nel metodo Lancio() definisco il formato del dato in output (Int) e utilizzo l'istruzione return.
Il valore di ritorno è assegnato alla variabile x del programma principale e poi viene stampato.
Esempio 4 (modifica attributo)
In questo codice modifico un attributo dell'oggetto istanziato con la classe Dado.
- fun main() {
- val prova = Dado()
- prova.facce=100
- val x=prova.Lancio()
- println(x)
- }
- class Dado {
- var facce=6
- fun Lancio(): Int {
- val numero = (1..facce).random()
- return numero
- }
- }
L'oggetto "prova" viene creato inizialmente con 6 facce tramite l'istanza alla riga 2.
Tuttavia, nella riga 3 modifico a100 l'attributo "facce" dell'oggetto prova.
Pertanto, quando invoco il metodo Lancio() il programma estrapola un numero da 1 a 100.
Ad esempio ventitre
23
Esempio 5 (passaggio parametri)
Posso ottenere lo stesso risultato precedente fornendo alla classe dei parametri al momento dell'istanza.
- fun main() {
- val prova = Dado(100)
- val x=prova.Lancio()
- println(x)
- }
- class Dado(var facce: Int) {
- fun Lancio(): Int {
- val numero = (1..facce).random()
- return numero
- }
- }
Pertanto, quando istanzio l'oggetto passo alla classe il parametro 100 che viene registrato nella variabile facce.
Quindi, il metodo Lancio invocato sull'oggetto estrae un numero da 1 a 100.
Ad esempio cinquantasette
57
Esempio 6 (valore di default del parametro)
Con una piccola modifica aggiungo un valore di default al parametro della classe.
- fun main() {
- val prova = Dado(100)
- val x=prova.Lancio()
- println(x)
- }
- class Dado(var facce: Int=6) {
- fun Lancio(): Int {
- val numero = (1..facce).random()
- return numero
- }
- }
In questo modo, se istanzio un oggetto con la classe senza passare alcun parametro, il programma utilizza il valore di default facce=6.
E così via.