Monday, March 3, 2014

Class lar haqida

Class  lar haqida

Class lar o`zida qiymat saqlovchi obyektlardan, funksiya va property(xususiyat) lardan tashkil topgan. Vazifa bir turga yaqin funksiyalarni bir joyga saqlash uchun biror bir klassning ichida e`lon qilinadi(joylashtiriladi) va biror nom bilan nomlanadi.
Funksiyalarni e`lon qilish - funksiyani biror class ning ichiga joylashtirib uning ichiga logikasini(bajaradigan missiyasini) yozish.
Funksiyani chaqirish(ishlatish) - E`lon qilingan funksiyani chaqirish mumkin, e`lon qilinmagan funksiya mavjud bo`lmaydi. Funksiyalar - kichik dasturchalar, ular parametr berib ishlatiladi va biror natijani qabul qilib olinadi.

funksiyalarni e`lon qilishda ham ma`lum bir type(Reference yoki Value) bilan e`lon qilinadi(yaratiladi deb ham yoziladi - bu e`lon qilish ma`nosida). Kirish parametrlari bir nechta bo`lsa ham natijaning qiymati bir dona bo`ladi(ya`ni bitta qiymat qaytadi).. Parametrlar ham natija ham biror type ga tegishli bo`ladi. Natija esa funksiyaning qiymati deb aytiladi.  Qiymat qaytarmaydigan funksiyalar ham bor, bular  Prosedura(Procedure) deyiladi. E`lon qilinishi xuddi funksiyalar bilan bir xil, faqat  funksiyaning tipi void deb belgilanadi. void- - bu maxsus tip, faqat funksiyalarda qo`yiladi, qachonki uni proseduraga aylantirish kerak bo`lgan vaqtlarda.


Return - ingliz tilida qaytarmoq, qaytarib bermoq, jo`natmoq yoki javob bermoq ma`nolarini beradi. Biz bu operatorni funksiyalarda qo`llaymiz. Shu funksiyaning natijasini qaytaruvchi operator. Dasturning biror qismidan kerakli funksiyani chaqirganimizda odatda undan biror natija kutamiz va kelgan natijani boshqa bir o`zgaruvchiga beramiz. Shu funksiyadan natija qaytishi uchun returndan foydalaniladi. Returndan keyingi operatsiyalar bajarilmaydi. Funksiyada qanday amallar bajarilganiga qaramay returnda nima berilgan bo`lsa shu qaytad(funksiyaning qiymati shunga teng bo`ladi).

Obyektga yo`naltirilgan dasturlash tillari (OOP)

Obyektga yo`naltirilgan dasturlash tillari (OOP)

