In un linguaggio di programmazione a oggetti (come Java, Python, C++, ecc.), una classe è come uno “stampo” o un “modello” che definisce come sarà un oggetto.
Puoi pensare a una classe come a una ricetta: la ricetta ti dice quali ingredienti usare e come combinarli per creare un piatto.
Allo stesso modo, una classe ti dice quali dati (attributi) e azioni (metodi) avrà un oggetto.
Esempio pratico
Immagina di voler creare un programma per gestire delle automobili. Potresti creare una classe chiamata Automobile
che definisce cosa significa essere un’automobile.
La classe Automobile
potrebbe avere:
- Attributi (dati):
marca
: la marca dell’auto (es. “Fiat”).modello
: il modello dell’auto (es. “500”).colore
: il colore dell’auto (es. “rosso”).velocità
: la velocità attuale dell’auto (es. 50 km/h).
- Metodi (azioni):
accelera()
: aumenta la velocità dell’auto.frena()
: diminuisce la velocità dell’auto.info()
: stampa le informazioni dell’auto (marca, modello, colore).
Come si usa una classe?
Una volta definita la classe, puoi creare oggetti (istanze) basati su quella classe. Ogni oggetto è una “versione concreta” della classe, con i suoi valori specifici.
Quindi la classe rappresenta il modello o il progetto che definisce l’oggetto.
Istanziare una classe significa creare l’oggetto con le caratteristiche definite all’interno della sua classe .
Quando creo l’oggetto istanziando la classe bisogna assegnarli un nome e assegnare un valore ai suoi parametri. Nel caso dell’auto istanziare la classe significa creare un auto a cui darò un nome, poi una marca, u modello e un colore.
Quindi posso istanziare un’oggetto Fiat Panda che è un tipo della classe Automabile.
Nota:
Dal punto di vista pratico, in unico file koltin posso creare sia la funzione Main, che le classi che mi occorrono, in java non è possibile bisogna creare una classe per ogni cosa quindi se ho capito bene con dei file separati, uno per ogni classe e uno per il main.
Nota: Diversamente da java kotlin gestisce da solo i getter e i setter
Nota:
le parentesi graffe si scrivono con l combinazione di tasti:
ALT + Shift + [
ALT + Shift + ]
Esempio di definizione di una semplice classe ‘Person’ con 3 attributi e i relativi tipi
class Person (var name: String, var age: Int, var height: Int) {
}
Di seguito vediamo come si istanzia una classe e come richiamare il metodo Printdata definito
package Class class Person (var name: String, var Age: Int, var Height: Int) { fun Printdata() { println( "eta: $Age, Nome: $name") } } fun main() { //esempio di come si instanzia una classe var myfriend = Person ("Marco", 22, 173) // richiamo a fuzione definita nella classe: myfriend.Printdata() // istanziamo nuovamente la classe con un nome diverso var AmicaAnna = Person ("anna", 33, 180) AmicaAnna.Printdata() }
Definizione: COSTRUTTORE è la parte compresa tra le parentesi nel nostro esempio è il punto in cui inseriamo tutti i parametri necessari per ‘costruire’ il nostro oggetto.
Il costruttore è la prima cosa che viene richiamata quando la classe viene istanziata
(var name: String, var Age: Int, var Height: Int)
Vediamo come possiamo scrivere del codice all’interno del costruttore si può fare invocando il comando
init{}
Init serve a eseguire righe di codice direttamente nel costruttore
class Person2 (var name: String, var Age: Int, var Height: Int) {
init {
Printdata()
// in questo caso andremo a stampare gli attributi senza dover richiamare il metodo myfried.Printdata()
// ma semplicemente quando andremo ad istanziare la classe
}
fun Printdata() {
println( "eta: $Age, Nome: $name")
}
}
fun main() {
var IlmioAmico = Person2 ("Marco", 22, 173)
// con questa singola riga di codice istanzio la classe ed eseguo il metodo presente nel blocco init
}
Init è utile quado bisogna inizializzare i parametri direttamente quando istanzio la classe.
Prossimo tutorial Setter e Getter