Əsas məzmuna keçin

Java-da OOP Əsasları

OOP Nədir?​

Obyekt Yönümlü Proqramlaşdırma (OOP) proqramı obyektlər kolleksiyası kimi təşkil edən proqramlaşdırma paradiqmasıdır. Java tam OOP dilidir.

Dörd Əsas Prinsip​

1. Encapsulation (Enkapsulasiya)​

Data və metodların bir class daxilində birləşdirilməsi və gizlədilməsi.

public class Student {
private String name;
private int age;

public String getName() { return name; }
public void setName(String name) { this.name = name; }

public int getAge() { return age; }
public void setAge(int age) {
if (age > 0) this.age = age;
}
}

2. Inheritance (Varislik)​

Bir class-ın başqa class-dan xüsusiyyətlər əldə etməsi.

// Parent class
class Animal {
protected String name;

public void eat() {
System.out.println(name + " yemək yeyir");
}
}

// Child class
class Dog extends Animal {
public Dog(String name) {
this.name = name;
}

public void bark() {
System.out.println(name + " hürür");
}
}

3. Polymorphism (Polimorfizm)​

Eyni metodun müxtəlif class-larda fərqli davranışlar göstərməsi.

Method Overloading​

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

Method Overriding​

class Animal {
public void makeSound() {
System.out.println("Heyvan səs çıxarır");
}
}

class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Hav hav!");
}
}

4. Abstraction (Abstraksiya)​

Mürəkkəb detalları gizlədərək sadə interfeys təqdim etmə.

Abstract Class​

abstract class Shape {
abstract double getArea();

public void printArea() {
System.out.println("Sahə: " + getArea());
}
}

class Circle extends Shape {
private double radius;

public Circle(double radius) { this.radius = radius; }

@Override
double getArea() {
return Math.PI * radius * radius;
}
}

Interface​

interface Drawable {
void draw();

default void print() {
System.out.println("Drawing...");
}
}

class Rectangle implements Drawable {
@Override
public void draw() {
System.out.println("Düzbucaqlı çəkilir");
}
}

Class və Object​

// Class - şablon
public class Car {
private String brand;
private String model;

public Car(String brand, String model) {
this.brand = brand;
this.model = model;
}

public void start() {
System.out.println(brand + " " + model + " işə düşdü");
}
}

// Object - class-ın nümunəsi
Car car1 = new Car("Toyota", "Camry");
Car car2 = new Car("BMW", "X5");

Constructor​

public class Person {
private String name;
private int age;

// Default constructor
public Person() {
this("Naməlum", 0);
}

// Parametric constructor
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}

Access Modifiers​

public class Example {
public String publicVar; // Hər yerdən əlçatan
protected String protectedVar; // Paket və subclass-dan
String packageVar; // Yalnız paket daxilində
private String privateVar; // Yalnız bu class-da
}

Static Keyword​

public class MathUtil {
public static final double PI = 3.14159;

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

// İstifadə
double pi = MathUtil.PI;
int sum = MathUtil.add(5, 3);

Final Keyword​

// Final class - miras alına bilməz
final class Constants {
// Final variable - dəyişdirilə bilməz
public static final String APP_NAME = "MyApp";
}

// Final method - override edilə bilməz
class Parent {
final void display() {
System.out.println("Final metod");
}
}

Üstünlükləri​

  • Kod təkrarının azaldılması - Inheritance
  • Modularlıq - Encapsulation
  • Genişlənmə imkanı - Polymorphism
  • Saxlama asanlığı - Abstraction
  • Real dünya modelləşdirməsi - Objects