TP12 PersiapanUAS
TP12 PersiapanUAS
Tugas Pemrograman 12
©2020, Fakultas IImu Komputer Universitas Indonesia
Pekerjaan ini menggunakan lisensi
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
1
CSGE601021 - Dasar - Dasar Pemrograman 2
Semester Ganjil - 2020/2021
Daftar Isi
Tugas Pemrograman 12 4
Spesifikasi 4
Penting: Sering-sering melakukan commit dan push pekerjaan, terutama bila
suatu bagian soal sudah selesai. 4
Deskripsi 4
Jadwal Pengerjaan 5
Catatan Perubahan: 5
Tanggal Release: 28 Desember 2020 jam 20:30 - oleh: Ade Azurat dan M.H.Hilman 5
Pertanyaan? 5
Soal 1 6
Spesifikasi 6
Pengantar 6
Tahapan Kerja 1a:
Menerjemahkan Class Diagram ke Java Source Code 7
Lakukan git commit dengan pesan kurang lebih "Tahap 1a, menerjemahkan
class diagram ke source code program java." kemudian lakukan git push. 7
Tahapan Kerja 1b:
Membuat unit testing. 8
Contoh Unit Test 8
Lakukan git commit dengan pesan kurang lebih "Tahap 1b, membuat unit test
dan menambah/memperbaiki program seperlunya." kemudian lakukan git
push. 9
Tahapan Kerja 1c: Pengembangan. 9
Lakukan git commit dengan pesan kurang lebih "Tahap 1c, Pengembangan
aplikasi" kemudian lakukan git push. 9
Refleksi Soal 1: 10
Soal 2 11
Spesifikasi 11
Pengantar 11
Tahapan Kerja 2a:
Implementasikan Class Diagram dengan inheritance 12
Lakukan git commit dengan pesan kurang lebih "Tahap 2a, Implementasi
Class Diagram, menerapkan inheritance" kemudian lakukan git push. 12
Tahapan Kerja 2b: Pengembangan dengan kelas Dosen 12
Lakukan git commit dengan pesan kurang lebih "Tahap 2b, pengembangan
Class Diagram, dan operasi file" kemudian lakukan git push. 13
Tahapan Kerja 2c: Defensive Programming, terapkan exception handler. 13
2
CSGE601021 - Dasar - Dasar Pemrograman 2
Semester Ganjil - 2020/2021
Lakukan git commit dengan pesan kurang lebih "Tahap 2c, Defensive
programming penerapan exception handler" kemudian lakukan git push. 13
Refleksi Soal 2: 13
Soal 3 13
Spesifikasi 14
Pengantar 14
Tahapan Kerja 3: Bebas 15
Lakukan git commit dengan pesan kurang lebih "Tahap 3..., menyelesaikan
implementasi layanan ……. " kemudian lakukan git push. 15
Refleksi Soal 3: 15
Soal 4 16
Spesifikasi 16
Pengantar 16
Tahapan Kerja 4: Bebas 18
Lakukan git commit dengan pesan kurang lebih "Tahap 4..., menggabungkan
dua matriks generics……. " kemudian lakukan git push. 18
Refleksi Soal 4: 18
3
CSGE601021 - Dasar - Dasar Pemrograman 2
Semester Ganjil - 2020/2021
Tugas Pemrograman 12
Spesifikasi
Sifat Pengerjaan : Individu
Jumlah Soal : 4 (Seluruh nya dikumpulkan)
Template : Tidak disediakan, silahkan berkreasi.
Submission : Melalui commit push setiap selesai satu tahap soal.
Berkas : Setiap <berkas>.java yang berisi implementasi, perlu ada
berkas <berkas>Test.java yang berisi unit test.
Deskripsi
Pada pengerjaan Tugas Pemrograman kali ini, peserta diharapkan dapat menerapkan
seluruh pengetahuan yang telah dipelajari dan relevan dengan permasalahan yang
diberikan semaksimal mungkin.
Tugas pemrograman kali ini agak berbeda dengan sebelumnya. Tugas ini lebih merupakan
persiapan ujian akhir pemrograman minimal untuk nomor 1-4 (soal nomor 5, bisa sangat
berbeda tema dan kesulitannya). Peserta seakan-akan mulai ujian pemrograman sejak
hampir satu pekan sebelumnya. Pastikan peserta memahami permasalahan yang
dipaparkan dalam Tugas pemrograman ini, sehingga saat ujian akhir nanti tak perlu lagi
memahami ulang dan bisa fokus pada modifikasi atau penyesuaian dari variasi saat ujian
akhir nanti.
Aturan input output pada tugas ini tidak ada. Peserta tidak diwajibkan membuat Main class,
atau Simulator class. Namun peserta diwajibkan membuat unit test yang menguji
masing-masing method yang dibuat (termasuk constructor) .
Untuk hal-hal lain yang tidak diatur pada soal, peserta bisa berkreasi mencoba dan
menerapkan pengetahuan yang telah dipelajari sebelumnya.
4
CSGE601021 - Dasar - Dasar Pemrograman 2
Semester Ganjil - 2020/2021
Jadwal Pengerjaan
Batas Pengumpulan Milestone 1 Rabu, 30 Desember 2020 pukul 21.00 WIB
Batas Pengumpulan Milestone 2 Jumat, 1 Januari 2021 pukul 21.00 WIB
(Akhir)
Batas Pengumpulan Milestone 3 Ahad, 3 Januari 2021 pukul 21.00 WIB
Catatan Perubahan:
Harap monitor bagian ini dalam 3 hari semenjak publikasi soal. Dimungkinkan terjadi
perubahan yang ditujukan untuk mempermudah peserta kuliah. Bila sudah terlanjur
menyelesaikan sebelum perubahan/perbaikan diumumkan, peserta tidak harus
mengubahnya. Perubahan/perbaikan hanya berlaku bagi yang belum selesai mengerjakan
(belum commit dan push ke repository)
Tanggal Release: 28 Desember 2020 jam 20:30 - oleh: Ade Azurat dan
M.H.Hilman
Pertanyaan?
SIlahkan sampaikan ke Kak Burhan atau asdos kesayangan kalian ya :)
5
CSGE601021 - Dasar - Dasar Pemrograman 2
Semester Ganjil - 2020/2021
Soal 1
Spesifikasi
Penamaan Berkas : TP12/<NamaClass>.java
: TP12/<NamaClass>Test.java
Contoh Penamaan : TP12/Mahasiswa.java
: TP12/MahasiswaTest.java
Pengantar
UML Class diagram berikut, menyatakan bagian rancangan dari sebuah bagian dari mini
SIAK NG. Peserta diminta mengimplementasikan rancangan tersebut. Pada class diagram,
tidak tertulis beberapa method yang default seperti setter dan getter methods. Peserta
diharapkan tidak lupa untuk membuat implementasi dari setter getter masing-masing field
dan sebelumnya membuat unit test-nya.
Pada soal ini tidak ada contoh running eksekusi, program akan dievaluasi berdasarkan
unit-test nya. Jika kamu sampai saat ini masih belum bisa menggunakan JUnit, mohon
segera kontak kak burhan untuk asistensi instalasi dan penggunaan JUnit.
6
CSGE601021 - Dasar - Dasar Pemrograman 2
Semester Ganjil - 2020/2021
Berikut ini beberapa penjelasan singkat terkait spesifikasi dari method-method yang diminta:
● constructor Mahasiswa(nama: String, npm: String),
membuat object Mahasiswa dengan field nama dan npm sesuai paramater. Untuk
konstruktor ini, field nya daftarMatKul masih dibiarkan null saja.
● method tambahMatKul(matkul: MataKuliah): void
menambahkan sebuah matakuliah kedalam daftar mata kuliah seorang mahasiswa.
aturan penambahan bebas apakah ditambahkan di awal atau di akhir. Tidak perlu
ada urutan atau aturan penambahan khusus.
● method dropMatKul(matkul: MataKuliah): void
menghapus sebuah matakuliah dari daftar mata kuliah seorang mahasiswa. Bila
mata kuliah yang hendak dihapus tidak ada, tidak perlu ada perubahan apapun.
Catatan: (terkait defensif programming, perlu ada mekanisme yang lebih baik bila
matakuliah yang hendak dihapus tidak ada di data, misalnya dengan memberikan try
catch dan exception handler yang baik)
● method toString(): String
Seperti hal nya method toString yang pernah dibuat sebelumnya, silahkan berkreasi.
Terkait method untuk class MataKuliah, penjelasan yang serupa sesuai intuisi pada
umumnya. Untuk hal-hal yang tidak ditetapkan, silahkan berkreasi. Tahapan 1a berakhir.
7
CSGE601021 - Dasar - Dasar Pemrograman 2
Semester Ganjil - 2020/2021
}
}
Perhatikan bahwa, setelah menyusun unit, peserta mungkin mulai menyadari ada hal-hal
yang bisa jadi kurang tepat dan mungkin perlu membuat fungsi pembantu seperti method
equals.
8
CSGE601021 - Dasar - Dasar Pemrograman 2
Semester Ganjil - 2020/2021
TIPS: Kadang-kadang VSCode tidak mengenali unit testing atau library yang kita buat. Ini
karena informasi classpath yang kurang tepat. Salah satu cara yang dapat membuat
VSCode mengenali unit test yang kita buat adalah dengan cara membuat workspace kerja.
Pada menu File -> "Save Workspace as…" kemudian pilih lokasi konfigurasi workspace di
tempat lain di luar direktori git.
Pastikan testnya menguji seluruh method yang dibuat, dan passed (benar hasil test nya).
Bila sudah berhasil tahapan 1b sudah selesai
Lakukan git commit dengan pesan kurang lebih "Tahap 1b, membuat unit
test dan menambah/memperbaiki program seperlunya." kemudian lakukan
git push.
Untuk layanan tersebut, Peserta dapat merancang nama method, parameter apa yang
sebaiknya diberikan dan bagaimana return value dari method ini dan juga nanti menyusun
unit test yang bersesuaian. Dimungkinkan juga untuk menambahkan method-method
pembantu. Method pembantu tidak wajib dibuat unit testnya. Untuk tugas ini, Method yang
mencetak ke layar, tidak perlu dibuat unit test-nya.
Lakukan git commit dengan pesan kurang lebih "Tahap 1c, Pengembangan
aplikasi" kemudian lakukan git push.
9
CSGE601021 - Dasar - Dasar Pemrograman 2
Semester Ganjil - 2020/2021
Refleksi Soal 1:
❏ Mahasiswa paham cara menerjemahkan Class Diagram ke program Java
❏ Mahasiswa paham Class Association
❏ Mahasiswa paham cara mendefinisikan dan memanggil Method
❏ Mahasiswa paham cara memproses String
❏ Mahasiswa dibiasakan dengan pola kerja git
❏ Mahasiswa berfikir kreatif dan kritis dalam menyusun unit testing dalam menguji
implementasi yang dibuatnya sebaik-baiknya.
10
CSGE601021 - Dasar - Dasar Pemrograman 2
Semester Ganjil - 2020/2021
Soal 2
Spesifikasi
Penamaan Berkas : TP12/<NamaClass>.java
: TP12/<NamaClass>Test. java
Contoh Penamaan : TP12/Dosen.java
: TP12/DosenTest.java
Pengantar
Perangkat Lunak Mini SIAK, tersebut digunakan memberikan manfaat. Agar nilai manfaat
lebih dibutuhkan tambahan pengembangan. Berikut ini rancangan class diagram yang
menyertakan Dosen sebagai pengampu mata kuliah.
11
CSGE601021 - Dasar - Dasar Pemrograman 2
Semester Ganjil - 2020/2021
Dosen dan Mahasiswa memiliki kesamaan sama-sama Manusia maka beberapa field dan
method tidak perlu diduplikasi dan bisa dipindahkan ke kelas Manusia. Dosen dan
Mahasiswa menjadi sub-class dari kelas Manusia sehingga tetap memiliki field dan method
yang dibutuhkan.
Buatlah tambahan implementasi (berkas baru Dosen.java) dan perubahan dari source
code berkas sebelumnya agar menjadi lebih baik lagi penerapan Object Oriented-nya.
(Misalnya tidak ada duplikasi). Perubahan yang dibuat antara lain:
A. Kelas Dosen, field dan method-method nya seperti pada class diagram
B. Kelas Manusia, field dan method-method nya seperti pada class diagram
C. Penyesuaian Kelas Mahasiswa.
D. Pembuatan Unit test untuk kelas Dosen, dan penyesuaian unit test kelas yang lain.
Lakukan git commit dengan pesan kurang lebih "Tahap 2a, Implementasi
Class Diagram, menerapkan inheritance" kemudian lakukan git push.
Setelah class diagram selesai diimplementasikan dan juga di-test, buatlah tambahan
method sehingga bisa memberikan layanan:
A. method untuk mencetak untuk masing-masing mata kuliah, siapa dosen nya, dan list
seluruh peserta kuliah tersebut.
B. Method untuk membaca berkas data nama mata kuliah dan pesertanya. Format
berkas bebas. Bisa disesuaikan dengan kebutuhan atau rancangan algoritma
peserta. Salah satu contoh format berkas yang bisa ditiru adalah:
Baris pertama menyatakan kode mata kuliah dipisahkan dengan koma Nama Mata
Kuliah. baris selanjutnya hingga akhir berkas (sampai habis) adalah npm dan nama
peserta yang mengikut mata kuliah dipisahkan dengan koma.
12
CSGE601021 - Dasar - Dasar Pemrograman 2
Semester Ganjil - 2020/2021
C. Method untuk menulis isi object mata kuliah (kode dan mata kuliah serta seluruh
pesertanya) seperti format pada poin B. Berkas bisa dinamakan dengan kode
matakuliah.
Untuk layanan tersebut, Peserta dapat merancang nama method, parameter apa yang
sebaiknya diberikan dan bagaimana return value dari method ini dan juga nanti menyusun
unit test yang bersesuaian. Dimungkinkan juga untuk menambahkan method-method
pembantu. Method pembantu tidak wajib dibuat unit testnya. Untuk tugas ini, Method yang
mencetak ke layar, tidak perlu dibuat unit test-nya.
Lakukan git commit dengan pesan kurang lebih "Tahap 2b, pengembangan
Class Diagram, dan operasi file" kemudian lakukan git push.
Lakukan git commit dengan pesan kurang lebih "Tahap 2c, Defensive
programming penerapan exception handler" kemudian lakukan git push.
Refleksi Soal 2:
❏ Mahasiswa paham cara menerjemahkan Class Diagram ke program Java
❏ Mahasiswa paham Class Inheritance dan Polymorphism
❏ Mahasiswa paham cara memproses File
❏ Mahasiswa paham cara mendefinisikan Exception
❏ Mahasiswa dibiasakan berfikir kreatif dan defensive mengupayakan agar karya cipta
nya bisa dibuat sebaik-baiknya dan mengantisipasi kemungkinan yang bisa membuat
program tidak berjalan sesuai harapan.
❏ Mahasiswa dibiasakan dengan pola kerja git
❏ Mahasiswa berfikir kreatif dan kritis dalam menyusun unit testing dalam menguji
implementasi yang dibuatnya sebaik-baiknya.
13
CSGE601021 - Dasar - Dasar Pemrograman 2
Semester Ganjil - 2020/2021
Soal 3
Generic Matriks
Spesifikasi
Penamaan Berkas : TP12/<NamaClass>.java
: TP12/<NamaClass>Test. java
Contoh Penamaan : TP12/GenericMatrix.java
: TP12/GenericMatrixTest.java
Pengantar
Perhatikan dan pelajari pembahasan Generiks Matriks yang dipaparkan di buku Teks.
Kembangkan lagi implementasi dari GenericMatrix tersebut. Peserta bisa melanjutkan dari
contoh yang disediakan yaitu:
https://repl.it/@AdeAzurat/Pekan11-Generics#GenericMatrix.java
14
CSGE601021 - Dasar - Dasar Pemrograman 2
Semester Ganjil - 2020/2021
Untuk layanan tersebut, Peserta dapat merancang nama method, parameter apa yang
sebaiknya diberikan dan bagaimana return value dari method ini. Dimungkinkan juga untuk
menambahkan method-method pembantu.
Bantuan: Dalam menyusun unit test nya dapat memanfaatkan kelas IntegerMatrix
seperti pada buku atau contoh program.
Keterangan:
Matriks Segitiga Atas adalah matriks bujur sangkar yang semua elemen yang ada di
bawah diagonal utamanya bernilai 0.
Matriks Segitiga Bawah
Matriks segitiga bawah adalah matriks bujur sangkar yang semua elemen yang ada di
atas diagonal utamanya bernilai 0.
Lakukan git commit dengan pesan kurang lebih "Tahap 3..., menyelesaikan
implementasi layanan ……. " kemudian lakukan git push.
Refleksi Soal 3:
❏ Mahasiswa paham cara menerjemahkan Class Diagram ke program Java
❏ Mahasiswa paham Class Inheritance dan Polymorphism
❏ Mahasiswa paham cara mendefinisikan Generic class
❏ Mahasiswa paham cara mendefinisikan Generic method
❏ Mahasiswa paham cara mendefinisikan Exception
15
CSGE601021 - Dasar - Dasar Pemrograman 2
Semester Ganjil - 2020/2021
Soal 4
Spesifikasi
Penamaan Berkas : TP12/<NamaClass>.java
: TP12/<NamaClass>Test. java
Contoh Penamaan : TP12/JadwalKuliah.java
: TP12/JadwalKuliahTest.java
Pengantar
Menyusun jadwal belajar kelompok bersama dengan teman-teman yang berbeda pilihan
kuliahnya tidak lah mudah.
Kita kadang menyusun jadwal kuliah(dan kegiatan lainnya) kita seperti berikut ini.
17:00
Misalkan tabel jadwal diatas adalah milik mhs A dan tabel jadwal selanjutnya adalah milik
mhs B.
16
CSGE601021 - Dasar - Dasar Pemrograman 2
Semester Ganjil - 2020/2021
17:00
Misalnya untuk kasus mhs A dan B ini akan menghasilkan table gabungan:
17:00
.
Jadwal kuliah seperti ini bisa saja kita simpan dalam matriks juga dengan ukuran 9x6
(bagian paling atas dan paling kiri adalah keterangan kolom dan baris, kedua bagian
tersebut tidak termasuk isi dari matriks).
17
CSGE601021 - Dasar - Dasar Pemrograman 2
Semester Ganjil - 2020/2021
Untuk layanan tersebut, Peserta dapat merancang nama method, parameter apa yang
sebaiknya diberikan dan bagaimana return value dari method ini. Dimungkinkan juga untuk
menambahkan method-method pembantu. Silahkan juga merancang unit test untuk menguji
implementasi yang kalian buat.
Refleksi Soal 4:
Pada akhir penyelesaian soal ini peserta diharapkan
❏ Dapat berkreasi, berinovasi ketika diberikan kebebasan dalam penyelesaian
masalah.
❏ Terlatih berhadapan dengan permasalahan dan mencari penyelesaian masalah
dengan memanfaatkan dan memodifikasi hasil kerja sebelumnya
❏ Mampu menganalogikan suatu permasalah dengan permasalahan lain yang sudah
ada solusi nya sehingga bisa memanfaatkan atau memodifikasi solusi sebelumnya.
❏ Mampu memiliki abstraksi menyusun elemen untuk generic type dengan class yang
dibuatnya sendiri
❏ Dapat melakukan operasi matriks dengan nested loop
❏ Dapat menguji program yang dibuat nya secara otomatis dengan memanfaatkan unit
test.
-- Akhir Soal TP 12 --
18