Özet - Öğ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ğiniz tüm kapsülleme (encapsulation) kavramlarını bir araya getiren bir Öğrenci Kayıt Sistemi oluşturalım. Yapıcı metot tanıtımı (constructor promotion), özel özellikler (private properties), doğrulama içeren alıcılar (getters) ve ayarlayıcılar (setters) ile bilgi gizleme yöntemlerini kullanarak öğrenci verilerini güvenli bir şekilde yöneten, iyi organize edilmiş bir sistem oluşturacaksınız.
Kodunuzu üç dosya halinde düzenleyeceksiniz:
Student.php— Özel bir$name(string) ve özel bir$studentId(string) için yapıcı metot tanıtımını kullanan birStudentsınıfı oluşturun. Ayrıca özel bir$gradesdizi özelliği ekleyin (boş olarak başlatılmış). Öğrenciniz şunlara sahip olmalıdır:getName()— öğrencinin adını döndürürgetStudentId()— öğrenci numarasını döndürüraddGrade(int $grade)— bir notu yalnızca 0 ile 100 (dahil) arasındaysa eklergetAverage()— tüm notların ortalamasını float olarak döndürür (hiç not yoksa 0.0 döndürür)getGradeCount()— kaydedilen not sayısını döndürür
Classroom.php— Bir öğrenci koleksiyonunu yöneten birClassroomsınıfı oluşturun. Öğrencileri saklamak için özel bir dizi kullanın. Student dosyasını dahil edin. Sınıfınız şunlara sahip olmalıdır:- Yapıcı metot tanıtımını kullanarak özel bir
$roomName(string) kabul eden bir yapıcı metot addStudent(Student $student)— sınıfa bir öğrenci 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 adını döndürür
- Yapıcı metot tanıtımını kullanarak özel bir
main.php— Classroom dosyasını dahil edin. Beş girdi alacaksınız: bir sınıf adı, bir öğrenci adı, bir öğrenci numarası ve iki not değeri. Sınıf adıyla birClassroomoluşturun. Ad ve numara ile birStudentoluşturun, her iki notu da (tam sayıya dönüştürülmüş olarak) ekleyin, ardından öğrenciyi sınıfa ekleyin. Dört satır yazdırın:- Sınıf adı
- Öğrencinin adı ve ardından 1 ondalık basamağa yuvarlanmış ortalaması:
"[name]: [average]" - O öğrenci için not sayısı
- 1 ondalık basamağa yuvarlanmış sınıf ortalaması
Bu sistem düzgün kapsüllemeyi gösterir: notlar doğrudan müdahaleden korunur, ortalamalar ham veriler ifşa edilmeden dahili olarak hesaplanır ve tüm veri akışı kontrollü metotlar aracılığıyla gerçekleşir. Sınıfın, öğrencilerin ortalamalarını nasıl hesapladığını bilmesine gerek yoktur — sadece 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 (Sınıf) oluşturun
// TODO: İsim ve ID ile bir Student (Öğrenci) oluşturun
// TODO: Öğrenciye her iki notu da ekleyin
// TODO: Öğrenciyi sınıfa ekleyin
// TODO: Oda adını yazdırın
// TODO: Öğrencinin adını ve ardından 1 ondalık basamaklı ortalamasını yazdırın: "[isim]: [ortalama]"
// TODO: O öğrenci için not sayısını yazdırın
// TODO: Sınıf ortalamasını 1 ondalık basamaklı olarak yazdırın
?>Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesneler$this Anahtar KelimesiMetotlarÖzelliklerYapıcı Metot (__construct)Yıkıcı Metot (__destruct)Özet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtımparent:: Anahtar KelimesiMetot Geçersiz Kılmafinal Anahtar KelimesiSoyut SınıflarÖzet - Çalışan Hiyerarşisi7Kapsülleme
Public, Protected, PrivateErişim Belirleyicilere Derinlemesine BakışGetter ve Setter MetotlarıBilgi GizlemeConstructor Promotion (8.0)Özet - Öğrenci Kayıt Sistemi10İleri Düzey OOP Kavramları
Kompozisyon vs KalıtımDependency InjectionAnonim SınıflarEnum'lar (PHP 8.1)Fiber'lar (PHP 8.1)Nesne Klonlama: Derinlemesine İncelemeGenerator'lar ve Iterator'lar13Tasarı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ıKompozit KalıbıRepository Kalıbı2İsim Alanları ve Autoloading
İsim Alanlarına Girişuse Anahtar KelimesiPSR-4 Autoloading StandartıComposer AutoloaderÖzet - Düzenli Proje5Arayüzler ve Sözleşmeler
Arayüzlere GirişArayüzleri UygulamaBirden Fazla Arayüz UygulamaArayüz vs Soyut SınıfArayüzler ile Tip BelirlemeÖzet - Şekil Hesaplayıcı8Sihirli Metotlar
Sihirli Metotlara Giriş__toString & __debugInfo__get, __set, __isset, __unset__call & __callStatic__clone & Nesne Klonlama__serialize & __unserializeÖzet - Özel Koleksiyon3Sınıf Özellikleri
Örnek ve Statik ÖzelliklerSınıflarda SabitlerStatik Metotlar ve ÖzelliklerPrivate ve Protected ÖzelliklerReadonly Özellikler (PHP 8.1)Özet - Banka Hesabı Yöneticisi6Çok Biçimlilik
Metot Geçersiz Kılmaya Yeniden BakışArayüzler ile Çok BiçimlilikType Hinting ve Union TypesLate Static BindingÖzet - Ödeme İşlemcisi9Trait'ler
Trait'lere GirişÇoklu Trait KullanımıTrait Çakışma ÇözümüTrait'lerde Soyut MetotlarTrait'ler ve Kalıtım12Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişSingleton KalıbıFactory KalıbıObserver KalıbıStrategy Kalıbı15Final Meydan Okumaları
E-Öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi