1-2-Lekciya. Mobil qosımshalar jaratıw ushın programmalastırıw ortalıqları


Statikalıq programmalastırıw tili



Download 6,38 Mb.
bet28/50
Sana06.07.2022
Hajmi6,38 Mb.
#746049
1   ...   24   25   26   27   28   29   30   31   ...   50
Bog'liq
Lekciya qq

Statikalıq programmalastırıw tili
Tap Java sıyaqlı, Kotlin da statikalıq programmalastırıw tili bolıp tabıladı. Bul sonı ańlatadı, programmadaǵı hár bir ańlatpa túri kompelyatsiya waqtında málim boladı, hám kompilyator siz paydalanilip atirǵan funksiya hám ózgeriwshilerdi siz isletip atırǵan Obyektlerde bar ekenligin tekseredi. Bul basqa JvMda isleytuǵın programmalastırıw tilleri bolǵan Groovy hám JRuby sıyaqlı dinamikalıq programmalastırıw tillerinen parıq etedi. Sebebi dinamikalıq programmalastırıw tillerde ózgeriwshi hám funksiyalar qaytaratuǵın túrleri programma islewi dawamında anıqlanadı. Bul bolsa kemrek kod hám maǵlıwmatlar strukturasın jaratıw daǵı kóbirek maslasıwshanlıqqa múmkinshilik beredi. Biraq jaman tárepi sonda, atlardı nadurıs jazıw sıyaqlı máseleler kompilyatsiya waqtında anıqlanbaydi jáne bul programma islewi dawamında aljasıqlar júzege keliwine sebep boladı.
Basqa tárepten qaraǵanda, Javadan ayrıqsha bolıp esaplanıw, Kotlin sizdiń kodingizdagi hár bir ózgeriwshiniń túrin tolıq anıqlawdı talap etpeydi. Kóp jaǵdaylarda, ózgeriwshilerdi túri jaǵdaydan kelip avtomatikalıq tárzde anıqlanıwı múmkin jáne bul sizge túrin járiyalawdı túsirip qaldırishga múmkinshilik jaratadı.
Tómende bunıń eń ápiwayı mısalı berilgen:
Siz ózgeriwshin járiyalawshisiz hám ol pútkil san ma`nisi menen kiritilip atırǵanlıǵı sebep, Kotlin ózgeriwshiniń int túrinde ekenligin avtomatikalıq tárzde anıqlaydı. Kompilyatornin’ túrlerdi anıqlay alıw qábileti type inference dep ataladı.
Tómende statikalıq programmalastırıw tillerdiń birpara paydalı tárepleri berilgen:
• Effektlilik — metodlardı ataw tezirek júz boladı sebebi programma islewi waqtında metodlardı atawǵa mútajlik bolmaydı;
• Isenimlilik — kompilyator programmanıń tuwrılıǵın tastıyıqlaydı, usınıń sebepinen programma islewi waqtında buzılıwlar júz bolıw múmkinshiligi júdá kem;
• Qollap-quwatlaw — tanis emes kod menen islew ańsatlaw, sebebi siz kod qanday Obyektler menen islep atirǵanın kóre alasız;
• Úskene támiynatı — statikalıq jazıw qayta paydalanıwǵa, kodtı anıq-tuwri tamamlawǵa hám basqa IDE qásiyetleri ushın múmkinshilik beredi.
Kotlinnin’ tu’rin avtomatikalıq anıqlay alıwı sebepli, koddan artıqsha kereksiz sózleriniń kóbisi joǵalıp ketedi, sebebi ózgerushilardi járiyalawın’izǵa mútajlik qalmaydı.
Egerde Kotlin sistemasınıń anıqlıǵına qarasangiz, kóplegen uqsas túsiniklerdi kóriwińiz múmkin. Túrler, interfeysler, “generic”lar Javaga uqsas usılda isleydi, sol sebepli siz Javaga tiyisli bilimińiz arqalı Kotlinga ańsatǵana úyreniwn’iz múmkin. Soǵan qaramastan, bazibir zatlar jańa bolıp tabıladı. Olardan eń áhmiyetlisi Kotlinning NullPointerException qaytarıwı múmkin bolǵan jaǵdaylardı kompilyatsiya waqtında anıqlap, nullable túrler járdeminde isenimlilew programmalardı jazıwǵa múmkinshilik beredi. Men nullable túrler haqqında keyin tolıq toqtalıp ótemen. Kotlindagi taǵı bir jańalıq bul onıń funksional programmalastırıw tili ekenligi bolıp tabıladı. Bunıń ne ekenligin kóriwdi qáleseńiz, kelin’, funksional programmalastırıwdıń tiykarǵı ideyalarına itibar qaratamız jáne onıń Kotlinda qanday islewin kóremiz.
Funksional hám Obyektke jóneltirilgen programmalastırıw tili: Java programmistsi retinde, siz gu’mansiz Obyektke jóneltirilgen programmalastırıwdıń tiykarǵı túsinikleri (konseptsiyalari) menen tanıssiz, biraq funksional programmalastırıw sizge jańa túsinik bolıwı múmkin.
Funksional programmalastırıwdıń gilt túsinikleri tómendegiler:
• Birinshi klass penenfunksiyaları (First-class penenfunctions) — siz funksiyalardan tap bahalar siyaqli paydalanasız. Siz olardı ózgeriwshilerge jaylastırıwıńız, málim parametr retinde paydalanıwıńız yaki olardı basqa funksiyalardan qaytarıwıńız (return) da múmkin.
• Ózgermeytuǵınlıǵı — siz jaratılǵanınan keyin jaǵdayı ózgermeytuǵınlıǵın kepillikleytuǵın ózgermeytuǵın Obyektler menen isleysiz.
• biytareplik — siz kiritilgen maǵlıwmat menen birdey degi nátiyjeni qabıl etetuǵın hám basqa Obyektlerdiń jaǵdayın ózgertirmeytuǵın, yamasa sırtqı dúnya menen baylanıs etpeytuǵın túp funksiyalardan paydalanasız.
Funksional tárzde kod jazıwdan qanday payda alıwıńız múmkin? Birinshiden, jay hám qısqashalıq. Funksional kod ózine tartatuǵınliroq hám qısqalaw bolıwı múmkin, sebebi funksiyalar menen bahalardek islew sizge kodingizdan nusqa kóshiriwlerinen shaǵılısıw imkaniyatın beretuǵın kúsh beredi. OJPa sa’wlelendirin’, sizde birdey wazıypanı orınlawshı eki uqsas bólim kod ámeldegi (mısal ushın, toplamnan uyqas penen elementti izlew), biraq detallarida parıq etedi (uyqas penen elementtiń qanday anıqlanıwında ). Siz logikanıń ulıwma bólegin funksiyaǵa ańsatǵana kóshiriwińiz hám parq etiwshi bólegin parametr retinde ótkeziwińiz múmkin. Bul parametrler de sol funksiyalardıń ózi, biraq siz olardı “lambda ańlatpalar” dep atalıwshi anonim funksiyalardan ushın anıq dúzılıwdan paydalanıp ańlatıwıńız múmkin.
1 →”findPerson” shaxstı tabıw daǵı ulıwma logikanı óz ishine aladı;
2 → blok ishindegi kod siz tabıwıńız kerek bolǵan shaxstı anıqlaydı.
Funksional koddıń ekinshi abzallıǵı bul qawipsiz aǵıslar bolıp tabıladı. Kóp aǵımlı programmalardıń eń úlken qáte bul tuwrı sinxron etilmegen birdey maǵlıwmattıń ózgeriwi bolıp tabıladı. Egerde siz turaqlı maǵlıwmat strukturası hám túp funksiyalardan paydalansan’iz, bul sıyaqlı ózgerisler júz bolmawina isenim payda eta alasız hám quramalı sinxronizatsiya kesteine dus keliwingizga qájet qalmaydı.
Yaǵnıy, funksional programmalastırıw degeni ańsatlaw testlew bolıp tabıladı. Jaman tásirlersiz kod ádetde testlewge ańsatlaw. Funksiyalar ózi bólek-bólek tekseriliwi múmkin.
Ulıwma alǵanda, funksional usıl hár qanday programmalastırıw tilinde, atap aytqanda, Javada da, isletiliwi múmkin jáne onıń kóp bólimleri jaqsı programmalastırıw usılı retinde qollap -quwatlanadı. Biraq hámme tiller de odan qıyınshılıqsız paydalanıwǵa múmkinshilik beretuǵın sintaktik hám kitapxana támiynatı menen támiyinlenbegen. Mısalı, bul támiynat Java 8 den aldınǵı Java versiyalarında joq bolǵan.
Kotlin funksional programmalastırıwdı qollap -quwatlaytuǵın kóplegen ayrıqshalıqlarǵa boy bolıp tabıladı. Bular tómendegilerdi qamtıp alǵan:
• Funksional túrler, funksiyalardı, funksiyanıń parametri yamasa qaytartuǵın ma`nisi retinde qaraw múmkin
• Lambda ańlatpaları, eger siz kod blokların átirapında minimal boilerplate járdeminde ótkerip jibersangiz
• Data klasslar, túrli bahalı bahalı ózgermeytuǵın Obyektlerdi jaratıw ushın qısqasha sintaksisni usınıs etedi
• Funktsional usıl daǵı ob'ektler hám jıynaqlar menen islew ushın standart kitapxanada bay API kompleksi
Kotlin sizdi funksional usılda programmalastırıw imkaniyatın beredi, biraq onı májburiy atqarıw etpeydi. Interfeysler hám klass penen iarxiyasina tiykarlanǵan Framework menen islew, Java sıyaqlı, júdá ańsat. Kodtı Kotlin-de jazǵanda, siz Obyektke jóneltirilgen hám funktsional jantasıwlardı birlestire alasız hám ózińiz sheshpekshi bolǵan mashqalanıń sheshimine uyqas penen keliwshi qurallardan paydalanıwıńız múmkin.
To’lemsiz hám ashıq kodlı
Kotlin tili, sonday-aq kompilyator, kitapxanalar hám barlıq tiyisli qurallar pútkilley ashıq kodlı hám hár qanday maqsette paydalanıw ushın biypul. Bul Apache 2 litsenziyasına iye hám GitHub de ashıq bolıp, hámme óz úleslerin qosıp atır. Kotlin qosımshaların islep shıǵıw ushın 3 ta ashıq kodlı IDE ni tańlawıńız múmkin:
• IntelliJ IDEA Community Edition (hám de IntelliJ IDEA Ultimate)
• Android Studio
• Eclipse
Kotlin ob'ektke jóneltirilgen programmalıq paradigmanı qollap -quwatlaydı, bul bolsa bul tildegi programma bir-biri menen óz-ara baylanısda bolǵan zatlar retinde suwretlengen.
Ob'ekttiń wákilligi - bul klass. Klass penen tiykarınan Obyekt tariypin ańlatadı hám Obyekt klasstıń ayriqsha tımsalı. Mısalı, hár bir kisi, mısalı, denesi, tórt dóngelek, rul, dóngelek hám basqalar sıyaqlı bir neshe OJPa sa’wlelendiriwge iye.- hár bir mashinaǵa tán bolǵan birpara ápiwayı belgiler kompleksi. Bul suwret tiykarınan klass. Bunday halda, dene formasında, birpara basqa tolıq maǵlıwmatlarǵa iye bolǵan hár qıylı mashinalar ámeldegi, yaǵnıy bul klasstıń ayriqsha qásiyetleri, málim bir ob'ektler yamasa klasstıń mısalları bar. Klassti anıqlaw ushın klass penen gilti qollanıladı, sonnan keyin klass penen atı keledi hám qızıǵıwshı qawıslarda klass penen atınan keyin klasstıń denesi anıqlanadı. Eger klassta denesi bolmasa, ol jaǵdayda buyra qawıslar qaldırilishi múmkin. Mısalı, biz adamdı ańlatiwshı klassni anıqlaymız:

