MODUL 2 LESSON 1

MODUL 2 LESSON 1

@MrTarmoq

Programming paradigms nima?

Programming paradigms – bu dasturlarni yozish uslub va usullari. Ular dasturlash tilining tamoyillarini belgilaydi.

Programming paradigmlarining turlari:

  1. Procedural Programming
  2. Object-Oriented Programming (OOP)
  3. Functional Programming
  4. Reactive Programming

Procedural Programming nima?

Procedural Programming – dastur qadam-baqadam bajariladigan funksiyalar va protseduralarga asoslangan dasturlash usuli.

Xususiyatlari:

  • Dastur bir nechta funksiyalar orqali bo‘linadi.
  • Data va funksiyalar ajralgan holda ishlaydi.
  • Kod qayta ishlatilishi qiyin bo‘lishi mumkin.

Misol (Java-da):

public class ProceduralExample {
    public static int add(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        int sum = add(5, 10);
        System.out.println("Natija: " + sum);
    }
}

OOP (Object-Oriented Programming) nima?

OOPobyektlar va ularning o‘zaro aloqasi asosida qurilgan dasturlash paradigmalaridan biri.

Xususiyatlari:

  • Encapsulation – ma’lumotlarni yashirish.
  • Inheritance – bir class boshqa classdan xususiyat olishi.
  • Polymorphism – bir funksiyani har xil usulda ishlatish.
  • Abstraction – keraksiz detallarni yashirish.

Misol (Java-da OOP):

class Car {
    String model;
    int speed;

    void drive() {
        System.out.println(model + " harakatlanmoqda.");
    }
}

public class OOPExample {
    public static void main(String[] args) {
        Car car1 = new Car();
        car1.model = "BMW";
        car1.drive();
    }
}

Functional Programming nima?

Functional Programmingimmutable (o‘zgarmas) ma’lumotlar va funksiyalar orqali dastur yozish paradigmasi.

Xususiyatlari:

  • O‘zgarmas (immutable) ma’lumotlar ishlatiladi.
  • Yon ta’sirsiz funksiyalar yoziladi.
  • Rekursiya va lambda funksiyalar keng qo‘llaniladi.

Misol (Java-da Functional Programming, Lambda expressions):

import java.util.Arrays;
import java.util.List;

public class FunctionalExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        numbers.stream().map(n -> n * n).forEach(System.out::println);
    }
}

Reactive Programming nima?

Reactive Programmingasinxron (asynchronous) dasturlar yozish paradigmasi bo‘lib, u hodisalarga (events) asoslanadi.

Xususiyatlari:

  • Ma’lumot oqimlari (streams) asosida ishlaydi.
  • Observer pattern yordamida hodisalarni kuzatish va ularga javob berish imkoniyati mavjud.
  • Asinxron (multi-threaded) dasturlar uchun mos keladi.

Misol (Java-da Reactive Programming, Project Reactor bilan):

import reactor.core.publisher.Flux;

public class ReactiveExample {
    public static void main(String[] args) {
        Flux<String> dataStream = Flux.just("A", "B", "C", "D");
        dataStream.subscribe(System.out::println);
    }
}

Procedural va Object-Oriented Programming farqi

OOP kontsepsiyalari qaysilar?

OOP ning asosiy kontsepsiyalari quyidagilar:

  1. Encapsulation – Ma’lumotlarni yashirish va faqat kerakli qismlarga kirish imkonini berish.
  2. Abstraction – Keraksiz detallarni yashirish va faqat asosiy funksiyalarni ochish.
  3. Inheritance – Bitta class boshqa classning xususiyatlari va metodlarini meros qilib olishi.
  4. Polymorphism – Bir xil metodni turli shakllarda ishlatish imkoniyati.

OOP ning asosiy ustunlari qaysilar?

OOP quyidagi ustunliklarga ega:

Kodni qayta foydalanish – Inheritance orqali kodni takror yozish shart emas.

Modullilik – Katta loyihalarni kichik qismlarga bo‘lib ishlash mumkin.

Moslashuvchanlik – Obyektlar orasidagi bog‘liqlik kamroq bo‘lgani uchun kodni oson o‘zgartirish mumkin.

Kengaytirish oson – Yangi xususiyatlar qo‘shish qulay.

Class deb nimaga aytiladi?

Class – bu obyektlarni yaratish uchun shablon (blueprint). U obyektning holati (fieldlar) va harakatlarini (methodlar) aniqlaydi.

Misol (Java-da Class yaratish):

class Car {
    String model;
    int speed;

    void drive() {
        System.out.println(model + " harakatlanmoqda.");
    }
}

Object deb nimaga aytiladi?

Object – bu classning aniq bir instance (namunasi) bo‘lib, u xususiyatlarga va metodlarga ega bo‘ladi.

Misol (Java-da Obyekt yaratish):

public class Main {
    public static void main(String[] args) {
        Car myCar = new Car(); // Obyekt yaratildi
        myCar.model = "Tesla";
        myCar.drive(); // Tesla harakatlanmoqda.
    }
}

Method deb nimaga aytiladi?

Method – bu obyekt bajaradigan harakatlar (functions in class).

Misol (Java-da Method yaratish):

class Calculator {
    int add(int a, int b) {
        return a + b;
    }
}

Field deb nimaga aytiladi?

Field – bu class ichidagi o‘zgaruvchilar bo‘lib, obyektning xususiyatlarini belgilaydi.

Misol (Java-da Field yaratish):

class Person {
    String name;  // Field
    int age;      // Field
}

1. Constructor nima uchun kerak?

