MODUL 2 LESSON 1
@MrTarmoqProgramming paradigms nima?
Programming paradigms – bu dasturlarni yozish uslub va usullari. Ular dasturlash tilining tamoyillarini belgilaydi.
Programming paradigmlarining turlari:
- Procedural Programming
- Object-Oriented Programming (OOP)
- Functional Programming
- 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?
OOP – obyektlar 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 Programming – immutable (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 Programming – asinxron (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:
- Encapsulation – Ma’lumotlarni yashirish va faqat kerakli qismlarga kirish imkonini berish.
- Abstraction – Keraksiz detallarni yashirish va faqat asosiy funksiyalarni ochish.
- Inheritance – Bitta class boshqa classning xususiyatlari va metodlarini meros qilib olishi.
- 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:
- Default Constructor
- No-Arg Constructor
- Parameterized Constructor
- Copy Constructor
- Constructor Chaining
- 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.