Sobes.tech
Junior

Намуди барномасозии объектӣ (OOP) дар Java чист?

sobes.tech AI

Ҷавоб аз AI

Барномаи объектӣ-ҳавсалаи дар Java асос ёфтааст, ки дар асоси консепсияи "объектҳо" сохта шудааст, ки маълумот (хусусиятҳо) ва усулҳо (амалҳо) доранд.

Принсипҳои асосии OOP дар Java:

  1. Инкапсулятсия: Гуфтан ва пинҳон кардани маълумот ва усулҳо дар дохили объект, ки танҳо тавассути интерфейсҳои муайяншуда дастрасӣ пайдо мекунанд. Ин амният ва модулсозиро таъмин мекунад.
  2. Наследство: Имкон медиҳад, ки синфҳои нав (ҳомилон) бар асоси синфҳои мавҷуда (падари) сохта шаванд, ки хусусиятҳо ва усулҳои онҳоро мерос мебаранд. Ин кӯмак мекунад, ки коди такроршаванда истифода шавад.
  3. Полиморфизм: Имкон медиҳад, ки объектҳои синфҳои гуногун тавассути як интерфейс истифода шаванд. Ин гувоҳӣ ва васеъшавиро таъмин мекунад. Полиморфизм дар вақти компилятсия (баробар кардани усулҳо) ва дар вақти иҷро (пешгирии усулҳо) фарқ мекунад.
  4. Абстраксия: Тартиб додани хусусиятҳои муҳими объект ва пинҳон кардани тафсилоти нолозим. Ин кӯмак мекунад, ки системаҳои мураккаб содда карда шаванд.

Масали синф дар Java:

public class Car {
    private String brand; // Инкапсулятсияшуда
    private String model;
    private int year;

    public Car(String brand, String model, int year) { // Конструктор
        this.brand = brand;
        this.model = model;
        this.year = year;
    }

    public void displayInfo() { // Усул
        System.out.println("Brand: " + brand + ", Model: " + model + ", Year: " + year);
    }

    // Геттерҳо ва сеттерҳо (барои дастрасӣ ба хусусиятҳои махфӣ)
    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }
}

Масали истифодаи принсипҳои OOP:

// Наследство
public class ElectricCar extends Car {
    private int batteryCapacity;

    public ElectricCar(String brand, String model, int year, int batteryCapacity) {
        super(brand, model, year); // Даъвати конструктори синфи падар
        this.batteryCapacity = batteryCapacity;
    }

    @Override // Полиморфизм (пешгирии усул)
    public void displayInfo() {
        super.displayInfo(); // Даъвати усули синфи падар
        System.out.println("Battery Capacity: " + batteryCapacity + " kWh");
    }
}

// Истифодаи объектҳо
public class Main {
    public static void main(String[] args) {
        Car myCar = new Car("Toyota", "Camry", 2020);
        Car myElectricCar = new ElectricCar("Tesla", "Model 3", 2022, 75);

        myCar.displayInfo();
        myElectricCar.displayInfo(); // Полиморфизм дар амал
    }
}

Фоидаҳои OOP:

  • Истифодаи такрорӣ: тавассути наследство.
  • Тазмини осон: Тағйирот танҳо ба объектҳо ё синфҳои мушаххас дахл дорад.
  • Флексибилитет ва васеъшавӣ: Бо шарофати полиморфизм.
  • Ташкили беҳтаршудаи коди: тақсим кардани системаи ба модулҳо (объектҳо).
  • Бехатарии маълумот: тавассути инкапсулятсия.