Ob’ektga yo‘naltirilgan dasturlash (polimorfizm va uning turlari)




Download 24.46 Kb.
Sana04.11.2023
Hajmi24.46 Kb.
#94265
Bog'liq
Ob’ektga yo‘naltirilgan dasturlash polimorfizm va uning turlari
xudo xoxlasa tushadi99%, 3-labarotoriya ishi Saralash usul va algoritmlarini tadqiq qilis, cmd buyruqlari, Incremental model nima, 1matematik, word sAM 1 savol, Документ Microsoft Word (4), Ma\'ruzalar (2), ЛАБОРАТОРНАЯ РАБОТА N1, Dasturlash 2, Ariza, Qalandarova Gulshoda, 1648631455, 1650692784, 1651669892 (2)

Ob’ektga yo‘naltirilgan dasturlash (polimorfizm va uning turlari)
Polimorfizm - bu ob'ektga yo'naltirilgan dasturlashda (OYD) asosiy tushuncha bo'lib, u turli sinflar ob'ektlarini umumiy supersinf ob'ektlari sifatida ko'rib chiqishga imkon beradi. Bu dasturiy ta'minot tizimlarini loyihalashda moslashuvchanlik va kengayishni ta'minlab, har xil turdagi ob'ektlar bilan ishlay oladigan kodni yozish imkonini beradi.
Polimorfizmga usulni bekor qilish va usulni ortiqcha yuklash orqali erishiladi.
1. Usulni bekor qilish: Meros quyi sinfga o'zining yuqori sinfida allaqachon aniqlangan usulning aniq amalga oshirilishini ta'minlash imkonini beradi. Subklass o'z amalga oshirishni ta'minlash orqali usulni bekor qiladi, bu kichik sinfga xosdir. Ob'ektda usul chaqirilganda, tegishli amalga oshirish ob'ektning haqiqiy turiga qarab ish vaqtida aniqlanadi.
2. Metodni haddan tashqari yuklash: Usulni haddan tashqari yuklash bir xil nomga ega, ammo turli parametrlarga ega bo'lgan bir nechta usullarning sinfda birga bo'lishiga imkon beradi. Usullar turli xil ilovalarga ega bo'lishi yoki qabul qilingan parametrlarga qarab turli harakatlarni bajarishi mumkin. Tegishli usul chaqiriladigan argumentlar soni, turi va tartibi asosida kompilyatsiya vaqtida aniqlanadi.
Polimorfizm kodni qayta ishlatishga imkon beradi, chunki turli sinflar ob'ektlari umumiy superklass orqali bir xilda ko'rib chiqilishi mumkin. U kodning moslashuvchanligi va kengaytirilishini ta'minlaydi, chunki yangi sinflar superklass interfeysiga tayanadigan mavjud kodni o'zgartirmasdan qo'shilishi mumkin.
Polimorfizmni ko'rsatadigan misol:
class Shape {
public void draw() {
System.out.println("Drawing a shape");
}
}
class Circle extends Shape {
@Override
public void draw() {
System.out.println("Drawing a circle");
}
}
class Rectangle extends Shape {
@Override
public void draw() {
System.out.println("Drawing a rectangle");
}
}
public class Main {
public static void main(String[] args) {
Shape shape1 = new Circle();
Shape shape2 = new Rectangle();
shape1.draw(); // Output: Drawing a circle
shape2.draw(); // Output: Drawing a rectangle
}
}
Bu misolda "Shape" klassi supersinf, "Circle" va "To'rtburchak" esa "Shape" dan meros bo'lgan quyi sinflardir. "draw()" usuli har bir kichik sinfda ma'lum bir amalga oshirishni ta'minlash uchun bekor qilinadi. `shakl1` va `shakl2` ob`ektlari `shakl` deb e`lon qilingan bo`lsa ham, ularga mos ravishda `Ayra` va `To`rtburchak` misollari tayinlanishi mumkin. Ushbu ob'ektlarda "draw()" usuli chaqirilganda, ob'ektning haqiqiy turiga qarab tegishli amalga oshirish chaqiriladi.
Bu polimorfizmni ko'rsatadi, chunki turli sinflar ob'ektlari umumiy "Shape" superklassining ob'ektlari sifatida ko'rib chiqiladi va tegishli usulni amalga oshirish ish vaqtida aniqlanadi.
class Shape {
calculateArea() {
// Base method for calculating the area
}
}
class Rectangle extends Shape {
constructor(width, height) {
super();
this.width = width;
this.height = height;
}
calculateArea() {
return this.width * this.height;
}
}
class Circle extends Shape {
constructor(radius) {
super();
this.radius = radius;
}
calculateArea() {
return Math.PI * this.radius ** 2;
}
}
class Triangle extends Shape {
constructor(base, height) {
super();
this.base = base;
this.height = height;
}
calculateArea() {
return (this.base * this.height) / 2;
}
}

// Example usage of the classes


const rectangle = new Rectangle(5, 10);
const rectangleArea = rectangle.calculateArea();
console.log("Rectangle area:", rectangleArea);

const circle = new Circle(3);


const circleArea = circle.calculateArea();
console.log("Circle area:", circleArea);

const triangle = new Triangle(4, 6);


const triangleArea = triangle.calculateArea();
console.log("Triangle area:", triangleArea);

Ushbu kodni ishga tushirganingizda:



Har bir sinf "Shape" asosiy sinfidan meros oladi va har bir shakl uchun formulaga muvofiq "calculateArea()" usulini bekor qiladi. Sinflarning namunalarini yaratishingiz va tegishli shaklning maydonini olish uchun ularning har biri uchun "calculateArea()" usulini chaqirishingiz mumkin.
Mavzu bo’yicha topshiriqlar:
1. Shakl maydonini qaytaradigan "hisoblash_area()" usuli bilan asosiy "Shape" sinfini yarating. "To'rtburchak", "Doira" va "Uchburchak" hosila sinflarini yarating. Har bir sinfda "calculate_area()" usulini bekor qiling, shunda u mos keladigan shakl maydonini qaytaradi.
2. “eat()” usuli bilan “Fruit” tayanch sinfini yarating, u meva yeyilganida xabarni ko‘rsatadi. "Olma", "Armut" va "Apelsin" hosila sinflarini yarating. Har bir sinfda "eat()" usulini bekor qiling, shunda u meva yeb bo'lganida xabarni ko'rsatadi.
3. Tegishli tovushni chiqaradigan "make_sound()" usuli bilan "Animal" asosiy sinfini yarating. "It", "Mushuk" va "Ot" hosila sinflarini yarating. Har bir sinfda "make_sound()" usulini bekor qiling, shunda u tegishli tovushni chiqaradi.
4. Chizilgan shakl haqidagi xabarni ko'rsatadigan "draw()" usuli bilan asosiy "Shape" sinfini yarating. "Doira", "To'rtburchak" va "Uchburchak" hosila sinflarini yarating. Har bir sinfda "draw()" usulini bekor qiling, shunda u shakl chizilganda xabarni chop etadi.
5. Tashish usuli haqida xabarni ko'rsatadigan "move()" usuli bilan "Transport" asosiy sinfini yarating. Avtomobil, Velosiped va Samolyot uchun olingan sinflarni yarating. Har bir sinfda "move()" usulini bekor qiling, shunda u tegishli transport vositasining harakatlanish rejimi haqida xabarni chop etadi.
6. Shakl o‘lchamini o‘zgartiruvchi resize() usuli bilan asosiy Shape sinfini yarating. "Doira", "To'rtburchak" va "Uchburchak" hosila sinflarini yarating. Har bir sinfda "resize()" usulini bekor qiling, shunda u mos keladigan shaklning o'lchamini o'zgartiradi.
7. Avtomobil to'xtaganligi haqidagi xabarni ko'rsatadigan "stop()" usuli bilan "Avtomobil" tayanch sinfini yarating. Avtomobil, Velosiped va Samolyot uchun olingan sinflarni yarating. Har bir sinfda "stop()" usulini bekor qiling, shunda u tegishli transport vositasi to'xtaganligi haqidagi xabarni chop etadi.
8. Meva pishganda xabarni ko'rsatadigan "ripen()" usuli bilan "Fruit" asosiy sinfini yarating. "Olma", "Armut" va "Apelsin" hosila sinflarini yarating. Har bir sinfda "ripen()" usulini bekor qiling, shunda u meva pishganida xabarni chop etadi.
9. Hayvon oziqlanganda xabarni ko'rsatadigan "feed()" usuli bilan "Hayvon" asosiy sinfini yarating. "It", "Mushuk" va "Ot" hosila sinflarini yarating. Har bir sinfda "feed()" usulini bekor qiling, shunda u hayvon oziqlanganda xabarni ko'rsatadi.
10. Shakl rangini o'zgartiradigan change_color() usuli bilan asosiy Shape sinfini yarating. "Doira", "To'rtburchak" va "Uchburchak" hosila sinflarini yarating. Har bir sinfda "change_color()" usulini bekor qiling, shunda u mos keladigan shaklning rangini o'zgartiradi.
11. Sotilgan meva haqidagi xabarni aks ettiruvchi “sell()” usuli bilan “Fruit” asosiy sinfini yarating. "Olma", "Armut" va "Apelsin" hosila sinflarini yarating. Har bir sinfda "sell()" usulini bekor qiling, shunda u sotilgan meva haqida xabarni ko'rsatadi.
12. Uxlayotgan hayvon haqidagi xabarni chop etadigan “sleep()” usuli bilan “Hayvon” tayanch sinfini yarating. "It", "Mushuk" va "Ot" hosila sinflarini yarating. Har bir sinfda "sleep()" usulini bekor qiling, shunda u uxlab yotgan hayvon haqida xabar chiqaradi.
13. Shakl shaklini o'zgartiradigan change_shape() usuli bilan asosiy Shape sinfini yarating. "Doira", "To'rtburchak" va "Uchburchak" hosila sinflarini yarating. Har bir sinfda "change_shape()" usulini bekor qiling, shunda u mos keladigan shaklning shaklini o'zgartiradi.
14. “Yonilg‘i quyish()” usuli bilan “Transport” tayanch sinfini yarating, bunda avtomobilga yonilg‘i quyilganligi haqidagi xabar paydo bo‘ladi. Avtomobil, Velosiped va Samolyot uchun olingan sinflarni yarating. Har bir sinfda yonilg'i quyish() usulini bekor qiling, shunda u mos keladigan avtomobilga yonilg'i quyilganligi haqidagi xabarni chop etadi.
15. Shaklning chiziq qalinligini o'zgartiradigan "change_line_thickness()" usuli bilan asosiy Shape sinfini yarating. "Doira", "To'rtburchak" va "Uchburchak" hosila sinflarini yarating. Har bir sinfda "change_line_thickness()" usulini bekor qiling, shunda u mos keladigan shaklning chiziq qalinligini o'zgartiradi.
16. Meva sifati haqidagi xabarni aks ettiruvchi “check_quality()” usuli bilan “Fruit” asosiy sinfini yarating. "Olma", "Armut" va "Apelsin" hosila sinflarini yarating. Har bir sinfda "check_quality()" usulini bekor qiling, shunda u meva sifati haqidagi xabarni chop etadi.
17. Hayvon o'ynayotgani haqidagi xabarni chop etadigan "play()" usuli bilan "Hayvon" asosiy sinfini yarating. "It", "Mushuk" va "Ot" hosila sinflarini yarating. Har bir sinfda "play()" usulini bekor qiling, shunda u tegishli hayvon o'ynayotgani haqidagi xabarni chop etadi.
18. Shakl o'rnini o'zgartiradigan change_position() usuli bilan asosiy Shape sinfini yarating. "Doira", "To'rtburchak" va "Uchburchak" hosila sinflarini yarating. Har bir sinfda "change_position()" usulini bekor qiling, shunda u mos keladigan shaklning o'rnini o'zgartiradi.
19. Tashish holati haqidagi xabarni aks ettiruvchi “check_status()” usuli bilan “Transport” tayanch sinfini yarating. Avtomobil, Velosiped va Samolyot uchun olingan sinflarni yarating. Har bir sinfda "check_status()" usulini bekor qiling, shunda u avtomobil holati haqida xabarni chop etadi.
20. Shaklning shaffofligini o'zgartiradigan change_opacity() usuli bilan asosiy Shape sinfini yarating. "Doira", "To'rtburchak" va "Uchburchak" hosila sinflarini yarating. Har bir sinfda "change_opacity()" usulini bekor qiling, shunda u mos keladigan shaklning shaffofligini o'zgartiradi.
Download 24.46 Kb.




Download 24.46 Kb.

Bosh sahifa
Aloqalar

    Bosh sahifa



Ob’ektga yo‘naltirilgan dasturlash (polimorfizm va uning turlari)

Download 24.46 Kb.