Somo hili linafafanua dhana ya Encapsulation katika OOP, matumizi yake ndani ya Kotlin, pamoja na modifiers mbalimbali (private, protected, internal, public). Pia tutajifunza kwa mifano jinsi encapsulation inavyosaidia kulinda data na kudhibiti ufikivu.
Sawa, tuendelee! Hapa kuna Somo la 29: Encapsulation katika Kotlin, likiandikwa kwa mtindo wa kitaaluma na wenye mifano mingi.
Moja ya nguzo kuu za Object-Oriented Programming (OOP) ni Encapsulation.
Encapsulation ni kufunga data na tabia zake ndani ya class, kisha kudhibiti ufikivu wake kutoka nje ya class.
Mfano halisi: Fikiria benki. Mteja ana account yake, lakini hawezi kuingilia jinsi benki inavyohifadhi au kushughulikia data za account. Ana interface ndogo tu ya kuingiza na kutoa pesa. Huu ndio mfano bora wa encapsulation.
Ni kufunga data (properties) na mifumo ya kudhibiti (methods) pamoja.
Inazuia ufikivu wa moja kwa moja kwa data muhimu, na badala yake hutoa njia maalum (getter na setter).
Inalinda data dhidi ya matumizi mabaya.
Kotlin ina modifiers ambazo zinasaidia kufanikisha encapsulation.
| Modifier | Maelezo | 
|---|---|
| public | Default. Inapatikana kila mahali. | 
| private | Inapatikana ndani ya class au file pekee. | 
| protected | Inapatikana ndani ya class na subclasses zake. | 
| internal | Inapatikana ndani ya module moja tu. | 
private property na getters/setters:class AkauntiBenk(private var salio: Double) {
    fun wekaPesa(kiasi: Double) {
        if (kiasi > 0) {
            salio += kiasi
            println("Umeweka $kiasi. Salio jipya: $salio")
        } else {
            println("Kiasi lazima kiwe chanya!")
        }
    }
    fun toaPesa(kiasi: Double) {
        if (kiasi > 0 && kiasi <= salio) {
            salio -= kiasi
            println("Umetoa $kiasi. Salio jipya: $salio")
        } else {
            println("Muamala umekataliwa. Salio halitoshi!")
        }
    }
    fun angaliaSalio() = println("Salio lako ni: $salio")
}
fun main() {
    val account = AkauntiBenk(1000.0)
    account.angaliaSalio()
    account.wekaPesa(500.0)
    account.toaPesa(300.0)
    // account.salio = -200.0 β hairuhusiwi moja kwa moja
}
β‘οΈ Hapa salio ni private ili kulinda data. Mtumiaji hawezi kulibadilisha moja kwa moja, lazima apitie methods maalum.
protected na internalopen class Mfanyakazi(protected val jina: String) {
    fun onyeshaJina() = println("Mimi ni $jina")
}
class Meneja(jina: String) : Mfanyakazi(jina) {
    fun pangaKazi() = println("Meneja $jina anapanga kazi")
}
internal class Idara(val id: Int)
β‘οΈ protected inaruhusu subclass kutumia jina.
β‘οΈ internal inamaanisha Idara inapatikana ndani ya module moja tu.
Kotlin inaruhusu kutumia custom getters/setters:
class Mwanafunzi {
    var jina: String = "Haijulikani"
        get() = field.uppercase()
        set(value) {
            if (value.isNotBlank()) field = value
        }
}
fun main() {
    val s = Mwanafunzi()
    s.jina = "Aisha"
    println(s.jina)  // AISHA
}
β‘οΈ Getter hubadilisha jina kuwa uppercase.
β‘οΈ Setter inakataza jina tupu.
π Usalama wa data (hakuna mtu anayeweza kuharibu moja kwa moja).
π Urahisi wa kubadilisha utekelezaji bila kuathiri code ya nje.
π§Ή Code safi na rahisi kuelewa.
π¦ Ufungaji wa data na tabia zake pamoja huongeza modularity.
Encapsulation ni nguzo muhimu ya OOP inayowezesha usalama wa data, modularity na urahisi wa kudumisha code. Kwa kutumia modifiers, pamoja na getters/setters, Kotlin inatoa njia rahisi ya kufanikisha encapsulation bila mbwembwe nyingi.asses?
Jiunge nasi WhatsApp kupata update zetuUmeionaje Makala hii.. ?
Katika somo hili tutakwenda kujifunza jinsi ya kushughulika na string kwenye Kotlin.
Soma Zaidi...Somo hili linaeleza dhana ya polymorphism katika OOP ya Kotlinβuwezo wa kutumia method au object moja kufanya kazi tofauti kulingana na muktadha wake. Tutajifunza aina kuu za polymorphism, jinsi ya kuandika code inayotumia override, open, super, pamoja na mifano hai.
Soma Zaidi...Katika somo hili utakwenda kujifunza maana na features za object oriented Programming
Soma Zaidi...Katika somo hili utakwenda kujifunz akuhusu dhana ya module. Hata ivyo tutakwenda kuisoma zaidi kwenye android App
Soma Zaidi...Katika soomo hili utakwenda kujifunza kuhusu class, maana yake, na jinsi ya kuitengeneza
Soma Zaidi...Katika somo hili unakwenda kujifunza kuhusu sheria na kanuni za undishi wa code za Kotlin yaani syntax za kotlin.
Soma Zaidi...Katika somo hili utakwenda kujifunza tofauti wa library na package
Soma Zaidi...Katika somo hili tutakwenda kujifunza kuhusu set data type pamoja na method ambazo hufanya kazi kwenye set.
Soma Zaidi...Katika somo hili utakwenda kujifunza kuhusu namna ambavyo program inaweza kufanya maamuzi kulingana na mashart fulani.ama namna ambavyo program inaweza ku run code zaii ya mara moja kulingana na mashart. Hapa tutazingumzia flow of control statement
Soma Zaidi...Katika somo hili tutakwenda kujifunza kuhusu method ambazo hutumika kwenye map data type
Soma Zaidi...