У овом чланку ћете се упознати са објектно оријентисаним програмирањем у Котлину. Научићете шта је класа, како креирати објекте и користити је у свом програму.
Котлин подржава и функционално и објектно оријентисано програмирање.
Котлин подржава функције као што су функције вишег реда, типови функција и ламбда, што га чини одличним избором за рад у функционалном стилу програмирања. О овим концептима ћете сазнати у каснијим поглављима. Овај чланак ће се фокусирати на објектно оријентисани стил програмирања у Котлину.
Објектно оријентисано програмирање (ООП)
У објектно оријентисаном стилу програмирања сложени проблем можете поделити на мање скупове стварањем објеката.
Ови објекти деле две карактеристике:
- стање
- понашање
Узмимо неколико примера:
- Лампа је предмет
- Може бити у укљученом или искљученом стању.
- Можете
turn on
иturn off
лампу (понашање).
- Бицикл је предмет
- Има тренутни зупчаник, два точка, број брзина итд. Стања.
- Има кочење, убрзавање, мењање брзина итд.
Научићете о детаљним карактеристикама објектно оријентисаног програмирања као што су: инкапсулација података, наслеђивање и полиморфизам како настављамо даље. Овај чланак ће се фокусирати на основе како би ствари биле једноставне.
Препоручена литература: Шта је објекат?
Котлин Цласс
Пре него што креирате објекте у Котлину, морате да дефинишете класу.
Класа је нацрт објекта.
О класи можемо размишљати као о скици (прототипу) куће. Садржи све детаље о подовима, вратима, прозорима итд. На основу ових описа градимо кућу. Кућа је објект.
Будући да се многе куће могу направити од истог описа, можемо створити многе предмете из класе.
Како дефинисати наставу у Котлину?
За дефинисање класе у Котлину 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()
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
. - Затим
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() )
Када покренете програм, излаз ће бити:
лампица је искључена.
Овај чланак је само увод у објектно оријентисано програмирање у Котлину. Проверите ова поглавља у низу да бисте сазнали више:
- Котлин конструктори и иницијатори
- Котлин ову кључну реч
- Котлин угнежђена класа