CodeBlanks Logo Icon CodeBlanks

Özet - Görünürlük

PHP kursu · Orta seviye · Ders 29/115

public, private, getter ve setter'la sıcaklık sınıfı yazarsın.

Özet - Görünürlük

Bu grupta üç görünürlük modunu öğrendin:

  • public: her yerden erişilebilir.
  • protected: sınıf içi ve alt sınıflar.
  • private: yalnızca tanımlandığı sınıf.

Encapsulation için iç durumu private yap, dışarıya getter ve setter ile kontrollü erişim sun. Setter içinde doğrulama yaparak değişmez koşulları (invariant) korursun. Şimdi tüm bunları bir Temperature sınıfında birleştireceksin.

Uygulama Temperature sınıfı: encapsulation birleşimi

Bir Temperature sınıfı tanımla. private float $celsius = 0 property'si olsun. public function setCelsius(float $value): void metodu ekle; metod içinde if ($value < -273) { return; } ile mutlak sıfırın altı reddedilsin, sonra $this->celsius = $value atasın. public function getCelsius(): float metodu return $this->celsius döndürsün. Sonra $temp = new Temperature() oluştur, önce $temp->setCelsius(-500) (reddedilir), sonra $temp->setCelsius(25) çağır ve echo $temp->getCelsius() . "\n" yazdır.

Örnek çözümü göster
private float $celsius tanımla. setCelsius içinde if ($value < -273) return; sonra $this->celsius = $value. getCelsius return $this->celsius döndürsün.
Örnek çözüm:
<?php
// Temperature sınıfını tanımla
class Temperature {
    private float $celsius = 0;
    public function setCelsius(float $value): void {
        if ($value < -273) {
            return;
        }
        $this->celsius = $value;
    }
    public function getCelsius(): float {
        return $this->celsius;
    }
}
$temp = new Temperature();
$temp->setCelsius(-500);
$temp->setCelsius(25);
echo $temp->getCelsius() . "\n";

Görünürlük seçimi ipuçları

Şunları unutma: public geniş erişim, protected miras hiyerarşisi, private yalnız sınıf içi. Hangisini seçeceğin, veriyi kimin görmesi gerektiğine bağlı.

İç durum her zaman private başlar; gerekirse protected'e açılır. Dışarıya yalnızca davranış (metot) sun. Bu, kodu değiştirmeyi kolaylaştırır: iç temsilini değiştirsen bile dışarıdaki kodu bozmazsın.

Bir sonraki grupta static üyelerle sınıf düzeyinde verilere bakacağız.

Kendini test et

  1. Tüm görünürlük modlarını eşleştir

    public
    Her yerden erişilebilir
    protected
    Sınıf ve alt sınıflar
    private
    Yalnızca sınıf içi
    Setter + Getter
    Kontrollü erişim
  2. Bir banka hesabı bakiyesi için hangi görünürlük uygundur?

    • public - her yerden değiştirilebilir
    • private - yalnızca sınıf içi, setter ile kontrollü
    • protected - alt sınıflar doğrudan değiştirebilir
    • Görünürlük gerekmez
    Cevabı göster

    private - yalnızca sınıf içi, setter ile kontrollü — Doğru. Bakiye private olmalı; deposit/withdraw gibi metotlarla kontrollü değişmeli.

Orta seviye bölümündeki tüm dersler