Rangkuman: Nilai Siswa
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan Lua di Coddy. Pelajaran 18 dari 70.
Tantangan
MudahMari kita buat class Student lengkap yang menggabungkan semua hal yang telah kamu pelajari di bab ini: variabel instance, getter, setter, dan property yang dihitung, semuanya bekerja bersama!
Kamu akan mengatur kodemu di dua file:
Student.lua: Definisikan classStudentdengan pola prototype standar. Setiap siswa harus menyimpannamedangrade. Class-mu memerlukan:- Constructor
:new(name, grade) - Getter
:getName()yang mengembalikan nama siswa - Getter
:getGrade()yang mengembalikan nilai saat ini - Setter
:setGrade(newGrade)yang memperbarui nilai - Method
:hasPassed(threshold)yang mengembalikantruejika nilai siswa lebih besar dari atau sama dengan ambang batas, danfalsejika tidak
- Constructor
main.lua: Gunakan require untuk memuat module Student-mu dan tunjukkan semua fungsinya dengan membuat seorang siswa, memeriksa statusnya, memperbarui nilainya, dan memastikan perubahannya.
Kamu akan menerima empat input:
- Nama siswa
- Nilai awal
- Ambang batas kelulusan yang akan diperiksa
- Nilai baru yang akan ditetapkan
Di file utama, buat seorang siswa dengan nama dan nilai awal yang diberikan, lalu cetak hal-hal berikut pada baris terpisah:
- Nama siswa
- Nilai awal siswa
- Apakah siswa lulus dengan ambang batas yang diberikan (cetak
trueataufalse) - Nilai siswa setelah diperbarui dengan nilai baru
- Apakah siswa lulus dengan ambang batas yang sama setelah nilainya diperbarui
Misalnya, jika inputnya adalah Emma, 55, 60, dan 75, outputnya akan seperti berikut:
Emma
55
false
75
trueAwalnya, Emma memiliki nilai 55, yang belum memenuhi ambang batas kelulusan 60. Setelah nilainya diperbarui menjadi 75, sekarang dia lulus!
Coba sendiri
-- Muat module Student dengan require
local Student = require('Student')
-- Baca input
local name = io.read()
local initialGrade = tonumber(io.read())
local threshold = tonumber(io.read())
local newGrade = tonumber(io.read())
-- TODO: Buat siswa dengan nama dan nilai awal yang diberikan
-- TODO: Cetak nama siswa menggunakan getter
-- TODO: Cetak nilai awal siswa menggunakan getter
-- TODO: Periksa dan cetak apakah siswa lulus berdasarkan ambang batas yang diberikan
-- TODO: Perbarui nilai siswa menggunakan setter
-- TODO: Cetak nilai baru siswa
-- TODO: Periksa dan cetak apakah siswa lulus setelah nilainya diperbarui
Semua pelajaran di Pemrograman Berorientasi Object
1Konsep "Self"
Tabel dengan Fungsi'self' EksplisitSintaks Titik DuaTitik vs Titik DuaRangkuman, Titik Bergerak4Proyek: Bank Digital
Penyiapan Proyekmethod Setoran7Polimorfisme & Overriding
Menimpa methodMemanggil method indukDuck TypingAntarmuka UmumMemeriksa TipeRingkasan: Peran Karyawan10Proyek: Pengelola Bentuk
Penyiapan Proyekclass Rectangleclass Circlemethod KelilingKumpulan BentukLuas TotalSaring Bentuk2Pola Prototype untuk class
Konsep PrototypeMenghubungkan dengan __indexKonstruktor :new()Menginisialisasi AtributInstans yang MandiriRangkuman: Pabrik Mobil5Pembebanan Operator dalam OOP
Menjumlahkan ObjekMengurangkan ObjekMenggabungkan ObjekMembandingkan Objek (<, >)Ulasan: Aritmetika Dompet8Enkapsulasi
Konvensi PenamaanClosure untuk PrivasiAkses melalui ClosureTabel Hanya-BacaLogika ValidasiRangkuman: Brankas Aman11Pola Desain (Ringan)
Fungsi FactoryTabel SingletonPola IteratorObserver (Listener)Rangkuman, Factory Logger3State dan Behavior pada object
Variabel InstansGetter methodSetter methodProperty TerhitungMemformat stringPemeriksaan KesetaraanRangkuman: Nilai Siswa6Dasar-Dasar Pewarisan
Menyiapkan PewarisanMewarisi methodMemperluas KonstruktorMenambahkan method untuk ChildSama vs UnikRangkuman: Hierarki BentukLatihan sendiri: Compiler Lua online