1
2
3
4

class Person
//
class Person { }

Klass penen tiykarınan jańa maǵlıwmatlar túrin ańlatadı, sol sebepli biz bul túrdegi ózgeriwshin anıqlay alamız:

1
2
3
4
5
6
7
8

fun main() {
val tom: Person
val bob: Person
val alice: Person
}
class Person

Tiykarǵı funktsiya ush ózgeriwshin belgileydi. Bunnan tısqarı, basqa Obyektke jóneltirilgen tillerden ayrıqsha bolıp esaplanıw, Kotlindagi tiykarǵı funktsiya bólek klasqa jaylastırilmaǵan hám mudamı hár qanday klasstan sırtda belgilenbegen.
Klass penen Obyektin jaratıw ushın siz bul klass penen dizaynerina qońıraw etiwińiz kerek. Dizayner tiykarınan klass penen atı menen atalǵan funktsiyanı usınıs etedi hám ob'ektti daslep emesligin ámelge asıradı. Ádetiy bolıp, kompilyator biz paydalanıwımız múmkin bolǵan bos qurıwshı tárepinen jaratıladı:

1

val tom: Person = Person()

Koddıń belgisi bolǵanınan keyin koddıń bir bólegi () tek ob'ekt klasın jaratatuǵın konstruktor qońırawın sáwlelendiredi. Konstruktor qońıraw etiwinen aldın, klass penen ózgeriwshisi hesh qanday ob'ektti kórsetpeydi.
Mısalı, ush klass penen Obyektin jaratıń:

1
2
3
4
5
6
7
8

fun main() {
val tom: Person = Person()
val bob: Person = Person()
val alice: Person = Person()
}
class Person

Ayrıqshalıqlar
Hár bir klass penen birpara maǵlıwmatlardı yamasa jaǵdaydı ayrıqshalıqlar formasında saqlawı múmkin. Ayrıqshalıqlar, ózgeriwshiler Class penen dárejesinde hám var gilt sózleri menen belgilenedi. Eger buyım-múlk valdi esapqa alǵan bolsa, ol jaǵdayda bul múlktiń ma`nisi tek bir ret ornatılıwı múmkin. Múlk var-den paydalanılǵan bolsa, bul múlktiń ma`nisi qayta -qayta ózgertiliwi múmkin.
Múlk jumısqa túsiriliwi kerek, yaǵnıy ol dáslepki bahaǵa ıyelewi shárt. Mısalı, biz bir neshe mulkni anıqlaymız:

1
2
3
4

class Person{
var name: String = "Undefined"
var age: Int = 18
}

Bunday halda, adamdı ańlatiwshı shaxstı, atin qásiyetlerin (insannıń atı ) hám jası (insaniy) belgileydi jáne bul ayrıqshalıqlar dáslepki bahalar menen baslanadı.
Bul ayrıqshalıqlar var menen belgilenedi, biz olardıń dáslepki qádiriyatların ózgertiwimiz múmkin:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

