Menu
Coddy logo textTech

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.

challenge icon

Görev

Kolay

Bu 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 bir Student sınıfı oluştur. Ayrıca private bir $grades dizi özelliği ekle (boş olarak başlatılmış). Öğrencin şunlara sahip olmalı:
    • getName(): öğrencinin adını döndürür
    • getStudentId(): öğrenci kimliğini döndürür
    • addGrade(int $grade): yalnızca 0 ile 100 (dahil) arasındaysa bir not ekler
    • getAverage(): 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 bir Classroom sı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 ekler
    • getStudentCount(): kayıtlı öğrenci sayısını döndürür
    • getClassAverage(): 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
  • 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 bir Classroom oluştur. Ad ve kimlikle bir Student oluş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

Kendi başına pratik yap: Online PHP derleyicisi