Constructor – bu obyekt yaratilganda avtomatik ravishda chaqiriladigan maxsus method bo‘lib, u obyektning dastlabki holatini (initial state) o‘rnatish uchun ishlatiladi.

Asosiy vazifalari:

✔ Obyektni ishga tushirish (initialize)

✔ Obyekt xotiraga yuklanayotgan paytda unga qiymatlar berish

✔ Obyektni kerakli shartlarda yaratish

2. Constructorning qanaqa turlari bor?

Java-da quyidagi constructor turlari mavjud:

  1. Default Constructor
  2. No-Arg Constructor
  3. Parameterized Constructor
  4. Copy Constructor
  5. Constructor Chaining
  6. Compact Constructor (Java 14 dan boshlab)

3. Biz constructor yaratsak ham class ichida default constructor bo'ladimi?

Yo‘q. Agar o‘zimiz constructor yozsak, Java avtomatik ravishda default constructor yaratmaydi.

Misol:

class Example {
    Example() { // O‘zimiz constructor yaratdik
        System.out.println("Constructor chaqirildi!");
    }
}

// Main method
public class Main {
    public static void main(String[] args) {
        Example obj = new Example(); // Constructor avtomatik chaqiriladi
    }
}

🔹 Bu yerda Example() konstruktorini o‘zimiz yozganimiz uchun Java default constructor yaratmaydi.

4. Constructor qachon chaqiriladi?

Constructor obyekt yaratilganda avtomatik ravishda chaqiriladi.

Misol:

class Car {
    Car() {
        System.out.println("Car yaratildi!");
    }
}

public class Main {
    public static void main(String[] args) {
        Car myCar = new Car(); // Constructor avtomatik ishga tushadi
    }
}

📌 Natija: "Car yaratildi!"

5. Bitta Class ichida bir nechta constructor bo'lishi mumkinmi?

Ha, bir class ichida bir nechta constructor bo‘lishi mumkin. Bunga constructor overloading deyiladi.

Misol:

class Student {
    String name;
    int age;

    // 1-Constructor (Default)
    Student() {
        System.out.println("Default Constructor chaqirildi");
    }

    // 2-Constructor (Parametrli)
    Student(String n, int a) {
        name = n;
        age = a;
    }
}

6. Default Constructor qanaqa constructor?

Agar biz constructor yozmasak, Java avtomatik ravishda default constructor yaratadi.

Default constructor hech qanday parametr qabul qilmaydi va obyektni bo‘sh holda yaratadi.

Misol:

class Person {
    // Default constructor
    Person() {
        System.out.println("Default Constructor chaqirildi");
    }
}

public class Main {
    public static void main(String[] args) {
        Person p = new Person(); // Default constructor chaqiriladi
    }
}

📌 Natija: "Default Constructor chaqirildi"

7. No-Arg Constructor qanaqa constructor?

No-Arg Constructor bu default constructor bilan bir xil, lekin biz uni o‘zimiz qo‘lda yozamiz.

Misol:

class Animal {
    Animal() { // No-Arg Constructor
        System.out.println("No-Arg Constructor ishladi!");
    }
}

8. Parameterized Constructor qanaqa constructor?

Parameterized Constructor obyektni muayyan qiymatlar bilan yaratish uchun ishlatiladi.

Misol:

class Student {
    String name;
    int age;

    // Parametrli constructor
    Student(String n, int a) {
        name = n;
        age = a;
    }

    void display() {
        System.out.println("Ism: " + name + ", Yosh: " + age);
    }
}

public class Main {
    public static void main(String[] args) {
        Student s1 = new Student("Ali", 20);
        s1.display();
    }
}

📌 Natija: "Ism: Ali, Yosh: 20"

9. Copy Constructor qanaqa constructor?

Copy Constructor boshqa obyektning qiymatlarini yangi obyektga nusxalash uchun ishlatiladi.

Misol:

class Book {
    String name;
    int pages;

    // Parametrli Constructor
    Book(String n, int p) {
        name = n;
        pages = p;
    }

    // Copy Constructor
    Book(Book b) {
        name = b.name;
        pages = b.pages;
    }

    void display() {
        System.out.println("Kitob: " + name + ", Sahifa: " + pages);
    }
}

public class Main {
    public static void main(String[] args) {
        Book b1 = new Book("Java", 500);
        Book b2 = new Book(b1); // Copy constructor ishladi
        b2.display();
    }
}

📌 Natija: "Kitob: Java, Sahifa: 500"

10. Chaining Constructor qanaqa constructor?

Constructor Chaining – bitta constructor ichidan boshqa constructorni chaqirish.

Misol:

class Car {
    String model;
    int speed;

    // 1-Constructor
    Car() {
        this("Tesla", 200); // Ikkinchi konstruktorni chaqiryapmiz
    }

    // 2-Constructor
    Car(String m, int s) {
        model = m;
        speed = s;
    }

    void display() {
        System.out.println("Model: " + model + ", Speed: " + speed);
    }
}

public class Main {
    public static void main(String[] args) {
        Car c = new Car();
        c.display();
    }
}

📌 Natija: "Model: Tesla, Speed: 200"

11. Compact Constructor qanaqa constructor?

Compact Constructor Java 14 dan boshlab qo‘shilgan. U record class lar uchun ishlatiladi va oddiy constructorlarga qaraganda qisqaroq yoziladi.

Misol:

record Person(String name, int age) {
    // Compact Constructor
    Person {
        if (age < 0) {
            throw new IllegalArgumentException("Yosh manfiy bo'lishi mumkin emas!");
        }
    }
}

📌 Bu constructor obyekt yaratishda avtomatik chaqiriladi va yosh qiymatini tekshiradi.

Report Page