Obyektlar orqali ma`lumotlarni qayta ishlash va amallar bajarishni ta`minlashda foydalaniladigan dasturlash tillari Obyektga yo`naltirilgan dasturlash tillaridir. OOP ham rivojlanish evaziga ehtiyoj sababli yuzaga kelgan.  OOP ning imkoniyatlari ba`zida bizning tasavvurimizdan ham kattaroq. Unda istalgan tipdagi obyektlarni qayta ishlashning imkoni bor. OOP dasturlarini tasavvur qilish tizimli dasturlarni tuza oladigan dasturchilar uchun qiyin emas, OOP - tizimli dasturlarning majmui. Istalgan dasturni tahlil qilsak - hech bir dastur yo`qki unda tizimli dasturlash tillaridagi amallar bajarilmasa, OOP da ham turli xil tiplar bo`lgani bilan ular ham oddiy tiplardan tuzilgan to`plamlardir, ular o`rtasida amal bajarganda ham shundoq o`zini emas ichidagi a`zolari o`rtasida amallar bajariladi. A`zolari esa o`sha biz bilgan oddiy tiplar hisoblanadi.
OOP ning 3 prinspi:
1. Inkaptsulyatsiya (incapsulation)(Class a`zolarining xavfsizligini ta`minlash)
2. Nasl olish(Abstraction-Inheritance)(Avlod classda ajdod classning xususiyatlaridan foydalanish)
3. Polimorfizm
Savol: Object nima? Object(obyekt) - xotirada saqlangan ma`lumotning e`lon qilingan nomi(o`zgaruvchisi).  O`zgaruvchi - ma`lumotni biror bir nom bilan e`lon qilish.
Savol: Struct nima? Struct(struktura) -obyekt tegishli bo`lgan to`plamning nomi. Bu to`plamni tip(type) deb ataladi. Struct tipidagi obyektda ichidagi barcha o`zgaruvchilar tashqaridan ko`rinib turadi.
Savol: Class nima? Class ham xuddi Struct kabi type, lekin undagi obyektning ba`zi xususiyatlari bor, ular bu obyektning tanasini yashirib turadi va boshqalar.. Shu sababli ham struct dan odatda juda kam foydalaniladi. Chunki Struct - bu public(ommaviy, ochiq, oshkora obyekt). Bundan tashqari Class lar kod yozishda ham muhim ahamiyatga ega. Dasturchi dastur tuzganda odatda har bir missiya uchun bir funksiya ochadi va funksiya nomini shu missiyaga mos qilib nomlaydi. Kodning matnini shu funksiyalarda yozadi. Funksiyani o`zini esa Class da yoziladi. Demak Classda kod matnini emas funksiya(method-metod), property(xususiyat) hamda o`zgaruvchilar yoziladi, funksiyaning ichida esa kodning matni yoziladi.(adashtirmaslik kerak). Ma`lum bir guruhga kiradigan missiyalar, mantiqlar to`plami bitta Class da tashkil etiladi va shu class nomini ham mantiqdan kelib chiqib nom beriladi. Agar bu class mantiqiy amallarni bajarish uchun emas, faqat to`plamning tipi(type) uchun yaratib vaqtincha shu tipdagi ma`lumotni saqlab turish uchun yaratilgan bo`lsa (ya`ni undan maqsad faqat ma`lumot saqlash va biror manzilga yo`naltirish) demak unda funksiyaning keragi yo`q.  

Masalan:


Bu class Tom obyektining qiymatini saqlash uchun e`lon qilingan. Tom-mushuk bir obyekt bo`lsa uning ismi va yoshini saqlab turadigan class. Demak bu to`plam yoki bir tip ki, unda mushuk haqida ma`lumotlar saqlanadi. Bu klass tipidagi obyektlar ko`pligi bizga bir nechta mushukning ma`lumotlari saqlanayotganligini bildiradi. Oydinlashadiki. biz OOP dasturlash tillarida o`zimiz xohlagancha tip e`lon qilib foydalana olishimiz mumkin ekan. Biz OOP orqali juda katta imkoniyatlarga erishamiz. Class lar birgalikda kutubxona(library-biblioteka) fayllarini tashkil etadi, bu kutubxonalar ham biror katta dasturlar tizimini tashkil etadi. Masalan: Windows OS ham kutubxonalardan tashkil topgan.

Public va Private nima? Class a`zolarining xavfsizligini ta`minlash(inkapsulyatsiya)-incapsulation) prinspining maxsus so`zlari. Public, Protected, Private turlari mavjud.
Public(umumiy) - ushbu elementni class tashqarisidan ko`rish, o`zgartirish mumkin yoki yo`qligini bildiradi
Protected(himoyalangan) - ushbu element shu class avlodlari(nasl olinganda) ichida va shu class ning ichida ko`rinishi, murojaat qilish mumkinligi va qiymatini o`zgartira olish huquqini beradi
Private(maxfiy) - mazkur element o`zi joylashgan class ichidagina ko`rinishi va qiymatlarini o`zgartira olinishi hamda murojaat huquqini beradi.
Bu bizga nima uchun zarur? Tasavvur qilishga oson bo`lishi uchun kompyuter klaviaturasidan foydalanamiz. Klavishlar public elementlar, uning ichki qismidagi sxemalar esa private. Bizga faqat foydalanishimiz kerak bo`lgan elementlar ko`rsatib qo`yilgan, qolgani esa biz uchun muhim emas va mavhum. Protectedni esa xotirada qolishi uchun foydalangan vaqtimizda tushuntirib o`tamiz.

Takrorlanish operatori ( for -parametrli sikl operatori)

Takrorlanish operatori ( for -parametrli sikl operatori)
Takrorlanish operatori ham muhim ahamiyatga ega. Qo`yilgan masalaning yechimi bir yoki bir-nechta arifmetik ifodaning N marta qayta-qayta hisoblanishi natijasida chiqadigan bo`lsa bundan foydalaniladi.


