Klasa i predmeti Kotlin (s primjerima)

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:

  1. Svjetiljka je objekt
    • Može biti u uključenom ili isključenom stanju.
    • Možete turn oni turn offlampica (ponašanje).
  2. 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 classkoristi 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 protectedi internalnjihovim modifikatorima saznat ćete kasnije u članku o modifikatorima vidljivosti Kotlina.

Ako ne navedete modifikator vidljivosti, bit će to publiczadano.

U gore navedenom programu, turnOn()a turnOff()funkcije člana su, publicdok 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() 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.
  • Zatim displayLightStatus()se za objekte l1 i l2 poziva funkcija koja ispisuje odgovarajuću poruku ovisno o tome je li svojstvo isOn točno ili false.

Primijetite da je svojstvo isOn inicijalizirano falseunutar klase. Kada se kreira objekt klase, svojstvo isOn za taj objekt falseautomatski 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

Zanimljivi članci...