Tekrar - Öğrenci Kayıt Sistemi
Coddy'nin PHP Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 43 / 91.
Görev
KolayBu bölümde öğrendiğin tüm kapsülleme kavramlarını bir araya getiren bir Öğrenci Kayıt Sistemi oluşturalım. Yapıcı tanıtımı, private özellikler, doğrulamalı getter ve setter'lar ve bilgi gizleme kullanarak öğrenci verilerini güvenli bir şekilde yöneten, iyi organize edilmiş bir sistem oluşturacaksın.
Kodunu üç dosyaya ayıracaksın:
Student.php: Private$name(string) ve private$studentId(string) için yapıcı tanıtımını kullanan birStudentsınıfı oluştur. Ayrıca private bir$gradesdizi özelliği ekle (boş olarak başlatılmış). Öğrencin şunlara sahip olmalı:getName(): öğrencinin adını döndürürgetStudentId(): öğrenci kimliğini döndürüraddGrade(int $grade): yalnızca 0 ile 100 (dahil) arasındaysa bir not eklergetAverage(): tüm notların ortalamasını float olarak döndürür (hiç not yoksa 0.0 döndürür)getGradeCount(): kaydedilen notların sayısını döndürür
Classroom.php: Bir öğrenci koleksiyonunu yöneten birClassroomsınıfı oluştur. Öğrencileri depolamak için private bir dizi kullan. Student dosyasını dahil et. Sınıfın şunlara sahip olmalı:- Yapıcı tanıtımını kullanarak private
$roomName(string) kabul eden bir yapıcı addStudent(Student $student): bir öğrenciyi sınıfa eklergetStudentCount(): kayıtlı öğrenci sayısını döndürürgetClassAverage(): tüm öğrencilerin ortalamalarının ortalamasını hesaplar (hiç öğrenci veya not yoksa 0.0 döndürür)getRoomName(): sınıfın adını döndürür
- Yapıcı tanıtımını kullanarak private
main.php: Classroom dosyasını dahil et. Beş girdi alacaksın: bir sınıf adı, bir öğrenci adı, bir öğrenci kimliği ve iki not değeri. Sınıf adıyla birClassroomoluştur. Ad ve kimlikle birStudentoluştur, her iki notu da (tam sayılara dönüştürülmüş olarak) ekle, ardından öğrenciyi sınıfa ekle. Dört satır yazdır:- Sınıf adı
- Öğrencinin adı ve ardından 1 ondalık basamakla biçimlendirilmiş ortalaması:
"[name]: [average]" - Bu öğrencinin not sayısı
- 1 ondalık basamakla biçimlendirilmiş sınıf ortalaması
Bu sistem, doğru kapsüllemeyi gösterir: notlar doğrudan değiştirilmeye karşı korunur, ortalamalar ham veriler açığa çıkarılmadan dahili olarak hesaplanır ve tüm veriler kontrollü yöntemler üzerinden akar. Sınıfın, öğrencilerin ortalamalarını nasıl hesapladığını bilmesine gerek yoktur. Yalnızca sonucu ister.
Kendin dene
<?php
require_once 'Classroom.php';
// Girdileri oku
$roomName = trim(fgets(STDIN));
$studentName = trim(fgets(STDIN));
$studentId = trim(fgets(STDIN));
$grade1 = intval(trim(fgets(STDIN)));
$grade2 = intval(trim(fgets(STDIN)));
// TODO: Oda adıyla bir Classroom oluştur
// TODO: İsim ve ID ile bir Student oluştur
// TODO: Her iki notu öğrenciye ekle
// TODO: Öğrenciyi sınıfa ekle
// TODO: Oda adını yazdır
// TODO: Öğrencinin adını ardından 1 ondalık basamağa biçimlendirilmiş ortalamasını yazdır: "[name]: [average]"
// TODO: O öğrenci için not sayısını yazdır
// TODO: Sınıf ortalamasını 1 ondalık basamağa biçimlendirilmiş olarak yazdır
?>Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesneler$this Anahtar SözcüğüMetotlarÖzelliklerYapıcı (__construct)Yıkıcı (__destruct)Tekrar - Basit Hesap Makinesi4Kalıtım
Temel Kalıtımparent:: Anahtar SözcüğüMetot Geçersiz Kılmafinal Anahtar SözcüğüSoyut SınıflarTekrar - Çalışan Hiyerarşisi7Kapsülleme
Public, Protected, PrivateErişim Belirleyicileri DerinlemesineGetter ve Setter'larBilgi GizlemeYapıcı Özellik Terfisi (8.0)Tekrar - Öğrenci Kayıt Sistemi10İleri Düzey OOP Kavramları
Composition ve KalıtımBağımlılık EnjeksiyonuAnonim SınıflarEnum'lar (PHP 8.1)Fiber'lar (PHP 8.1)Nesne Klonlamaya Derinlemesine BakışÜreteçler ve Yineleyiciler13Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıBileşik KalıpDepo Kalıbı2Namespace’ler ve Autoloading
Namespace’lere Girişuse Anahtar SözcüğüPSR-4 Autoloading StandardıComposer AutoloaderTekrar - Düzenli Proje5Arayüzler ve Sözleşmeler
Arayüzlere GirişArayüzleri UygulamaBirden Çok Arayüz UygulamaArayüz ve Soyut Sınıf KarşılaştırmasıArayüzlerle Tür İpuçlarıTekrar - Şekil Hesaplayıcı8Sihirli Metotlar
Sihirli Metotlara Giriş__toString ve __debugInfo__get, __set, __isset, __unset__call ve __callStatic__clone ve Nesne Klonlama__serialize ve __unserializeTekrar - Özel Koleksiyon3Sınıf Özellikleri
Örnek ve Statik ÖzelliklerSınıflarda SabitlerStatik Metotlar ve ÖzelliklerPrivate ve Protected ÖzelliklerSalt Okunur Özellikler (PHP 8.1)Tekrar - Banka Hesabı Yöneticisi6Çok Biçimlilik
Metot Geçersiz Kılmayı Yeniden Ele AlmaArayüzler Yoluyla Çok BiçimlilikTür İpuçları ve Birleşim TürleriGeç Bağlanan Statik ÇağrılarÖzet - Ödeme İşlemcisi9Trait'ler
Trait'lere GirişBirden Çok Trait KullanımıTrait Çakışmalarını ÇözümlemeTrait'lerde Soyut MetotlarTrait'ler ve Kalıtım Karşılaştırması12Tasarım Desenleri 1. Bölüm
Tasarım Desenlerine GirişSingleton DeseniFactory DeseniObserver DeseniStrategy DeseniKendi başına pratik yap: Online PHP derleyicisi