Sobes.tech
Junior

Fonksiyonel yaklaşım ile nesne yönelimli yaklaşım arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Fonksiyonel yaklaşım, matematiksel fonksiyonların değerlendirmesi olarak hesaplamalara odaklanır, durum değişikliklerinden ve değişken verilerden kaçınır. Nesne yönelimli yaklaşım ise, sınıfların örnekleri olan nesnelere odaklanır; bu nesneler, verileri (özellikler) ve davranışları (yöntemler) içerir ve birbirleriyle etkileşir.

Ana farklar:

  • Durum: Fonksiyonel programlama, değiştirilemez verilere ve yan etkilerin yokluğuna yöneliktir. OOP genellikle nesnelerin durumunu değiştirmeye dayanır.
  • Ana kavram: Fonksiyonel programlamada fonksiyonlar ön plandadır. OOP'de nesneler.
  • Veri değişkenliği: Fonksiyonel programlama, değişmez yapılar kullanmayı teşvik eder. OOP'de, nesnelerin içindeki veriler değiştirilebilir olabilir.
  • Paralel İşlem: Fonksiyonel programlama, değiştirilebilir durum ve yan etkilerin yokluğu nedeniyle paralelleştirmeyi daha kolay yapar. OOP'de, erişimin senkronize edilmesi gerekebilir.
  • Soyutlama: Fonksiyonel programlamada soyutlama, yüksek dereceli fonksiyonlar ve fonksiyonların bileşimiyle sağlanır. OOP'de, sınıflar, arabirimler, kalıtım ve çok biçimlilik yoluyla.

Örnek:

Fonksiyonel yaklaşım (Java 8+):

// Listeyi dönüştürmek için Stream API kullanımı örneği
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> squaredNumbers = numbers.stream()
                                     .map(n -> n * n) // Değiştirilmez dönüşüm
                                     .collect(Collectors.toList());

// Fonksiyon kullanımı
Function<Integer, Integer> square = x -> x * x;
int result = square.apply(5);

Nesne yönelimli yaklaşım:

// Durum ve yöntem içeren sınıf örneği
class Counter {
    private int count = 0; // Durum

    public void increment() {
        count++; // Durumu değiştirir
    }

    public int getCount() {
        return count;
    }
}

// Nesne kullanımı
Counter myCounter = new Counter();
myCounter.increment();
int currentValue = myCounter.getCount();

Tabloyla karşılaştırma:

Özellik Fonksiyonel yaklaşım Nesne yönelimli yaklaşım
Ana fikir Fonksiyonlar Nesneler
Durum Değiştirilemez durumu ön planda tutar Durum nesnenin bir parçasıdır
Veri Değişmez verilere tercih edilir Veriler değiştirilebilir olabilir
Yan etkiler En aza indirgeme veya yok etme Var olabilir
Paralel İşlem Daha kolay uygulanabilir Ek senkronizasyon gerektirir
Soyutlama Yüksek dereceli fonksiyonlar, bileşim Sınıflar, arabirimler, kalıtım, çok biçimlilik

Java'da, her iki tarzın unsurlarını kullanarak genellikle birleşik bir yaklaşım benimsenir.