Iniziamo con spiegare cos’è l’Incapsulamento e specificando che non è disponibile per Kotlin, ma ci aiuterà a capire l’uso di Setter e Getter
L’incapsulamento è uno dei principi fondamentali della programmazione orientata agli oggetti (OOP). Si basa sull’idea di nascondere i dettagli interni di un oggetto e fornire un’interfaccia controllata per interagire con esso.
🔹 Concetti chiave dell’incapsulamento
- Nascondere i dettagli interni
- Gli attributi di una classe vengono dichiarati privati (private) per impedire l’accesso diretto dall’esterno.
- In questo modo, si evita che altre parti del codice possano modificarli in modo inappropriato.
- Fornire metodi di accesso controllati
- Si utilizzano getter e setter per leggere e modificare i valori in modo sicuro.
- In Kotlin, si possono usare proprietà con
get
eset
personalizzati.
- Migliorare la manutenibilità e la sicurezza
- Il codice diventa più modulare e facile da gestire.
- Se si vuole modificare il comportamento di un attributo, si può farlo nei metodi setter/getter senza influenzare il resto del programma.
Approfondiamo i metodi Set e Get
- Sono importanti per la manutenzione del codice, sicurezza e stabilità
- Servono per accedere alle variabili di una classe dichiarate Private da altre classi
- Kotlin implementa in maniera nativa l’incapsulamento, allora a cosa ci servono questi due metodi?(proprio ad aggirare l’incapsulamento senza non potresti accedere a queste variabili)
- inoltre Set e Get sono utili anche perché ci consentono di scrivere righe di codice quando li invochiamo
- Se antepongo il costrutto Private ad una variabile nel costruttore allora quella variabile sarà visibile solo all’interno di quella classe. Se c’è la necessità di accedere a queste variabili da altre classi allora in quel caso bisogna usare i metodi Get e Set, sono dei metodi pubblici per per accedere o modificare la variabile
private
.
Si può procedere in due modi differenti, il primo è quello dei Set e Get, il secondo invece è quello di creare una variabile pubblica che espone la variabile privata.
il primo:

Per il secondo metodo, puoi utilizzare una proprietà con visibilità internal
, protected
, o public
che espone la variabile private
in modo controllato.(in pratica utlizzi un’altra variabile pubblica alla quale associ quella privata con set e get)

Di seguito l’esempio del corso che restituisce 40 e che cmq è ancora diverso dai primi due casi:
class Person2(var name: String, age_param: Int, var height: Int) {
class Person2(var name: String, age_param: Int, var height: Int) {
var age = age_param
set(value) {
if (value > 0)
field = value
else
println("Something went wrong")
}
get() {
return field +20
}
init {
if (age_param <= 0)
println("Something went wrong")
}
fun printData() {
println("name : $name, age : $age, height : $height")
}
}
fun main() {
val myFriend = Person2("Marco", 20, 180)
myFriend.age = 20
println(myFriend.age)
//myFriend.printData()
val myGirlfriend = Person2("Anna", 40, 160)
//myGirlfriend.printData()
}
Torna alla Lezione 1 Kotlin: Cosa sono le Classi