Menu
Coddy logo textTech

Ö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.

challenge icon

Görev

Kolay

Bu 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 bir Student sınıfı oluşturun. Ayrıca özel bir $grades dizi özelliği ekleyin (boş olarak başlatılmış). Öğrenciniz şunlara sahip olmalıdır:
    • getName() — öğrencinin adını döndürür
    • getStudentId() — öğrenci numarasını döndürür
    • addGrade(int $grade) — bir notu yalnızca 0 ile 100 (dahil) arasındaysa 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 not sayısını döndürür
  • Classroom.php — Bir öğrenci koleksiyonunu yöneten bir Classroom sı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 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 adını döndürür
  • 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 bir Classroom oluşturun. Ad ve numara ile bir Student oluş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