Ulasan: Sistem Catatan Siswa
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 43 dari 91.
Tantangan
MudahMari kita bangun Sistem Data Siswa yang menggabungkan semua konsep enkapsulasi yang telah kamu pelajari di bab ini. Kamu akan membuat sistem yang tertata dengan baik untuk mengelola data siswa secara aman, menggunakan promosi konstruktor, property privat, getter dan setter dengan validasi, serta penyembunyian informasi.
Kamu akan menyusun kodemu dalam tiga file:
Student.php: Buat classStudentmenggunakan promosi konstruktor untuk$nameprivat (string) dan$studentIdprivat (string). Sertakan juga property array$gradesprivat (diinisialisasi sebagai array kosong). Siswa tersebut harus memiliki:getName(): mengembalikan nama siswagetStudentId(): mengembalikan ID siswaaddGrade(int $grade): menambahkan nilai hanya jika berada di antara 0 dan 100 (inklusif)getAverage(): mengembalikan rata-rata semua nilai sebagai float (mengembalikan 0.0 jika tidak ada nilai)getGradeCount(): mengembalikan jumlah nilai yang tercatat
Classroom.php: Buat classClassroomyang mengelola kumpulan siswa. Gunakan array privat untuk menyimpan siswa. Sertakan file Student. Class Classroom harus memiliki:- Konstruktor yang menerima
$roomNameprivat (string) menggunakan promosi konstruktor addStudent(Student $student): menambahkan siswa ke classroomgetStudentCount(): mengembalikan jumlah siswa yang terdaftargetClassAverage(): menghitung rata-rata dari rata-rata semua siswa (mengembalikan 0.0 jika tidak ada siswa atau nilai)getRoomName(): mengembalikan nama classroom
- Konstruktor yang menerima
main.php: Sertakan file Classroom. Kamu akan menerima lima input: nama ruangan, nama siswa, ID siswa, dan dua nilai. BuatClassroomdengan nama ruangan tersebut. BuatStudentdengan nama dan ID, tambahkan kedua nilai (yang dikonversi menjadi integer), lalu tambahkan siswa tersebut ke classroom. Cetak empat baris:- Nama ruangan
- Nama siswa diikuti rata-ratanya dengan format 1 angka desimal:
"[name]: [average]" - Jumlah nilai siswa tersebut
- Rata-rata kelas dengan format 1 angka desimal
Sistem ini menunjukkan enkapsulasi yang tepat: nilai terlindungi dari perubahan langsung, rata-rata dihitung secara internal tanpa menampilkan data mentah, dan semua data mengalir melalui method yang terkendali. Classroom tidak perlu tahu cara siswa menghitung rata-rata mereka. Classroom cukup meminta hasilnya.
Coba sendiri
<?php
require_once 'Classroom.php';
// Baca input
$roomName = trim(fgets(STDIN));
$studentName = trim(fgets(STDIN));
$studentId = trim(fgets(STDIN));
$grade1 = intval(trim(fgets(STDIN)));
$grade2 = intval(trim(fgets(STDIN)));
// TODO: Buat Classroom dengan nama ruangannya
// TODO: Buat Student dengan nama dan ID-nya
// TODO: Tambahkan kedua nilai ke Student
// TODO: Tambahkan Student ke Classroom
// TODO: Cetak nama ruangan
// TODO: Cetak nama Student, lalu rata-ratanya dengan 1 angka di belakang koma: "[name]: [average]"
// TODO: Cetak jumlah nilai untuk Student tersebut
// TODO: Cetak rata-rata class dengan 1 angka di belakang koma
?>Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengenalan OOPclass vs objectKata Kunci $thismethodpropertyConstructor (__construct)Destructor (__destruct)Ringkasan: Kalkulator Sederhana4Pewarisan
Pewarisan DasarKata Kunci parent::Penimpaan methodKata Kunci finalClass AbstrakRingkasan: Hierarki Karyawan7Enkapsulasi
Public, Protected, PrivateModifier Akses secara MendalamGetter dan SetterPenyembunyian InformasiPromosi Constructor (8.0)Ulasan: Sistem Catatan Siswa2Namespace dan Autoloading
Pengenalan NamespaceKata Kunci useStandar Autoloading PSR-4Autoloader ComposerRingkasan: Proyek yang Terorganisasi5Interface dan Kontrak
Pengenalan InterfaceMengimplementasikan InterfaceImplementasi Beberapa InterfaceInterface vs Abstract ClassPetunjuk Tipe dengan InterfaceRekap: Kalkulator Bentuk8Magic Methods
Pengantar Magic Methods__toString & __debugInfo__get, __set, __isset, __unset__call & __callStatic__clone & Cloning Object__serialize & __unserializeRingkasan: Koleksi Kustom11Sistem Tipe Data dan Penanganan Error
Deklarasi TipeTipe NullableTipe Union dan IntersectionClass ExceptionHierarki Exception KustomTry, Catch, FinallyRekap: Validator Form3Property dalam class
Property instance vs staticKonstanta dalam classMethod & property staticProperty private & protectedProperty readonly (PHP 8.1)Ulasan: Pengelola Rekening Bank6Polimorfisme
Meninjau Kembali Method OverridingPolimorfisme melalui AntarmukaPetunjuk Tipe dan Tipe UnionPengikatan Statis TertundaRangkuman: Pemroses PembayaranLatihan sendiri: Compiler PHP online