U ovom ćete članku upoznati se s objektno orijentiranim programiranjem u Kotlinu. Naučit ćete što je razred, kako stvoriti predmete i koristiti ga u svom programu.
Kotlin podržava i funkcionalno i objektno orijentirano programiranje.
Kotlin podržava značajke kao što su funkcije višeg reda, vrste funkcija i lambda, što ga čini izvrsnim izborom za rad u funkcionalnom stilu programiranja. O tim ćete pojmovima naučiti u kasnijim poglavljima. Ovaj će se članak usredotočiti na objektno orijentirani stil programiranja u Kotlinu.
Objektno orijentirano programiranje (OOP)
U objektno orijentiranom stilu programiranja složeni problem možete podijeliti na manje skupove stvaranjem objekata.
Ti objekti dijele dvije karakteristike:
- država
- ponašanje
Uzmimo nekoliko primjera:
- Svjetiljka je objekt
- Može biti u uključenom ili isključenom stanju.
- Možete
turn on
iturn off
lampica (ponašanje).
- Bicikl je objekt
- Ima trenutni zupčanik, dva kotača, broj stupnjeva prijenosa itd.
- Ima ponašanje kočenja, ubrzavanja, mijenjanja brzina itd.
Naučit ćete o detaljnim značajkama objektno orijentiranog programiranja poput: inkapsulacije podataka, nasljeđivanja i polimorfizma kako nastavljamo dalje. Ovaj će se članak usredotočiti na osnove kako bi stvari bile jednostavne.
Preporučena literatura: Što je objekt?
Razred Kotlin
Prije nego što stvorite objekte u Kotlinu, morate definirati klasu.
Klasa je nacrt predmeta.
O klasi možemo razmišljati kao o skici (prototipu) kuće. Sadrži sve detalje o podovima, vratima, prozorima itd. Na temelju ovih opisa gradimo kuću. Kuća je objekt.
Budući da se mnoge kuće mogu napraviti od istog opisa, možemo stvoriti mnoge predmete iz klase.
Kako definirati nastavu u Kotlinu?
Za definiranje klase u Kotlinu class
koristi se ključna riječ:
class ClassName (// svojstvo // funkcija člana…)
Evo primjera:
klasa Lamp (// svojstvo (član podataka) private var isOn: Boolean = false // funkcija člana fun turnOn () (isOn = true) // funkcija člana fun turnOff () (isOn = false))
Ovdje smo definirali razred pod nazivom Lamp.
Klasa ima jedno svojstvo isOn (definirano na isti način kao varijabla) i dvije funkcije člana turnOn()
i turnOff()
.
Preporučena literatura: Kotlin funkcije
U Kotlinu se ili svojstvo mora inicijalizirati ili mora biti deklarirano abstract
( posjetite: Sažetak klase Kotlin da biste saznali više). U gornjem primjeru svojstvo isOn inicijalizira se u false
.
Klase, objekti, svojstva, funkcija člana itd. Mogu imati modifikatore vidljivosti. Na primjer, svojstvo isOn je privatno. To znači da se svojstvo isOn može mijenjati samo unutar klase Lamp.
Ostali modifikatori vidljivosti su:
private
- vidljivo (može mu se pristupiti) samo iz razreda.public
- vidljivo posvuda.protected
- vidljivo za razred i njegovu podrazred.internal
- može im pristupiti bilo koji klijent unutar modula.
O njima protected
i internal
njihovim modifikatorima saznat ćete kasnije u članku o modifikatorima vidljivosti Kotlina.
Ako ne navedete modifikator vidljivosti, bit će to public
zadano.
U gore navedenom programu, turnOn()
a turnOff()
funkcije člana su, public
dok je svojstvo isOn privatno.
Predmeti Kotlin
Kada se definira klasa, definira se samo specifikacija za objekt; nije dodijeljena memorija ili pohrana.
Da biste pristupili članovima definiranim unutar klase, morate stvoriti objekte. Stvorimo objekte klase 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 )
Ovaj program stvara dva objekta l1 i l2 klase Lamp. Svojstvo isOn za obje svjetiljke l1 i l2 bit će false
.
Kako pristupiti članovima?
Svojstvima i funkcijama člana klase možete pristupiti pomoću .
notacije. Na primjer,
l1.turnOn ()
Ova izjava poziva funkciju turnOn () za objekt l1.
Uzmimo još jedan primjer:
l2.isOn = istina
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()
anddisplayLightStatus()
. - 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 totrue
. - And,
turnOff()
function is called using l2 object:l1.turnOff()
. This method sets isOff instance variable of l2 object tofalse
. - Zatim
displayLightStatus()
se za objekte l1 i l2 poziva funkcija koja ispisuje odgovarajuću poruku ovisno o tome je li svojstvo isOn točno ilifalse
.
Primijetite da je svojstvo isOn inicijalizirano false
unutar klase. Kada se kreira objekt klase, svojstvo isOn za taj objekt false
automatski se inicijalizira . Dakle, nije potrebno da l2 objekt poziva turnOff()
da postavi svojstvo isOn na false
.
Na primjer:
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() )
Kada pokrenete program, izlaz će biti:
lampica je isključena.
Ovaj je članak samo uvod u objektno orijentirano programiranje u Kotlinu. Provjerite ova poglavlja u nizu da biste saznali više:
- Konstruktori i inicijatori Kotlin
- Kotlin ovu ključnu riječ
- Kotlin ugniježđeni razred