fun main() {
val bob: Person = Person() // создаем объект
println(bob.name) // Undefined
println(bob.age) // 18
bob.name = "Bob"
bob.age = 25
println(bob.name) // Bob
println(bob.age) // 25
}
class Person{
var name: String = "Undefined"
var age: Int = 18
}

Ayrıqshalıqlarǵa kirisiw ushın ózgeriwshen atı isletiledi, bul ob'ektti shıǵaradı hám múlk atı noqattan keyin kórsetilgen. Mısalı, múlkshilik bahanı alıw:

1

val personName : String = bob.name




1

bob.name = "Bob"

Klass penen funktsiyaları
Klassta da funktsiyalar bolıwı múmkin. Funktsiyalar bul klass penen Obyektleriniń minez-qulqların anıqlaydı. Bunday funktsiyalar, sonıń menen birge, aǵza funktsiyaları yamasa klass penen aǵzası funktsiyası dep da ataladı. Mısalı, biz stoldi funktsiyalar menen belgileymiz:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

class Person{
var name: String = "Undefined"
var age: Int = 18
fun sayHello(){
println("Hello, my name is $name")
}
fun go(location: String){
println("$name goes to $location")
}
fun personToString() : String{
return "Name: $name Age: $age"
}
}

Klasstıń funktsiyaları da dástúriy funktsiyalar retinde belgilenedi. Atap aytqanda, Sayhelllo () funktsiyası bul erda konsolga "Sálem" liniyasini kórsetip beretuǵın hám adamdıń Obyekti qutlıqlawların shıǵaratuǵın shaxs klasında anıqlanadı. Ekinshi funktsiya - bul adam ob'ektiniń málim bir jayǵa háreketleniwin alıp taslaydı. Jaylasıw jaylasıw parametri arqalı uzatıladı. Úshinshi shaxs / funktsiya ámeldegi ob'ekt haqqındaǵı maǵlıwmatlardı qatar retinde qaytaradı.
Klassta anıqlanǵan ayrıqshalıqlarda bul klasstıń qásiyetleri bar. Sonday etip, bul halda, funktsiyalarda siz jeke o’zin’iz anıqlanǵan at hám jas daǵı ayrıqshalıqlarǵa shaqırıq etiwińiz múmkin.
Klass penen funktsiyalarına kirisiw ushın Obyekt atınan paydalanıw ushın Obyekt atınan paydalanıw kerek, sonnan keyin funktsiya dep atalǵan hám bul funktsiyanıń parametrleri ushın qawıslar ma`nisinde:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

fun main() {
val tom = Person()
tom.name = "Tom"
tom.age = 37
tom.sayHello()
tom.go("the shop")
println(tom.personToString())
}
class Person{
var name: String = "Undefined"
var age: Int = 18
fun sayHello(){
println("Hello, my name is $name")
}
fun go(location: String){
println("$name goes to $location")
}
fun personToString() : String{
return "Name: $name Age: $age"
}
}

Konsolda programmaniń shiǵiwi:
Hello, my name is Tom
Tom goes to the shop
Name: Tom Age: 37

Bul maqalada siz KOTLIN-de Obyektke jóneltirilgen programmalastırıw menen tanısasız. Siz Obyektlerdi qanday jaratıwdı hám olardı sizdiń programmasıńızda isletiwińiz múmkinligin bilip alasız.


Reklama.
Kotlin funktsional hám ob'ektke jóneltirilgen programmalastırıwdı qollap -quwatlaydı.
Kotlin joqarı tártip funktsiyaları, funktsiyalar hám Lambda-dıń túrleri sıyaqlı ayrıqshalıqlardı qollap -quwatlaydı, bul onı funktsional programmalastırıw usılında islew ushın ájayıp tańlaw etedi. Bul túsinikler haqqında keyingi baplarda bilip alasız. Bul maqalada biz Kotlinda Obyektke jóneltirilgen programmalastırıw usılı haqqında soylesemiz.
Obyektke jóneltirilgen programmalıq usılda siz quramalı mashqalanı Obyektlerdi jaratıwda kishilew setkalarǵa ajıratıwıńız múmkin.
velosiped - bul ob'ekt
Házirgi uzatma, eki dóngelek, tisliler sanı hám basqa zatlar bar.
Tormoz, tezlestiriw, uzatıw jılısıwı hám taǵı basqa waqtında háreket etedi.
Siz ósip baratırǵanıńızda, maǵlıwmatlar yamasa kastrazulyatsiya, miyraslar hám polimorfizm sıyaqlı ob'ektke jóneltirilgen programmalastırıw tolıq maǵlıwmatları haqqında bilip alasız. Bul maqalada hámme zat ápiwayı bolıwı ushın tiykarlarǵa qaratılǵan.
Ob'ektke jóneltirilgen programmalastırıw (oop)
Reklama.
Usınıs etilgen ádebiyat: Obyekt ne?
Kotlindagi ob'ektlerdi jaratıwdan aldın, siz klassti anıqlawıńız kerek.
Klass penen- bul Obyekt jobası.
Klass haqqında úyde eskiz (prototip) retinde oylawımız múmkin. Ol jaǵdayda bul xarakteristikalar tiykarında pollar, qapılar, áynekler hám basqalar haqqında barlıq tolıq maǵlıwmatlardı óz ishine aladı, biz úy quramız. Úy - bul Obyekt.
Tap sol tariypdan baslap siz kóp zatlardı qurıwıńız múmkin, biz bir klasstan kóplegen zatlardı jaratamız.
Kotlindagi klassti qanday anıqlaw múmkin?
Kotlindagi klassti anıqlaw ushın klaslardin’ soraw sózi isletiledi:
Klass penenfinal atı (// Múlk // aǵza funktsiyası...)
Mine bir mısal:
Class penen lampası (// Jeke (maǵlıwmatlar elementi) Jeke var // Funktsiya (ISON = TRUM) // funktsiya aǵzası qızıqlı perdesof ()
Bul erda biz shıra atlı klassti anıqladiq.
Klassta bir jalǵız mulkke iye (ózgeriwshen hám ózgeriwshen) hám eki tonna () hám ORDOP () aǵza wazıypaları bar.
Usınıs etilgen ádebiyat: KOTIN funktsiyaları
Kotlin múlkinde yamasa abstrakt dep daǵaza etiliwi kerek. Joqarıdaǵı mısalda, jalǵız múlki nadurıs baha menen baslanadı.

Kotlin klasslarida klass kalit so'zi bilan belgilanadi:


Klasslar, ob'ektler, ayrıqshalıqlar, aǵza funktsiyası hám basqalar kórinisi modifikatorga ıyelewi múmkin. Mısalı, jalǵız múlk jeke. Bul sonı ańlatadıki, aon múlki shıra klasında ózgertiliwi múmkin.
Basqa kóriniste ózgeriwshiler:
Jeke, tek klass penensheńberinde kórinetuǵın (ámeldegi).
Jámiyetshilik - balshıq jerde kórinedi.
Qorǵawlanǵan klasqa jáne onıń subklass menen kórinedi.
Ishki - modul ishindegi hár qanday klient olarǵa kiriwi múmkin.
Siz Kotlinning maqala modigifikiyasining kórinisi haqqındaǵı qorǵaw qurallarınıń qorǵawlanǵan ishki birikpesi haqqında bilip alasız.
Eger siz kórinetuǵın modifikatorni kórsetpesangiz, ol ǵalabalıq ádetiy boladı.

class Invoice {







}

Klass penen deklaratsiyası klass penen atı, klass penen bası (tiykarǵı dizayner, parametrler hám basqalar) hám buyra qawıslarda oralǵan deneden ibarat. Bar ekenligi hám ataǵı hám deneler májburiy emes. Eger denede klassta etilmey atırǵan bolsa, buyra qawıslar qaldırishga ruxsat beriledi.


Dizaynerlar
Kotlindagi klass penen bir tiykarǵı qurılıs hám bir neshe ekinshi dárejeli qurıwshılar bolıwı múmkin. Baslanǵısh konstruktor klass penen basınıń bir bólegi bolıp tabıladı: ol klass penen atınan keyin tezlik penen ótedi.
Klass penen konstruktor (atı: string){
}

Eger baslanǵısh dizaynernin’ qandayda bir annotatsiyaları yamasa kiretuǵın modifikator bolmasa, konstruktordıń gilt sózin beriledi:



class Person(firstName: String) {







}

Baslanǵısh konstruktorda kod bolıwı múmkin emes. Dáslepki kodı Baslanmaǵanliǵi menen kórsetilgen dáslepki bólimine oralǵan bolıwı kerek.


Itibar beriń, baslanǵısh blokdıń baslanǵısh dizaynerning parametrlerine múmkinshilik beredi. Álbette, bul parametrlerdi tuwrıdan-tuwrı dene organı ishine kirgiziw ushın da paydalanıw múmkin.
Tiykarınan ózgeriwshiler deklaratsiyası hám olardı baslanǵısh dizaynerning baslanǵısh dizaynerning parametrleri tárepinen Inotlindagi parametrleri arnawlı qısqasha sintaksis penenámeldegi:
Soǵan uqsap, ádetdegi ózgeriwshiler retinde, baslanǵısh konstruktorda daǵaza etilgen ózgeriwshiler ózgeriwi múmkin (var) hám ózgermeytuǵın (vA).
Eger dizayner annotatsiyalar yamasa kirisiw quralı menen úskenelestirilgen bolsa, konstruktor gilt sózi kerek hám ol halda ózgeriwshiler hám túsindirmeler odan aldın:

class Customer public @Inject constructor(name: String) {







// ...




}

Ekilemshi dizaynerlar
Klassta sonıń menen birge, Gilt sóz konstruktorınan baslanıwı kerek bolǵan bir neshe ekilemshi dizaynerlar bolıwı múmkin:

class Person {







constructor(parent: Person) {




parent.children.add(this)




}




}

Eger klass penen baslanǵısh konstruktor bolsa, hár eki jıllıq konstruktor basqa ekilemshi konstruktor arqalı baslanǵısh yamasa anıq yamasa jasırın yamasa anıq yamasa anıq emes, bálki baslanǵısh yamasa anıq yamasa jasırın yamasa anıq emes. Tap sol klasstıń basqa dizayniga delegatsiya bul tiykarǵı sózi arqalı ámelge asıriladı:



class Person(val name: String) {







constructor(name: String, parent: Person) : this(name) {




parent.children.add(this)




}




}

Eger bir konstruktor (baslanǵısh yamasa ekilemshi) tawısıwı bolmaǵan klassta daǵaza etilse, ol ushın dálillersiz tiykarǵı dizayner jaratıladı. Bul jaratılǵan konstruktor ǵalabalıq kirisiw modige boladı. Eger siz óz klasıńızdı ǵalabalıq konstruktorǵa ıyelewin qálesangiz, siz jeke kirisiw modigiyasi menen bos baslanǵısh konstruktordı járiyalawıńız kerek:



class DontCreateMe private constructor() {







}

Hár qanday "Java. Láń. Bobjjning tolıq analoglari emes. Atap aytqanda, klassta teń (), hashcode () hám tostring () usıllarınan tısqarı hesh qanday zat joq.
Bir klasstan basqasın anıq miyraslar qılıp alıw ushın siz kolonli bas betda qalın ishekte ata-ana klasınıń atın kórsetiwińiz kerek:

class MyView: View {







constructor(ctx: Context) : super(ctx) {




}








constructor(ctx: Context, attrs: AttributeSet) : super(ctx, attrs) {




}




}

Eger klass penen baslanǵısh konstruktor bolsa, tiykarǵı túrdegi baslanǵısh dizaynernin’ parametrlerinen paydalanǵan halda tuwrıdan-tuwrı jumısqa túsiriliwi múmkin.
Eger klass penen baslanǵısh qurıwshı bolmasa, hár bir ekinshi dárejeli konstruktor bas bet túrin super gilt sóz arqalı baslanadı yamasa onı basqa ekilemshi dizaynga shıǵarıwı kerek. Sonı este tutin’, bul halda, hár qıylı ekilemshi dizaynerlar hár qıylı tiykarǵı klass penen dizaynerlariga kiriwleri múmkin:
Javafe-den modifikatorning finalida abstrakt ashıq ashıq ashıq - bul miyraslar alıw ushın klass penenetedi. Ádetiy bolıp, Kotlindagi barlıq klasslar juwmaqlandi, i. e. Miyraslar ushın jabıq.
Aǵzalardı bıykarlaw
Siz qashannan berli tushunganingizdek, Kotlinda jasırınǵan birpara zatlar anıq boldı. Javadan ayrıqsha bolıp esaplanıw, Kotlinni anıqlap alıw ushın ámeldegi bolıwı kerek bolǵan anıq klass penenaǵzaları bolıwı kerek:

open class Base {







open fun v() {}




fun nv() {}




}








class Derived() : Base() {




override fun v() {}




}

V () usılın bıykarlaw ushın, alınǵan klass penen tezislikti bıykarlawdı talap etedi. Eger túsindirmeler bolmasa - kompilyator oǵan ant ichadi. Eger bazalıq klass penendáregi bazalıq klassta Nv () usılı menen belgilengen bolsa, ol menen birdey imzolagan usıl menen belgilenmagan bolsa, ol menen birdey qolmenen belgileniwi qadaǵan etiledi, ol menen úskenelestirilgenmi yamasa joqpa bıykarlawdıń biykar etiliwi yamasa joq. Belgilengen klassta (i. e., klassta anıqlanbaǵan), miyraslar ushın aǵzalardı ashıwǵa jol qoyılmaydı.


Qayta túsindirme menen belgilengen klass penen aǵzası ashıq, i. e. Biykar etiliwi múmkin. Eger siz qayta islewdi qadaǵan etiwdi qálesangiz, juwmaqlawshı modifikatordan paydalanıń:

Download 6,38 Mb.

Do'stlaringiz bilan baham:
1   ...   24   25   26   27   28   29   30   31   ...   50




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish