Algoritmlash asoslari


Download 1.32 Mb.
bet8/16
Sana12.06.2020
Hajmi1.32 Mb.
#117719
1   ...   4   5   6   7   8   9   10   11   ...   16
Bog'liq
Algoritmlash asoslari

yur() metodidan yugur() metodiga o’tganda yoki to’xta() metodiga o’tganda uning tezligi o’zgaradi. Shu va shunga o’xshash ob’yektlar o’zgaruvchilar deb yuritiladi.

Source code

   

  • public class Inson{

  •  

  • int tezlik=0;

  •  

  • public void yur(){

  •  

  • tezlik=5;

  •  

  • }

  •  

  •  

  • public void yugur(){

  •  

  • tezlik=15;

  •  

  • }

  •  

  • public void yur(){

  •  

  • tezlik=0;

  •  

  • }

  •  

  • }

“instance variable” – o’zgaruvchi namuna olish kompilyatsiya vaqtida xotiradan joy olmaydi. O’zgaruvchilarimizni ob’yekt sifatida qaraganimizda runtime (dastur ish payti) paytida tezkor xotiradan joy oladi.
Javada funksiyalar (Method)

Funksiyalar – ob’yektimiz nimalar qila olishini izohlaydi, masalan, Inson haqida yozgan qoralamamizda insonni yura olishi va boshqa harakatlarini keltirganmiz. Aynan ana o’sha qila oladigan ishlarini Metodlar orqali ifodalaymiz. Masalan quyida yur() metodi keltirilgan.

Funksiyalarning imkoniyatlari 

  • Kodni qayta ishlash

  • Kodni optimallashtirish (muvofiqlashtirish)

Ob’yekt va klass’ga misol

Bu misolda student  klassidan ikkita ob’yekt yaratildi  va insertRecord funnksiyasi orqali boshlang’ich qiymatlarni o’zlashtirildi. displayInformation funksiyasidan foydalanib ekranda qimatlarni chop etiladi.

 Source code

   

  • class Student{

  •  

  • int rollno;

  •  

  • String name;

  •  

  • void insertRecord(int r, String n){ //method

  •  

  • rollno=r;

  •  

  • name=n;

  •  

  • }

  •  

  • void displayInformation(){System.out.println(rollno+" "+name);}//method

  •  

  • public static void main(String args[]){

  •  

  • Student s1=new Student();

  •  

  • Student s2=new Student();

  •  

  • s1.insertRecord(111,"Karan");

  •  

  • s2.insertRecord(222,"Aryan");

  •  

  • s1.displayInformation();

  •  

  • s2.displayInformation();

  •  

  • }

  •  

  • }

Ekranda :

111 Karan

222 Aryan
Meros olish (Inheritance)

Ma’lum ob’yekt asosida boshqa ob’yektni yaratish jarayoniga aytiladi.  Bunda ob’yektning  barcha xususiyatlarini meros qilib oladi ya’ni private(shaxsiy) bo’lmagan o’zgaruvchilari funksiyalari konstantalarini bemalol foydalanish. Meros olishdan dastur ishchi vaqtida Ko’p formalikdan foydalaniladi.

Ko’p formalik (Polymorphism)

OOPning uchinchi ustuni. Yuqorida berilgan ustunlar bilan doim birga yuradi. Ma’lum ob’yekt asosida boshqa ob’yektni yaratish jarayoniga aytiladi. Bir klassning boshqa klassdan meros olishi yordamida amalga oshiriladi. Meros olingan ob’yekt ota ob’yektdagi xususiyatlarni tanlovga ko’ra meros oladi. Masalan, avtoulov bu ota ob’yekt. Bu ob’yekt yordamida yengil mashina, yuk mashinasi, poyga mashinasi kabi boshqa ob’yektlarni yaratib olishimiz mumkin. Ota klassda bo’lgan 4 g’ildirak farzand klasslarda ham mavjud bo’ladi. Ya’ni poyga mashinasi, avtoulovdan g’ildiraklarni meros oladi.

Mavhumlik – Abtraksiya (Abstraction)

Ob’yekt bu real jism. Abstraksiya esa ushbu jismni reallikdan uzoq deb tassavur qilib, u haqida fikr yuritishga aytiladi. Abstraksiyaga fikrlar to’plami sifatida ham qarasa bo’ladi.. misol uchun telefon jiringlasa, telefonga qo’ng’iroq bo’layotganini bilamiz lekin uning ichida nima jarayon bo’layotganini bilmaymiz.



Enkapsulyatsiya (Encapsulation)

Ma’lumotlar va funksiyalarni bir komponent ichiga yig’ishga atyiladi. Buning uchun klasslardan foydalaniladi. Enkapsulatsiya tanlov asosida classning ba’zi xususiyatlarini foydalanuvchidan yashirish imkonini beradi. Bunga misol qilib, ustidan maxsus modda bilan o’ralgan dorilarni keltirsak bo’ladi.

manba: oddiy.blogspot.com, normatov.com ‘dan foydalanildi.

13-dars - Javada nomlash konsepsiyalari
Universitetni tamomlab endigina ish boshlagan paytlarimizda nomlash konsepsiyalari – klass'lar, metodlar(funksiya), o'zgaruvchilar, constantalar nomlanish standartlari to'g'risida amaliy tasavvurga ega emas edik. Dastur tuzish davomida standart nomlar muhim emas deb hisoblardik, chunki dastur ishlashi uning nomiga bog'liq emas edi. Ishlash jarayonida ustozlarim vaqtlari, bilimlari va albatda asablarini ayamasdan standart nomlash, kodlarni chiroyli yozish (kodlarni formatlab yozish) usullarini o'rgatishdi. O'rganganlarim asosida tayyorlagan maqolani sizlarga havola etmoqchiman. 

Dastlab nomlanish standartlari nima uchun kerakli ekanini bilib olishimiz kerak. Odatda katta dasturlar dasturchilar jamoasi bilan yoziladi. Siz yaratgan klass'larni, o'zgaruvchilarni, funksiyalarni va boshqalarni bir qarashda nima vazifa bajarishini va u nima ekanligini jamoaning har bir a'zosi oson tushuna olishi va undan bemalol foydalanishi uchun kerak. Agar dasturni bir o'zingiz yozgan taqdirda ham, dasturingiz kattalashib ketsa yaratilgan klasslar, o'zgaruvchilar nima vazifa bajarishini yoddan ko'tariladi. Bunday holatlarni oldini olish maqsadida nomlash standartlari ishlab chiqilgan.


Nomi

Nomlanish satandarti

Class

Bosh harflar bilan boshlanadi va ot so'z turkumida bo'lishi kerak.

Misol: Color, Employee, Button va h.k

Interface

Bosh harflar bilan boshlanadi va sifat so'z turkumida bo'lishi kerak.

Misol: Runnable, Remote, ApplicationListener

Method

Kichik harflar bilan boshlanadi va fe'l so'z turkumida bo'ladi kerak.

Misol: main(), action() , print() va h.k

O'zgaruvchilar

Kichik harflar bilan boshlanishi kerak. Misol: firstName, lastName va h.k

Paket

Kichik harflar bilan yoziladi. Misol: util, java, sql, gwt va h.k

Constant'lar

Bosh harflar bilan yoziladi. Misol: YELLOW, MAX_NUMBER va h.k


CamelCase nomlash standarti Javada CamelCase nomlash standartidan class, metod, o'zgaruvchi, constant, interface'larni nomlashda foydalaniladi. Bu uslub ikkita so'zni bir biridan ajratib turadi. Bunda ikkinchi so'z har doim bosh harf bilan boshlanadi. Misol: actionPerformed(), firstName, ActionEvent, ActionListener, …,
14-dars - Javada Yuklanma funksiya (Method Overloading).
Klass ichida nomi va funksiya turi(data type) bir xil bo'lgan ikki yoki undan ortiq funksiyalar bo'lsa, bunday funksiyalar yuklanma funksiyalar(method overloading) deyiladi.

Yuklanma funksiyalar bir-biridan farqi quyidagicha:

  • Parametrlari bilan farq qiladi;

  • Ma'lumot turi;

  • Ma'lumot turlari ketma-ketligi bilan.

Yuklanma funksiyani – static ko'pformalik (static polymorphism) deb ham qarashimiz mumkin.
Ta'rif:

  • Static ko'pformalik kompilyatsiya vaqtidagi bog'lanish yoki erta bog'lanish(binding) sifatida ham ma'lum

  • Static bog'lanish(binding) kompilyatsiya vaqtida sodir bo'ladi. Funksiyalar yuklanma static bog'lanishga(binding) misol bo'ladi.

Yuqorida keltirib o'tilgan ta'riflar barchasi yuklanma funksiyani argumetlari har xil bo'lgan holatlar uchun mos keladi. Endi sizlar bilan har bir holatni birma bir ko'rib chiqamiz

Yuklanma funksiya parametiri va argumentlari bilan farq qilishga misol

Funksiya nomlari o'xshash lekin argumetlari bilan farq qiladi

class DisplayOverloading {

public void disp(char c)

{

System.out.println(c);

}

public void disp(char c, int num)

{

System.out.println(c + " "+num);

}

}
class Sample

{

public static void main(String args[])

{

DisplayOverloading obj = new DisplayOverloading();

obj.disp('a');

obj.disp('a',10);

}

}

Ekrada :

a

a 10

Yuqoridagi misolda disp() funksiyasi yuklanma funksiya shaklida yaratilyapti. Bunda funksiyalar bir biridan argumetlar soni bilan farqlanyapti.

