Classe e oggetti Kotlin (con esempi)

In questo articolo, verrai introdotto alla programmazione orientata agli oggetti in Kotlin. Imparerai cos'è una classe, come creare oggetti e usarli nel tuo programma.

Kotlin supporta sia la programmazione funzionale che quella orientata agli oggetti.

Kotlin supporta funzionalità come funzioni di ordine superiore, tipi di funzione e lambda che lo rendono un'ottima scelta per lavorare in uno stile di programmazione funzionale. Imparerai a conoscere questi concetti nei capitoli successivi. Questo articolo si concentrerà sullo stile di programmazione orientato agli oggetti in Kotlin.

Programmazione orientata agli oggetti (OOP)

Nello stile di programmazione orientato agli oggetti, è possibile dividere un problema complesso in insiemi più piccoli creando oggetti.

Questi oggetti condividono due caratteristiche:

  • stato
  • comportamento

Facciamo alcuni esempi:

  1. La lampada è un oggetto
    • Può essere acceso o spento.
    • Puoi turn one turn offlampada (comportamento).
  2. La bicicletta è un oggetto
    • Ha marcia attuale, due ruote, numero di marce ecc.
    • Ha un comportamento in frenata, accelerazione, cambio di marcia ecc.

Imparerai le caratteristiche dettagliate di una programmazione orientata agli oggetti come: incapsulamento dei dati, ereditarietà e polimorfismo mentre andiamo avanti. Questo articolo si concentrerà sulle basi per mantenere le cose semplici.

Letture consigliate: cos'è un oggetto?

Classe Kotlin

Prima di creare oggetti in Kotlin, è necessario definire una classe.

Una classe è un modello per l'oggetto.

Possiamo pensare alla classe come a uno schizzo (prototipo) di una casa. Contiene tutti i dettagli sui pavimenti, porte, finestre ecc. Sulla base di queste descrizioni costruiamo la casa. La casa è l'oggetto.

Poiché molte case possono essere create dalla stessa descrizione, possiamo creare molti oggetti da una classe.

Come definire una classe in Kotlin?

Per definire una classe in Kotlin, classviene utilizzata la parola chiave:

 class ClassName (// proprietà // funzione membro…) 

Ecco un esempio:

 class Lamp (// proprietà (membro dati) private var isOn: Boolean = false // funzione membro fun turnOn () (isOn = true) // funzione membro fun turnOff () (isOn = false))

Qui abbiamo definito una classe denominata Lamp.

La classe ha una proprietà isOn (definita allo stesso modo della variabile) e due funzioni membro turnOn()e turnOff().

Letture consigliate: funzioni di Kotlin

In Kotlin, la proprietà deve essere inizializzata o deve essere dichiarata abstract( visitare: Kotlin Abstract Class per saperne di più). Nell'esempio precedente, la proprietà isOn è inizializzata a false.

Classi, oggetti, proprietà, funzioni membro ecc. Possono avere modificatori di visibilità. Ad esempio, la proprietà isOn è privata. Ciò significa che la proprietà isOn può essere modificata solo dall'interno della classe Lamp.

Altri modificatori di visibilità sono:

  • private - visibile (accessibile) solo dall'interno della classe.
  • public - visibile ovunque.
  • protected - visibile alla classe e alla sua sottoclasse.
  • internal - qualsiasi client all'interno del modulo può accedervi.

Imparerai a conoscere protectede internalmodificatori più avanti in Kotlin modificatori di visibilità articolo.

Se non specifichi il modificatore di visibilità, sarà publicper impostazione predefinita.

Nel programma precedente turnOn()e le turnOff()funzioni membro sono publicmentre la proprietà isOn è privata.

Oggetti Kotlin

Quando viene definita la classe, viene definita solo la specifica per l'oggetto; non viene allocata memoria o spazio di archiviazione.

Per accedere ai membri definiti all'interno della classe, è necessario creare oggetti. Creiamo oggetti della classe Lamp.

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class )

Questo programma crea due oggetti l1 e l2 della classe Lamp. La proprietà isOn per entrambe le lampade l1 e l2 sarà false.

Come accedere ai membri?

È possibile accedere alle proprietà e alle funzioni membro di una classe utilizzando la .notazione. Per esempio,

 l1.turnOn ()

Questa istruzione chiama la funzione turnOn () per l'oggetto l1.

Facciamo un altro esempio:

 l2.isOn = true

Here, we tried to assign true to isOn property of l2 object. Note that, isOn property is private, and if you try to access isOn from outside the class, an exception is thrown.

Example: Kotlin Class and Object

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus(lamp: String) ( if (isOn == true) println("$lamp lamp is on.") else println("$lamp lamp is off.") ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class l1.turnOn() l2.turnOff() l1.displayLightStatus("l1") l2.displayLightStatus("l2") )

When you run the program, the output will be:

 l1 Lamp is on. l2 Lamp is off.

In the above program,

  • Lamp class is created.
  • The class has a property isOn and three member functions turnOn(), turnOff() and displayLightStatus().
  • Two objects l1 and l2 of Lamp class are created in the main() function.
  • Here, turnOn() function is called using l1 object: l1.turnOn(). This method sets isOn instance variable of l1 object to true.
  • And, turnOff() function is called using l2 object: l1.turnOff(). This method sets isOff instance variable of l2 object to false.
  • Quindi, displayLightStatus()viene chiamata la funzione per gli oggetti l1 e l2 che stampa il messaggio appropriato a seconda che la proprietà isOn sia vera o false.

Si noti che la proprietà isOn viene inizializzata falseall'interno della classe. Quando viene creato un oggetto della classe, la proprietà isOn per l'oggetto viene inizializzata falseautomaticamente. Quindi, non è necessario che l'oggetto l2 chiami turnOff()per impostare la proprietà isOn su false.

Per esempio:

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus() ( if (isOn == true) println("lamp is on.") else println("lamp is off.") ) ) fun main(args: Array) ( val lamp = Lamp() lamp.displayLightStatus() ) 

Quando esegui il programma, l'output sarà:

 la lampada è spenta.

Questo articolo è solo un'introduzione alla programmazione orientata agli oggetti in Kotlin. Controlla questi capitoli in sequenza per saperne di più:

  • Costruttori e inizializzatori di Kotlin
  • Kotlin questa parola chiave
  • Classe annidata di Kotlin

Articoli interessanti...