V tem članku se boste seznanili z objektno usmerjenim programiranjem v Kotlinu. Izvedeli boste, kaj je razred, kako ustvariti predmete in ga uporabiti v svojem programu.
Kotlin podpira tako funkcionalno kot objektno usmerjeno programiranje.
Kotlin podpira funkcije, kot so funkcije višjega reda, vrste funkcij in lambda, zaradi česar je odlična izbira za delo v funkcionalnem slogu programiranja. O teh konceptih boste izvedeli v poznejših poglavjih. Ta članek se bo osredotočil na objektno usmerjen slog programiranja v Kotlinu.
Objektno usmerjeno programiranje (OOP)
V objektno usmerjenem slogu programiranja lahko zapleten problem razdelite na manjše množice z ustvarjanjem predmetov.
Ti predmeti imajo dve značilnosti:
- država
- vedenje
Vzemimo nekaj primerov:
- Svetilka je predmet
- Lahko je v vklopljenem ali izklopljenem stanju.
- Lahko
turn on
inturn off
svetilka (vedenje).
- Kolo je predmet
- Ima trenutno prestavo, dve kolesi, število prestav itd.
- Ima zavorno, pospeševalno, menjalno prestavo itd.
Spoznali boste podrobne značilnosti objektno usmerjenega programiranja, kot so: inkapsulacija podatkov, dedovanje in polimorfizem. Ta članek se bo osredotočil na osnove, s katerimi bodo stvari preprostejše.
Priporočeno branje: Kaj je predmet?
Kotlinov razred
Preden v Kotlinu ustvarite predmete, morate definirati razred.
Razred je načrt predmeta.
Razred si lahko predstavljamo kot skico (prototip) hiše. Vsebuje vse podrobnosti o tleh, vratih, oknih itd. Na podlagi teh opisov gradimo hišo. Hiša je objekt.
Ker je iz istega opisa mogoče izdelati veliko hiš, lahko iz razreda ustvarimo veliko predmetov.
Kako definirati razred v Kotlinu?
Za določitev razreda v Kotlinu class
se uporablja ključna beseda:
class ClassName (// lastnost // funkcija člana…)
Tu je primer:
class Lamp (// lastnost (podatkovni član) private var isOn: Boolean = false // funkcija člana fun turnOn () (isOn = true) // funkcija člana fun turnOff () (isOn = false))
Tu smo definirali razred z imenom Lamp.
Razred ima eno lastnost isOn (definirano na enak način kot spremenljivka) in dve funkciji člana turnOn()
in turnOff()
.
Priporočeno branje: Kotlin funkcije
V Kotlinu je treba lastnost inicializirati ali pa jo prijaviti abstract
( če želite izvedeti več, obiščite: Kotlin Abstract Class). V zgornjem primeru je lastnost isOn inicializirana v false
.
Razredi, predmeti, lastnosti, funkcija člana itd. Imajo lahko modifikatorje vidnosti. Lastnost isOn je na primer zasebna. To pomeni, da je lastnost isOn mogoče spremeniti samo znotraj razreda Lamp.
Drugi modifikatorji vidnosti so:
private
- vidno (dostopno) samo znotraj predavanja.public
- vidna povsod.protected
- viden razredu in njegovemu podrazredu.internal
- do njih lahko dostopa vsak odjemalec znotraj modula.
O protected
in internal
modifikatorjih boste izvedeli kasneje v članku Kotlin modifikatorji vidnosti.
Če ne določite modifikatorja vidnosti, bo public
privzeto.
V zgornjem programu turnOn()
in turnOff()
funkcije člana so, public
medtem ko je lastnost isOn zasebna.
Predmeti Kotlin
Ko je definiran razred, je definirana samo specifikacija predmeta; ni dodeljenega pomnilnika ali pomnilnika.
Če želite dostopati do članov, opredeljenih v razredu, morate ustvariti predmete. Ustvarimo predmete razreda 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 )
Ta program ustvari dva predmeta l1 in l2 razreda Lamp. Lastnost isOn za obe sijalki l1 in l2 bo false
.
Kako dostopati do članov?
Do lastnosti in funkcij člana razreda lahko dostopate z uporabo .
zapisa. Na primer
l1.turnOn ()
Ta stavek za objekt l1 pokliče funkcijo turnOn ().
Vzemimo še en primer:
l2.isOn = res
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
. - Nato
displayLightStatus()
se za predmete l1 in l2 pokliče funkcija, ki natisne ustrezno sporočilo, odvisno od tega, ali je lastnost isOn resnična alifalse
.
Upoštevajte, da je lastnost isOn inicializirana false
znotraj razreda. Ko je predmet razreda ustvarjen, se lastnost isOn za objekt false
samodejno inicializira . Torej ni nujno, da objekt l2 kliče, turnOff()
da nastavi lastnost isOn na false
.
Na primer:
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() )
Ko zaženete program, bo rezultat:
lučka ugasne.
Ta članek je le uvod v objektno usmerjeno programiranje v Kotlinu. Če želite izvedeti več, zaporedoma preverite ta poglavja:
- Kotlinovi konstruktorji in inicializatorji
- Kotlin to ključno besedo
- Kotlin gnezdeni razred