I. BAB: Constructor dan Instance Method
Bab ini menganalisis penggunaan constructor dan instance method dalam konteks praktikum Pemrograman Berorientasi Objek. Analisis meliputi identifikasi kesalahan kode, penambahan fungsionalitas, dan implementasi penggunaan array untuk menangani input pengguna.
1.1 Constructor: Analisis Kesalahan dan Perbaikan
Analisis kode menunjukkan kesalahan penulisan nama method dan constructor pada kelas Student.  Perbaikan dilakukan dengan mengoreksi kapitalisasi nama method Student menjadi Student dan memastikan nama constructor juga ditulis dengan benar.  Selain itu,  terdapat kekurangan kode dalam memperbarui rata-rata nilai setelah mengubah alamat dan umur Anna.  Perbaikan melibatkan pemanggilan ulang setter untuk rata-rata nilai agar output nilai rata-rata tidak bernilai 0.  Perbaikan ini memastikan konsistensi data dan hasil yang akurat.
1.2 Constructor: Penambahan Parameter Nilai Mata Pelajaran
Sebuah constructor baru ditambahkan pada kelas Student yang menerima parameter nilai masing-masing mata pelajaran (Matematika, Inggris, Sains).  Penambahan ini memungkinkan inisialisasi nilai mata pelajaran secara langsung saat pembuatan objek Student, menyederhanakan proses dan meningkatkan efisiensi kode. Contoh objek baru dengan constructor ini ditambahkan pada kelas MainStudent, menunjukkan bagaimana constructor baru ini dapat digunakan untuk membuat objek dengan nilai mata pelajaran yang telah ditentukan sebelumnya.
1.3 Instance Method: Penambahan Method `statusAkhir()`
Method statusAkhir() ditambahkan untuk menentukan status kelulusan siswa berdasarkan nilai rata-rata.  Method ini mengembalikan nilai boolean (true untuk lolos, false untuk remidi) dan menampilkan status tersebut pada method displayMessage(). Implementasi menggunakan operator ternary untuk menampilkan keluaran yang ringkas dan mudah dibaca. Method ini memperkaya fungsionalitas kelas Student dengan logik penilaian yang jelas dan terstruktur.
1.4 Penggunaaan Array untuk Input Jumlah Siswa
Implementasi menggunakan array Student[] memungkinkan penyimpanan data sejumlah siswa yang ditentukan pengguna.  Penggunaan Scanner menyediakan input interaktif untuk memasukkan informasi setiap siswa.  Loop for digunakan untuk memproses input dan menyimpan data ke dalam array.  Selanjutnya, loop lain digunakan untuk menampilkan informasi dan status akhir setiap siswa dalam array.  Ini menunjukkan kemampuan untuk memproses data dalam jumlah besar secara dinamis.
1.5 Menghitung Jumlah Objek yang Dibuat
Variabel statik jumlahObjek ditambahkan ke kelas Student untuk melacak jumlah objek yang dibuat.  Nilai jumlahObjek diinkrementasikan di dalam constructor. Method statis jumlahObjek() ditambahkan untuk menampilkan jumlah objek yang telah dibuat.  Pemanggilan method ini di MainStudent menunjukkan total objek Student yang telah diinstansiasi selama eksekusi program. Fitur ini berguna untuk memantau penggunaan memori dan mengelola objek dalam aplikasi.
II. Instance Method: Operasi pada Bilangan Rasional
Bab ini menganalisis implementasi instance method untuk operasi pada bilangan rasional, termasuk perbaikan kode, penambahan operator perbandingan, dan penggantian struktur iterasi.
2.1 Analisis dan Perbaikan Kode Instance Method
Analisis kode pada kelas Rasional tidak menemukan kesalahan signifikan.  Semua method berfungsi dengan baik dan sesuai dengan spesifikasi. Output menunjukkan operasi-operasi seperti pengecekan rasional, penyederhanaan pecahan, konversi ke double, perbandingan, operasi unary, dan operasi penjumlahan pecahan. Semua method instance bekerja secara efektif dan menghasilkan output yang tepat.
2.2 Penambahan Operator Perbandingan
Method untuk operator <, <=, dan >= ditambahkan ke kelas Rasional.  Method ini membandingkan dua bilangan rasional berdasarkan nilai numeriknya.  Implementasi memastikan perbandingan dilakukan dengan akurat, mempertimbangkan pembilang dan penyebut dari kedua bilangan rasional.  Contoh penggunaan ditambahkan di kelas RasionalDemo untuk menunjukkan cara penggunaan method-method baru ini dan verifikasi fungsionalitasnya.
2.3 Penggantian Struktur Iterasi (While ke For)
Struktur iterasi dalam method Sederhana() diubah dari while loop menjadi for loop.  Perubahan ini tidak mengubah fungsionalitas kode, tetapi meningkatkan efisiensi dan keterbacaan kode.  Penggunaan for loop dianggap lebih tepat dalam konteks algoritma ini karena kondisi pengakhiran loop sudah jelas dan dapat dinyatakan secara eksplisit di dalam pernyataan for loop. Hal ini membuat kode menjadi lebih ringkas dan mudah dipahami.
2.4 Penambahan Operasi Pengurangan, Perkalian, dan Pembagian
Method untuk operasi pengurangan (unaryMinus), perkalian (unaryMultiply), dan pembagian (unaryDivide) ditambahkan ke kelas Rasional.  Method-method ini beroperasi pada dua bilangan rasional dan menghasilkan bilangan rasional baru sebagai hasil.  Method Sederhana() dipanggil untuk menyederhanakan hasil perhitungan.  Contoh penggunaan pada kelas RasionalDemo menunjukkan bagaimana operasi-operasi ini dapat digunakan dan diintegrasikan dalam program yang lebih kompleks.
III. Tugas Praktikum: Manajemen Mata Kuliah
Bab ini menganalisis implementasi program untuk mengelola daftar mata kuliah menggunakan kelas MataKuliah dan KRS. Analisis meliputi struktur data, penanganan input, dan output program.
3.1 Struktur Data dan Kelas MataKuliah
Program menggunakan kelas MataKuliah untuk merepresentasikan data mata kuliah, termasuk kode dan nama.  Kelas ini memiliki constructor untuk inisialisasi dan method getter untuk mengakses data.  Struktur data yang digunakan adalah array MataKuliah[] untuk menyimpan daftar mata kuliah dalam objek KRS.  Penggunaan array memungkinkan penyimpanan beberapa objek mata kuliah dalam satu objek KRS, mencerminkan struktur data yang fleksibel dan efisien.
3.2 Penanganan Input dan Kelas KRS
Kelas KRS memiliki method tambahMataKuliah() untuk menambahkan objek MataKuliah ke dalam daftar.  Program utama (MainKRS) menggunakan Scanner untuk mendapatkan input dari pengguna, termasuk jumlah mata kuliah dan detail setiap mata kuliah.  Penggunaan loop for memastikan input untuk semua mata kuliah yang diinputkan pengguna. Validasi input juga dilakukan untuk membatasi jumlah mata kuliah maksimum menjadi 5, menjamin integritas data.
3.3 Output Program
Program menampilkan daftar mata kuliah yang telah dimasukkan, termasuk kode dan nama masing-masing mata kuliah.  Format output yang terstruktur memudahkan pengguna untuk memahami data yang telah diinputkan.  Penggunaan loop for untuk iterasi melalui array MataKuliah memastikan semua data mata kuliah ditampilkan.  Program ini menunjukkan kemampuan program untuk mengolah dan menampilkan data mata kuliah dengan efisien dan terstruktur.