Shartli o`tish operatori ( if )

Shartli o`tish operatori ( if )
Shartli o`tish operatori - biror shart bajarilganda belgilangan vazifani bajarishga yo`naltiruvchi operator. E`tibor bering: shart bajarilganda. bu operatorning sintaksisi quyidagicha. Belgilangan vazifa bajarilishi uchun biror shart qo`yish kerak bo`lganda foydalaniladi.














Biror shart bajarilganda 1-vazifa aks holda 2-vazifa bajarilishi uchun ham foydalanish mumkin.


If( shart ){
.....//1-vazifa
} else {
..............//2-vazifa
}
... else - aks holda

Dasturlashda Type(tip) tushunchasi

Dasturlashda Type(tip) tushunchasi

Dasturlar amallardan(operatsiyalar) tarkib topgan. Bu amallar xoh mantiqiy xoh algebraik amallar bo`lsin barchasi matematik amallardir. Demak bu yerda qiymatlar orasida amallar bajariladi. Qiymatlar esa ma`lum bir (type)tipga tegishli bo`lishi lozim. Bu tiplarni dasturlash tillari orqali kiritganda kompyuterga anglatish uchun uni qaysi tipga tegishli ekanligini ko`rsatib e`lon qilish muhim. Shu tiplarning biriga tegishli bo`lgan qiymatni ma`lum bir nom bilan atab e`lon qilinishi o`zgaruvchilar deyiladi. Bundan kelib chiqadiki eng sodda dastur yozish juda ham oson, biror tipga tegishli bo`lgan o`zgaruvchilarni e`lon qilib ular o`rtasida amallar bajarib natijani chiqarib qo`ysak bir dasturni tuzgan hisoblanaveramiz. Tiplar 2 turga bo`linadi. Reference Type, Value Type.
Reference Type - dinamik xotiradan foydalanib e`lon qilinadigan qiymatlar tipi.
Value Type - statik xotiradan foydalanib e`lon qilinadigan qiymatlar tipi.
Tizimli dasturlash tillar.
Muayyan bir kichik masalani yechish uchun mo`ljallangan dasturlarni yechishda  foydalaniladigan dasturlash tillari tizimli dasturlash tillaridir. Chunki kichik bir masala uchun OOP ga zarurat yo`q.  Asosan qo`shish, ayirish, ko`paytirish va bo`lish amallaridan foydalaniladi. Bu amallar value tiplar orasida bajariladi. (matematiklar barcha amallar qo`shish amalidan kelib chiqqan deb hisoblashadi : 3-2=3+(-2); 3*3=3+3+3; 4/2=(2+2)/2,...).
Bu turdagi dasturlarda oddiy(value) tiplardan foydalaniladi. (faqat asosiylarini keltirib o`tamiz):
Integer- butun sonlar tipi (masalan:...-23,-3,-2, 0, 3, 6, 8,...)
String - qatorlar, so`zlar, matnlarni o`z ichiga oladi (masalan: "2312","fgtds","fg4fd"...)
Char - 1 ta belgiga teng (masalan: 'd','4','^',...)
Double - haqiqiy sonlardan iborat
va Massivlar
Massivlar haqida
Massivlar bu bir tipgagi qiymat yoki obyektlarning  kollektsiyasi ya`ni ketma-ket joylashgan ro`yxati. Ular ixtiyoriy tip bo`lishi mumkin, ammo hammasi bir tipga tegishli bo`ladi xolos.
masalan:
Integer[] a={1,2,3,4,5,6,7,8,9,34}; bu butun sonlarning massivi
Double[] a={1,2,3,4,565.5,343.6,4.54,45.65}; bu haqiqiy sonlarning massivi
String[] a={"34","sdfsa","344df3"};  qatorlar massivi.
Massivlar ham value tiplar oilasiga kiradi.
Massivlar avvaliga tushunarsiz tuyuladi, buning sababi har bir elementini maxsus tip bo`lsa kerak deb hisoblashda. Butun sonlarning massivi - har bir elementi butun son, qatorlar(string) massivi esa har bir elementi qator. Xuddi shunga ko`ra qaysi bir class ning massivi ham har  bir elementi shu class obyektlaridan tashkil topgan bir massiv deb qabul qilinadi.
Undan tashqari pozitsiya 0 dan boshlanadi. 1- element 0-pozitsiya deb qabul qilingan.
0-positsiya yo`qligi sababli massivda "-1" -indexli element bo`lmaydi, ya`ni "-1" -index mavjud emas.
a[0]=1; (birinchi elementni qiymati o`zgartirildi)
 b[3]="dsfsdf";(to`rtinchi elementni qiymati o`zgartirildi)
....

c[0]=new Tom(); c[0].Name="Tom";

Dasturlash tillari haqida

Dasturlash tillari haqida.


Muayyan dastur shaxsiy kompyuterga o`rnatilib ishga tushirilganidan so`ng u Operatsion Sistema(OS) ga biror algoritm asosida ketma-ketlik va bog`liqlik bilan buyruqlarni berib boradi, OS esa uni tartib bo`yicha bajaradi. Bi shu algoritmni kompyuterga biror bir til orqali izohlab kiritamiz. Bu til esa dasturlash tili deyiladi. Dasturlash tillari juda ko`p, ammo barcha tillar oxirida yagona tilga o`giriladi, tarjima qilinadi (translation), bu til Assembler tilidir. Assembler tili - mashina tiliga eng yaqin til, ya`ni mashinaga to`g`ridan-to`g`ri buyruq beradigan til. E`tibor bering OS ga emas, mashinaga buyruq beradigan til deb tushuntirildi. Bu tarjimani OS yoki biror dastur amalga oshirishi mumkin. Assembler dasturlash tili juda ham murakkab til bo`lganligi sababli uni o`rganish, o`rgatish juda kam uchraydi. Shu Assembler tilininig ustiga boshqa dasturlash tillari yozilgan va ular foydalanishga ancha qulay bo`lganligi sababli hozirgi vaqtda ancha ommalashib, rivojlanib bormoqda...

Zamonaviy dasturlash tillari C, C++, C#, Java, Php, ...

C, C++ dan biror bir service(kompyuterda ishga tushirilganda kerakli natijani qaytaruvchi dastur), driver(texnik qurilmalar va OS ni buyruq va ma`lumotlarni almashib turishini ta`minlovchi dastur), mikrosxemalarga dastur yozganda(robotlashtirish, avtomatlashtirish) va  kuchli matematik amallar yozganda keng foydalaniladi.
Java va C# dan foydalanuvchilar uchun dastur yoki saytlar tuzishda qo`llaniladi. C# dasturlash tili Java dan imkoniyatlari tomonidan ancha oldinlab ketgan, ammo faqat Windows OS da ishlaydi xolos. Java esa har qanday sistemada ishlayveradi. Undan tashqari C# ni o`zi ham, unda tuzilgan dasturlarni ishlatilishi uchun o`rnatiladigan qobiq dasturlar ham pullik, Java da esa tekinlari ham bor.... Xavfsizlik va tezlik tomoni muhim bo`lgani sababli bunga ham e`tibor qaratish lozim. Windows OS muhitida C# har tomonlama kuchliroq ammo Linux OS da esa C# ishlamaganligi sababli taqqoslay olmaymiz. Windows va Linux OS larni taqqoslaydigan bo`lsak - Windows shaxsiy kompyuterlarda foydalanish ma`qulroq, chunki server versiyasi Linuxdan har tomonlama orqada qoladi. Shu sababli Java da katta va xavfsizligi o`ta muhim bo`lgan saytlar yoziladi. Sabab Javada emas, OS da bo`lganligi sababli... Yaqinda C# ham platforma tanlamaydigan bo`lib chiqmoqda, ko`ramiz natija qanaqa bo`ladi endi...
PHP - kichik saytlarni, web sahifalarni, tezda bitkazilishi kerak bo`lgan ma`lumotnoma,reklama saytlarini tuzish uchun foydalaniladigan dasturlash tili....

Dasturlash tillarida xotira tushunchasi

Dastur ishlashi uchun xotira eng muhim subyektlardan biri, chunki xotirasiz hech narsa ishlamaydi, biror amal bajarishda faqat xotiradagi qiymatlar ustida amal bajariladi, xotirada bo`lmagan narsalarni dasturlash tillari xato deb hisoblaydi. Demak har bir foydalanmoqchi bo`lgan qiymatimizni avval xotiraga olib keyin foydalanar ekanmiz.
2 xil xotira mavjud. Dinamik(Dynamic) va Statik(Static) xotira turlari.
Statik xotira chegaralangan va u to`lgan sari dasturning ishlash tezligi pasayishi mumkin. Dinamik xotira esa chegaralanmagan va undan foydalanishda bizda imkoniyatlar mavjud. Statik xotirada e`lon qilingan(saqlangan) qiymat statik xotiraning o`zida saqlanadi. Dinamik xotirada saqlanganda esa qiymatning o`zi keng maydondek tasavvur qilinadigan dinamik xotiraga va uning manzili esa statik xotirada saqlab qo`yiladi. Shu tufayli katta ma`lumotlar bilan ishlaganda ham statik xotirani tejab foydalanamiz. Dinamic xotirada e`lon qilingan o`zgaruvchi o`chirib yuborilsa statik xotiradagi dinamik xotiraning adresi o`chiriladi ammo dinamik xotiradagi qiymat qolib ketadi. Bir nechta shu kabi holatlar yuzaga kelsa dinamik xotirada keraksiz ma`lumot qolib ketadi, buni ham tozalashga to`g`ri keladi. C++ da bularni dasturchining o`zi hisobga olib tozalab ketishi lozim, Java,C# da esa hisobga olingan va avtomatik ravishda ro`y beradi (Garbage Collect algoritmi asosida chiqindilardan tozalab turiladi) . Ya`ni har bir blok yopilishida o`sha blok ichidagi chiqindilar tozalab ketiladi. Demak dinamik xotirada biror qiymat o`zgartirilsa statik xotiradagi qiymat(ya`ni dinamik xotiradagi qiymatning manzili) o`zgartirilmasdan dinamik xotiradagi qiymat o`zgartirib qo`yiladi.

Tizimli va Obyektga yo`naltirilgan dasturlash tillari.

Biz yuqorida dasturlash tili deganda qisqacha ma`lumotga ega bo`ldik. Demak algoritmlarni biror bir qonuniyat bo`yicha kompyuterga bajarishi uchun buyruqlar asosida izohlab beriladigan til - dasturlash tili. Dasturlash tillari insonlar kashf qilinganida tizimli dasturlash bo`lgan xolos. Hisob-kitob, qo`shish-ayirish va shunga o`xshash oddiy narsalar bo`lgan. Obyekt tushunchasi bo`lmagan. Faqat biror bir ma`lumotni saqlab undan foydalanish bo`lgan xolos. Bular Tizimli dasturlash deyilgan.

Undan so`ng dasturlar rivojlangan va ba`zi dasturlar murakkab dasturning bir qismi(funksiyasi) bo`lib qolgan. Shunda funksiya kiritilgan, undan so`ng to`plamlardan foydalanishga ehtiyoj sezilgan. Qaysidir bir ma`lumotlar to`plamini biror tipga tegishli deb shunaqa to`plam hosil qilish fikrini ilgari surib struct, class tushunchalari kiritilgan. Struct(struktura) Class(klass)dan biroz oldinroq kiritilgan va OOP ga aloqasi yo`q. Struct bilan Class ning farqini ko`rishda Tizimli va OOP ni farqini bilib olamiz.

Saturday, March 1, 2014

Windwos OS da Maven qanday o`rnatiladi?

  Maven nima?
  -----------
  Maven - dastur strukturasini boshqaruv uskunasi. Unda Project Object Model(POM)
  tushunchasi mujassamlashgan. Maven projectning build strukturasini boshqara oladi.
  Shuningdek ma`lumotlarning markaziy bo`limidan xabar va ma`lumotlar bilan tanishamiz:

   Ma`lumotlar
  -------------
  Eng oxirgi ma`lumotlar va yangiliklarni http://maven.apache.org/ saytidan olamiz.

  O`zgarishlar
  -------------
  Barcha o`zgarishlar va yangilanishlar ro`yxatini http://maven.apache.org/release-notes.html saytidan
  ko`ramiz.

Apache Maven Windows OS da o`rnatishni talab qilmaydigan service componenti, siz internetdan Maven ning zip formatdagi arxiv faylini ko`chirib olib kompyuteringizda arxivdan chiqarasiz va "Windows environment path variable" ni configuratsiya qilasiz.

Quyidagilardan foydalanilgan:




  • JDK 1.6
  • Maven 2.2.1
  • Windows 7
  • P.S: Shuningdek Maven 3 dan foydalanilgan.


    JDK va JAVA_HOME

    JDK o`rnatilganligiga ishonch hosil qilib "Windows environment path variable" ga JAVA_HOME va MAVEN_HOME parametrlarini qo`shiladi.
    JAVA_HOME - JDK ning manzili
    MAVEN_HOME - Maven papkasining manzili



    So`ng shu yerda PATH parametriga Maven papkasining bin catalogini ham qo`shib qo`yish zarur.


    Bu ketma-ketliklarni tartib bilan bajarganingizdan so`ng, maven sizning mashinangizda o`rnatildimi yo`qmi quyidagi komanda bilan tekshirib ko`rasiz. mvn –version“. 
    C:\Documents and Settings\mkyong>mvn -version
    Apache Maven 2.2.1 (r801777; 2009-08-07 03:16:01+0800)
    Java version: 1.6.0_13
    Java home: C:\Program Files\Java\jdk1.6.0_13\jre
    Default locale: en_US, platform encoding: Cp1252
    OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"
    Agar shunga o`xshash natija qaytarsa demak bu muvaffaqiyatli yakunlanganligini bildiradi.