Котлин класа и предмети (са примерима)

У овом чланку ћете се упознати са објектно оријентисаним програмирањем у Котлину. Научићете шта је класа, како креирати објекте и користити је у свом програму.

Котлин подржава и функционално и објектно оријентисано програмирање.

Котлин подржава функције као што су функције вишег реда, типови функција и ламбда, што га чини одличним избором за рад у функционалном стилу програмирања. О овим концептима ћете сазнати у каснијим поглављима. Овај чланак ће се фокусирати на објектно оријентисани стил програмирања у Котлину.

Објектно оријентисано програмирање (ООП)

У објектно оријентисаном стилу програмирања сложени проблем можете поделити на мање скупове стварањем објеката.

Ови објекти деле две карактеристике:

  • стање
  • понашање

Узмимо неколико примера:

  1. Лампа је предмет
    • Може бити у укљученом или искљученом стању.
    • Можете turn onи turn offлампу (понашање).
  2. Бицикл је предмет
    • Има тренутни зупчаник, два точка, број брзина итд. Стања.
    • Има кочење, убрзавање, мењање брзина итд.

Научићете о детаљним карактеристикама објектно оријентисаног програмирања као што су: инкапсулација података, наслеђивање и полиморфизам како настављамо даље. Овај чланак ће се фокусирати на основе како би ствари биле једноставне.

Препоручена литература: Шта је објекат?

Котлин Цласс

Пре него што креирате објекте у Котлину, морате да дефинишете класу.

Класа је нацрт објекта.

О класи можемо размишљати као о скици (прототипу) куће. Садржи све детаље о подовима, вратима, прозорима итд. На основу ових описа градимо кућу. Кућа је објект.

Будући да се многе куће могу направити од истог описа, можемо створити многе предмете из класе.

Како дефинисати наставу у Котлину?

За дефинисање класе у Котлину classкористи се кључна реч:

 цласс ЦлассНаме (// својство // функција члана…) 

Ево примера:

 цласс Ламп (// својство (члан података) привате вар исОн: Боолеан = фалсе // функција члана фун турнОн () (исОн = труе) // функција члана фун турнОфф () (исОн = фалсе))

Овде смо дефинисали класу која се зове Ламп.

Класа има једно својство исОн (дефинисано на исти начин као променљива) и две функције члана turnOn()и turnOff().

Препоручено читање: Котлин функције

У Котлину, или својство мора бити иницијализовано или мора бити декларисано abstract( посетите: Котлин Абстрацт Цласс да бисте сазнали више). У горњем примеру, својство исОн се иницијализује у false.

Класе, објекти, својства, функција члана итд. Могу имати модификаторе видљивости. На пример, својство исОн је приватно. То значи да се својство исОн може мењати само унутар класе Ламп.

Остали модификатори видљивости су:

  • private - видљиво (може му се приступити) само унутар класе.
  • public - видљиво свуда.
  • protected - видљиво за класу и њену подкласу.
  • internal - може им приступити било који клијент унутар модула.

О protectedи internalмодификаторима ћете сазнати касније у чланку о модификаторима видљивости Котлин.

Ако не наведете модификатор видљивости, то ће бити publicподразумевано.

У горњем програму, turnOn()а turnOff()функције члана су, publicдок је својство исОн приватно.

Котлин Објецтс

Када се дефинише класа, дефинише се само спецификација за објекат; није додељена меморија или складиште.

Да бисте приступили члановима дефинисаним у класи, потребно је да креирате објекте. Креирајмо објекте класе Ламп.

 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 )

Овај програм креира два објекта л1 и л2 класе Ламп. Својство исОн за обе лампе л1 и л2 биће false.

Како приступити члановима?

Својствима и функцијама члана класе можете приступити коришћењем .нотације. На пример,

 л1.турнОн ()

Ова изјава позива функцију турнОн () за објекат л1.

Узмимо још један пример:

 л2.исОн = тачно

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.
  • Затим displayLightStatus()се за објекте л1 и л2 позива функција која исписује одговарајућу поруку у зависности од тога да ли је својство исОн тачно или false.

Приметите да је својство исОн иницијализовано falseунутар класе. Када се креира објекат класе, својство исОн за објекат се falseаутоматски иницијализује . Дакле, није неопходно да л2 објекат позива turnOff()да постави својство исОн на false.

На пример:

 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() ) 

Када покренете програм, излаз ће бити:

 лампица је искључена.

Овај чланак је само увод у објектно оријентисано програмирање у Котлину. Проверите ова поглавља у низу да бисте сазнали више:

  • Котлин конструктори и иницијатори
  • Котлин ову кључну реч
  • Котлин угнежђена класа

Занимљиви Чланци...