Yuklanma funksiya – ma'lumot turlari bilan farq qilishi

class DisplayOverloading2

{

public void disp(char c)

{

System.out.println(c);

}




public void disp(int c)

{

System.out.println(c );

}

}




class Sample2

{

public static void main(String args[])

{

DisplayOverloading2 obj = new DisplayOverloading2();

obj.disp('a');

obj.disp(5);

}

}

Ekranda:

a

5

Yuklanma – ma'lumot turlarining ketma-ketligi bilan farq qilishi.

class DisplayOverloading3

{

public void disp(char c, int num)

{

System.out.println("Bu birinchi disp() methodi ");

}

public void disp(int num, char c)

{

System.out.println("Bu ikkinchi disp() methodi " );

}

}

class Sample3

{

public static void main(String args[])

{

DisplayOverloading3 obj = new DisplayOverloading3();

obj.disp('x', 51 );

obj.disp(52, 'y');

}

}

Ekranda:

Bu birinchi disp() methodi

Bu ikkinchi disp() methodi

Bu misolda yuklanma funksiyasi shaklida yaratilgan disp() funksiyalari bor ular bir-biridan ma'lumot turlarining ketma-ketligi bilan farq qilyapti. Ya'ni ma'lumot turlarini joylashuvi.

Ishlatish mumkin bo'lgan va mumkin bo'lmagan yuklanma funksiyalarni qisqacha ta'riflari

1 – holat:

int mymethod(int a, int b, float c)

int mymethod(int var1, int var2, float var3)

Natija: Compile time error. Chunki bu funksiyalarni argumentlari, ma'lumot turlarini ketma-ketligi va ma'lumot turlari bir xil. Dastur ishga tushgan paytida qaysi bir funksiyaga murojaat qilishni tanlay olmaydi ya'ni bu funksiyalarni farqlay olmaydi.

2 – holat:

int mymethod(int a, int b)

int mymethod(float var1, float var2)

bu funksiyalar ishalatishga yaroqli chunki, funksiyalar bir-biridan ma'lumot turlari bilan farq qilyapti.

3 – holat:

int mymethod(int a, int b)

int mymethod(int num)

bu funksiyalar ishalatishga yaroqli chunki, funksiyalar bir-biridan raqamlar argumenti bilan farq qilyapti.

4 -holat:

float mymethod(int a, float b)

float mymethod(float var1, int var2)

bu funksiyalar ishalatishga yaroqli chunki, funksiyalar ma'lumotlar ketma-ketligi bilan farq qilyapti(joylashuvi)

5 – holat:

int mymethod(int a, int b)

float mymethod(int var1, int var2)

Natija: Compile time error. Chunki bu funksiyalar turli xil turdagi ma'lumotlarni qaytaryapti birinchi funksiya ikkinchisi float.

  • void sum(int a,long b)

  • void sum(long a,int b)

Natija: Compile time error. Bu holatda ma'lumot turlari har xil bo'lgani bilan ikkala funksiya ham butun sonlarni saqlovchi tur shuning uchun dastur xato beradi.
15-dars - Javada konstruktor.
Konstruktor klass nomidagi funskiyadir. Javada konstruktorlar ob’yektni ishga tushurish uchun maxsus usuldir. Java konstruktor ob’yekt yaratish vaqtida chaqiriladi

Javada konstruktor yaratish qoidalari:

  • Konstruktor klass nomi bilan o'xshash bo'lishi kerak

  • Konstruktor noaniq ma'lumot turiga ega bo'lishi kerak

Konstruktorni ikkita turi mavjud:

  • Argumentsiz konstruktorlar

  • Parametrlik konstruktorlar

Konstruktorga oddiy misol:

Bu misolda argumentsiz Bike1 konstruktor yaratildi. Ob’yekt yaratilishi vaqtida konstruktorni ishlatadi.

Source code

   

  • class Bike1 {

  •  

  • Bike1() {

  • System.out.println("Bike is created");

  • }

  •  

  • public static void main(String args[]) {

  •  

  • Bike1 b = new Bike1();

  •  

  • }

  •  

  • }



Majburiy konstruktorga misol

Majburiy konstruktorga misol

Source code

   

  • class Student3 {

  •  

  • int id;

  •  

  • String name;

  •  

  • void display() {

  • System.out.println(id+" "+name);

  • }

  •  

  • public static void main(String args[]) {

  •  

  • Student3 s1=new Student3();

  •  

  • Student3 s2=new Student3();

  •  

  • s1.display();

  •  

  • s2.display();

  •  

  • }

  •  

  • }

ekranda:

0 null

0 null


Parametrga ega bo’lgan konstruktor

Source code

   
1   ...   4   5   6   7   8   9   10   11   ...   16




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