PHP
Özet - Görünürlük
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
-
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
-
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.
Sıradaki ders: static property