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.