Sobes.tech
Middle

Programlamada bağlılık ve bağlantı nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Kohesyon (Cohesion), bir modülün (sınıf, fonksiyon) içindeki öğelerin ne kadar sıkı bağlı olduğunu ölçen bir göstergedir. Yüksek kohesyon, modül öğelerinin tek bir görev veya kavram üzerinde odaklandığını gösterir. İyi tasarlanmış bir modül yüksek kohesyon sağlar.

Kohesyon seviyelerine örnekler (düşükten yükseğe):

  • Tesadüfi (Coincidental): Öğeler rastgele bağlıdır, mantıksal bir bağlantı yoktur.
  • Mantıksal (Logical): Öğeler mantıksal olarak ilişkili bir dizi işlem gerçekleştirir, ancak seçim dış kod tarafından yapılır.
  • Zamansal (Temporal): Öğeler aynı zamanda çalıştırılır.
  • Prosedürel (Procedural): Öğeler bir yürütme prosedürünü takip eder.
  • İletişimsel (Communicational): Öğeler aynı verilerle çalışır.
  • Sıralı (Sequential): Bir öğenin çıkışı diğerinin girişidir.
  • Fonksiyonel (Functional): Tüm öğeler, açıkça tanımlanmış bir fonksiyonun gerçekleştirilmesine katkıda bulunur.

Bağlantı (Coupling), farklı modüller arasındaki bağımlılık seviyesidir. Düşük bağlantı, modüllerin birbirinden bağımsız olduğu anlamına gelir. Bağlantıyı azaltmak, sistemi daha esnek, bakımı kolay ve test edilebilir hale getirir.

Bağlantı seviyelerine örnekler (yüksekten düşüğe):

  • İçerik (Content): Bir modül doğrudan başka bir modülün iç verilerine veya uygulamasına erişir.
  • Ortak (Common): Modüller ortak bir küresel veri alanı kullanır.
  • Kontrol (Control): Bir modül, diğerinin davranışını belirleyen bir kontrol bayrağı iletir.
  • Stamplama (Stamp): Birlikte kullanılan karmaşık verilerin (nesneler, yapılar) aktarımı, ancak modül sadece bir kısmını kullanır.
  • Veri (Data): Basit verilerin parametreler olarak aktarımı.
  • Mesajlar (Message): Modüller mesaj alışverişi yapar (örneğin, olaylar veya arayüzler aracılığıyla). Bu, en zayıf bağlantı biçimidir.

İyi bir tasarımın amacı: yüksek kohesyon (modüller içinde) ve düşük bağlantı (modüller arasında) sağlamaktır.

<?php

// Yüksek kohesyon örneği (Fonksiyonel Kohesyon)
// Bu sınıf sadece kullanıcı işlemleriyle ilgilidir
class UserManager {
    private array $users = [];

    public function addUser(string $name): void {
        $this->users[] = $name;
    }

    public function getUsers(): array {
        return $this->users;
    }

    public function deleteUser(string $name): void {
        $this->users = array_filter($this->users, fn($user) => $user !== $name);
    }
}

// Düşük bağlantı örneği (Veri Bağlantısı)
// 'processOrder', sadece iletilen verilere ($orderId, $amount) bağlıdır
class OrderProcessor {
    public function processOrder(int $orderId, float $amount): bool {
        // Sipariş işleme mantığı...
        // Diğer sınıfların uygulamasına doğrudan bağlı değildir,
        // sadece giriş verilerine bağlıdır.
        echo "Sipariş ID $orderId işleniyor, tutar: $amount\n";
        return true;
    }
}

// UserManager ve OrderProcessor'ın birbirine güçlü bağı olmayan bir örneği.
// Bağımsız veya birlikte kullanılabilirler, ancak iç değişiklikleri
// birbirlerini çok etkilemez.

?>