Sobes.tech
Junior

Funksional yana obyekt yönümlü yana arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Funksional yanaşma hesablamalara riyazi funksiyaların qiymətləndirilməsi kimi diqqət yetirir və vəziyyətin dəyişdirilməsi və dəyişkən məlumatlardan qaçır. Obyekt yönümlü yanaşma obyektlərə, yəni sinflərin nümunələrinə yönəlib; bu obyektlər məlumatlar (xüsusiyyətlər) və davranışlar (metodlar) ehtiva edir və bir-biri ilə qarşılıqlı əlaqədədir.

Əsas fərqlər:

  • Vəziyyət: Funksional proqramlaşdırma dəyişməz məlumatlar və yan təsirlərin olmamasına can atır. OOP çox vaxt obyektlərin vəziyyətini dəyişdirməyə əsaslanır.
  • Əsas anlayış: Funksional proqramlaşdırmada bu funksiyalar. OOP-də isə obyektlər.
  • Məlumatların dəyişkənliyi: Funksional proqramlaşdırma dəyişməz məlumat strukturlarının istifadəsini təşviq edir. OOP-də, obyektlərin içindəki məlumatlar dəyişkən ola bilər.
  • Paralelləşdirmə: Funksional proqramlaşdırma çox vaxt dəyişməz vəziyyət və yan təsirlərin olmaması səbəbindən paralelləşdirməyi asanlaşdırır. OOP-də, paralelləşdirmə daha mürəkkəb ola bilər, çünki dəyişkən məlumatlara girişin sinxronlaşdırılması tələb olunur.
  • Abstraksiya: Funksional proqramlaşdırmada, abstraksiya yüksək səviyyəli funksiyalar və funksiyaların birləşməsi vasitəsilə əldə edilir. OOP-də, sinflər, interfeyslər, irsiyyət, çox formallıq vasitəsilə.

Nümunə:

Funksional yanaşma (Java 8+):

// Siyahını çevirmək üçün Stream API nümunəsi
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> squaredNumbers = numbers.stream()
                                     .map(n -> n * n) // Dəyişməz çevirmə
                                     .collect(Collectors.toList());

// Funksiyadan istifadə
Function<Integer, Integer> square = x -> x * x;
int result = square.apply(5);

Obyekt yönümlü yanaşma:

// Vəziyyət və metod ilə nümunə sinif
class Counter {
    private int count = 0; // Vəziyyət

    public void increment() {
        count++; // Vəziyyəti dəyişir
    }

    public int getCount() {
        return count;
    }
}

// Obiektin istifadəsi
Counter myCounter = new Counter();
myCounter.increment();
int currentValue = myCounter.getCount();

Cədvəldə müqayisə:

Xüsusiyyət Funksional yanaşma Obyekt yönümlü yanaşma
Əsas fikir Funksiyalar Obyektlər
Vəziyyət Dəyişməz vəziyyətə üstünlük verilir Vəziyyət obyektin bir hissəsidir
Məlumatlar Dəyişməz məlumatlara üstünlük verilir Məlumatlar dəyişkən ola bilər
Yan təsirlər Minimal və ya yox Mövcud ola bilər
Paralel işləmə Daha asan tətbiq edilə bilər Əlavə sinxronizasiya tələb edir
Abstraksiya Yüksək səviyyəli funksiyalar, kompozisiya Siniflər, interfeyslər, irsiyyət, çox formallıq

Java-da çox vaxt hər iki üslubu istifadə edən bir yanaşma tətbiq olunur.