11-Lekciya: Obyektke baǵdarlanǵan programmalastırıw. Javada klaslar hám obyektler. Konstruktorlar 1. 2. 3. 4. Joba: Obyektke baǵdarlanǵan programmalastırıw haqqında túsinik; Klaslar hám obyektler; Klass obyektlerin jaratıw; Konstruktorlar menen islew. </TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV> Obyektke baǵdarlanǵan programmalastırıw Javada jazılǵan barlıq programmalar obyektke baǵdarlanǵan programmalastırıw (OBP) tiykarında dúziledi. Yaǵnıy, Java tilin qatań OBP tili dep atawǵa boladı. OBP – bul programmalardı, belgili bir klastıń ekzemplyarları bolǵan, obyektlerdiń jıyındısı tıykarında súwretlewshi programmalastırıw metodologiyası esaplanadı. Yaǵnıy, OBP tıykarında klass hám obyekt túsinikleri jatadı. Búgingi kúnde Javadan basqa birneshe programmalastırıw tilleri (C++, C#, Objective-C, Swift, Python, PHP, JavaScript) OBP principleri tiykarında isleydi. OBP nı túsiniw ushın dáslep klasslar hám obyektler haqqında túsinikke iye bolıw kerek boladı. Sonlıqtan, eń dáslep klass hám obyekt haqqında toqtalıp ótemiz. </TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV> Klasslar hám obyektler Klasslardan aldında bir neshe márte paydalandıńız. Biraq, ol jaǵdaylarda ózińız klass jaratpastan, aldınnan Java kitapxanasında bar bolǵan klasslardıń obyektlerin jaratıp paydalandıńız. Ápiwayı mısal, ózgeriwshilerge programma orınlanıw waqtında mánis beriw ushın Scanner klası yamasa tosınnanlı sanlar ushın Random klasınıń obyektin jarattıńız. Scanner kiritiw = new Scanner(System.in); Bunda Scanner klass, al kiritiw obyekt esaplanadı. Demek klasstıń obyektin jaratıp, usı obyektke tiyisli kerekli metodlardan qálegenshe paydalanıwǵa boladı. Mısalı: int san1 = kiritiw.nextInt(); double san2 = kiritiw.nextDouble(); Bunda nextInt hám nextDouble Scanner klasınıń metodları bolıp tabıladı. </TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV> Klasslar hám obyektler Klasslar hám obyektlerdi túsiniw ushın real ómirden mısal keltireyik. Máselen, mashinalardı klass dep alsaq, konkret bir modeli (Malibu, Lacetti) obyekt esaplanadı. Basqa bir mısal, haywanlardı klass dep alsaq, at usı klastıń obyekti boladı yamasa atlardı klass dep alsaq, usı atlardıń ishinde belgili bir parodası (mustang) obyekt bolıp tabıladı. Programmalastırıwda klass bul metodlar hám ózgeriwshiler jıyındısınan turadı. Obyekt bolsa, sol klass tıykarında jaratıladı. Yaǵnıy, obyektler ushın klasslar shablon esaplanadı. Sonday-aq, obyektlerdiń halatı hám ózin tutıwı sıyaqlı qásiyetleri boladı. Mısalı, joqarıdaǵı mashinanıń halatına: reńi, tezligi, modeli hám t.b., al ózin tutıwına: mashinanıń júriwi, toqtawı sıyaqlılar kiredi. Javada obyekt halatı maydanlarda (ekzemplyar ózgeriwshi) saqlanadı, al ózin tutıwı bolsa, metodlar járdeminde islenedi. Mısalı, mashina klasın jaratıw kerek bolsın. Onı tómendegishe jaratıw múmkin: </TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV> Klasslar hám obyektler Klass jaratıw modifikator maydanlar metodlar Obyekt jaratıw klass atı klass atı public class Mashina{ String model; int tezlik; String ren; void juriw(){ } void toqtaw(){ } } klass denesi obyekt Mashina lasetti = new Mashina(); </TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV> Klass ishinde ózgeriwshiler Klass ishinde ózgeriwshiler 3 túrde bolıwı múmkin: Lokal ózgeriwshiler, metodlar yamasa konstruktorlar ishinde táriyplengen bolıp, tek ǵana metod ishinde kórinedi. Metod jumısın toqtatqan waqıtta ózgeriwshiler óshiriledi. Ekzemplyar ózgeriwshiler, klass ishindegi ózgeriwshiler bolıp, usı klass ishindegi qálegen metod yamasa konstruktor ishinde paydalanıwǵa boladı Klasstıń statikalıq ózgeriwshileri, klass ishinde hám metod sırtında statikalıq gilt sóz arqalı táriyplenetuǵın ózgeriwshiler. Statikalıq ózgeriwshiler, metodlar hám modifikatorlar haqqında keyingi lekciyalarda toqtalıp ótemiz. </TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV> OBP nıń tiykarǵı 4 principi: Miyras – bul aldınǵı bar bolǵan klass tiykarında jańa klass jaratıw. Bunda jańa jaratılǵan klass aldınǵı klastıń funkcionallarınan paydalana aladı. Máselen, joqarıda mashina klasın jarattıq. Biraq biz mashinalarǵa jańa xarakteristika qospaqshımız (Máselen, ústi ashılıp jabılatın). Sonıń menen birge aldınǵı xarakteristikalarında saqlap qalmaqshımız. Usı jaǵdayda jańa mashina klasın jaratıp, aldınǵı xarakteristikaların, dáslepki mashina klasınan miyras qılıp alamız. Abstrakciya – bunda obyekttiń kerekli xarakteristikaların jıynap alıwǵa hám keresiz, ekinshi dárejelilerin esapqa almaw múmkinshiligin beredi. Máselen, satıp alıwshı ushın mashinanıń kerekli xarakteristikaları qansha jol júrgeni, neshinshi jılı islep shıǵarılǵanı sıyaqlı maǵlıwmatlar boladı. Inkapsulyaciya – bul, maǵlıwmatlardı qorǵaw hám ózgertiwge ruxsat beriw hám ruxsat bermew múmkinshiligin beredi. Máselen, mashina atın ózgertiwge ruxsat berilmeydi (islep shıǵarǵan kárxananıń avtorlıq huqıqı bar, al balonın yamasa salon ishin ózgertiwge boladı). Polimorfizm – birneshe tipler menen bir tipte járdeminde islegendey múmkinshilik beredi. Máselen transport klasın jaratayıq. Bul klassqa miyras qılıp samolyot, mashina, keme klassların jaratamız. Hár bir klass ishine júrgiziw metodın jaratamız. Biraq, samolyottı júrgizsek ol ushadı, al mashina jolda júredi, keme suwda júzedi. Biz usı júrgiziw metodı arqalı qálegen trasporttı júrgize alamız. </TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV> NetBeans ortalıǵında klass jaratıw Jańa klass jaratıw ushın, óz aldına fayl jaratıw kerek boladı. NetBeans ortalıǵında klass jaratıw tómendegishe ámelge asırıladı. Dáslep jańa proekt jaratamız; File (Файл) menyusınan New File (Создать файл) buyırıǵı tańlanadı hám payda bolǵan aynadan Java Class (Класс Java) tańlanıp next (Далее) túymesi basıladı. Class Name (Имя класса) maydanına klassqa jańa at berip, Finish (Готово) túymesin basamız. Nátiyjede jańa klass jaratıladı. Usınday jol menen Mashina klasın jaratamız. Bul jaǵdayda, 1 proekt ishinde 2 klass boladı. Birinshi klass proekt atı menen birdey jaratılǵan hám ishinde main metodı bar. Al ekinshi klass bolsa, ózimiz jaratqan biraq klass denesinde hesh qanday kod bolmaydı. </TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV> NetBeans ortalıǵında klass jaratıw </TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV> Mısal Mashina klasında modeli, reńi, tezligi haqqında maǵlıwmatlardı shıǵarıwshı metod jaratıp, usı klastıń birneshe obyektlerin main metodı ishinde jaratıw kerek bolsın. package klasslar; public class Mashina { public String model=""; public int tezlik=0; public String ren=""; public void magliwmat(){ System.out.println("Mashina modeli:"+ model); System.out.println("Mashina tezligi:"+ tezlik); System.out.println("Mashina reni:"+ ren); } } </TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV> Mısal package klasslar; public class Klasslar { public static void main(String[] args) { Mashina lasetti = new Mashina(); lasetti.model = "Lacetti"; lasetti.tezlik = 180; lasetti.ren = "qara"; lasetti.magliwmat(); Mashina malibu = new Mashina(); malibu.model = "Malibu"; malibu.tezlik = 220; malibu.ren = "aq"; malibu.magliwmat(); } } </TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV> Konstruktorlar Hár bir klasta eń keminde bir konstruktor boladı. Aldınǵı jaratqan klaslarda, klass denesinde heshqanday konstruktor kórmesekte programma tárepinen islewshi konstruktor boladı. Eger konstruktordı ózimiz jaratpaqshı bolsaq, onı klass atı menen birdey qılıp qoyıw kerek boladı. Mısalı, bos konstruktor tómendegishe jaratıladı: public klassAtı(){} Konstruktor atı klass atı menen birdey boladı. Sonıń ushın joqarıdaǵı mısalda konstruktor atına klassAtı dep jazdıq. Konstruktorlardı paydalanıwdan maqset, obyekt jaratıp atırǵanda onıń halatları haqqındaǵı maǵlıwmatlardı jiberiw bolıp tabıladı. Aldınǵı mısalda, lasetti yamasa malibu obyektlerin jaratqanda onıń modelin, tezligin, reńin birme – bir kiritdik. Al konsturktor jaratsaq onı ańsat ámelge asırıwǵa boladı. Joqarıdaǵı mısaldı konstruktor járdeminde isleyik. </TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV> Konstruktorlar package klasslar; public class Mashina { public String model=""; public int tezlik=0; public String ren=""; // konstruktor public Mashina(String s, int t, String r){ model = s; tezlik = t; ren = r; } public void magliwmat(){ System.out.println("Mashina modeli:"+ model); System.out.println("Mashina tezligi:"+ tezlik); System.out.println("Mashina reni:"+ ren); } } </TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV> Konstruktorlar package klasslar; public class Klasslar { public static void main(String[] args) { Mashina lasetti = new Mashina("Lacetti", 180, "qara"); Mashina malibu = new Mashina("Malibu", 220, "aq"); } } Demek bul mısalda konstruktor: public Mashina(String s, int t, String r){ model = s; tezlik = t; ren = r; } Konstruktorlar klass atı menen birdey bolıwı hám modifikatorı public bolıwı kerek. Sonday-aq, bir klass ishinde birneshe konstruktorlardı jaratıw múmkin. Olar bir – birinen parametrleri boyınsha parıq qılıwı múmkin. </TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV> Tákirarlaw sorawları Obyektke baǵdarlanǵan programmalastırıw ne ushın kerek? OBP nıń tiykarın neler quraydı? OBP nıń qanday principleri bar? Klass hám obyekt degende neni túsinesiz? Miyrasqa mısal keltiriń Polimorfizmge mısallar keltiriń Inkapsulyaciya degen ne?