Anda di halaman 1dari 18

​ CSGE601021 - Dasar - Dasar Pemrograman 2 

Semester Ganjil - 2020/2021​


 
 
 
 
 
 
 
 
 

 
 
 
 
Tugas Pemrograman 12 

Persiapan Ujian Akhir 


Pemrograman 

Rev. 0 (28 Desember 2020)  


Author: AA, MHH 

 
 
 
 
 
 
 
 
 
 
 
 
 
©​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

Persiapan UAS Programming

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

Penting: ​Sering-sering melakukan commit dan push pekerjaan,


terutama bila suatu bagian soal sudah selesai.

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

Kegiatan Tanggal & Waktu

Rilis Tugas Pemrograman 12 Senin, 28 Desember 2020 pukul 20.30 WIB


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

Mini SIAK: Mahasiswa dan Mata Kuliah

Spesifikasi
Penamaan Berkas : TP12/​<NamaClass>​.java
: TP12/​<NamaClass>Test​.java
Contoh Penamaan : ​TP12/Mahasiswa.java
: ​TP12/MahasiswaTest.java

Pesan ​Commit : Mengikuti arahan tahapan kerja.

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 

Tahapan Kerja 1a:


Menerjemahkan Class Diagram ke Java Source Code
Peserta dapat membuat berkas .java yang berkesesuaian dengan class diagram yang
diberikan. Buat field (deklarasi variabel) yang sesuai dengan atribut pada diagram
masing-masing kelas. Bila belum yakin apakah implementasinya sudah benar atau belum,
biarkan saja dulu.

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.

Lakukan ​git commit dengan pesan kurang lebih "​Tahap 1a,


menerjemahkan class diagram ke source code program java."​ kemudian
lakukan ​git push​.

7
 
CSGE601021 - Dasar - Dasar Pemrograman 2 
Semester Ganjil - 2020/2021 

Tahapan Kerja 1b:


Membuat unit testing.
Peserta dapat membuat unit test sendiri untuk menguji apakah proses yang dikerjakan
masing-masing method sudah sesuai harapan peserta atau belum.

Contoh Unit Test

1 import​ ​static​ ​org​.​junit​.​Assert​.*;


2 import​ ​java​.​io​.​File​;
3 import​ ​java​.​io​.​FileNotFoundException​;
4 import​ ​org​.​junit​.​Test​;
5 import​ ​java​.​util​.​Arrays​;
6 import​ ​java​.​util​.​List​;
7
8 public​ ​class​ ​MataKuliahTest​ {
9
10 @​Test
11 ​public​ ​void​ ​testKuliah01​(){
12 ​Mahasiswa​ ​mhs1​ = ​new​ ​Mahasiswa​(​"Burhan"​,​"129500004Y"​);
13 ​Mahasiswa​ ​mhs2​ = ​new​ ​Mahasiswa​(​"Bubur"​,​"1299123456"​);
14 ​MataKuliah​ ​kul1​ = ​new​ ​MataKuliah​(​"DDP2"​,​"CSGE601021"​);
15
16 kul1.tambahMhs(mhs1);
17 kul1.tambahMhs(mhs2);
18
19 ​Mahasiswa​[] ​daftarMhs​ = ​kul1​.​getDaftarMhs​();
20 ​List​<​Mahasiswa​> ​arr​ = ​Arrays​.​asList​(​daftarMhs​);
21
22 ​assertEquals​(​kul1​.​getNama​(), ​"DDP2"​);
23 ​assertEquals​(​kul1​.​getKode​(), ​"CSGE601021"​);
24 ​assertTrue​(​arr​.​contains​(​mhs1​));
25 ​assertTrue​(​arr​.​contains​(​mhs2​));

}
}

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

Tahapan Kerja 1c: Pengembangan.


Perangkat lunak yang bagus akan terus dipakai dan akan dikembangkan dengan
menambahkan layanan method-method baru. Dalam hal ini aplikasi mini SIAK anda ingin
dikembangkan lebih lanjut sehingga membutuhkan method tambahan untuk:

A. Mencetak seluruh MataKuliah yang diambil oleh masing-masing Mahasiswa.


B. Mengklasifikasikan berdasarkan kode mata kuliah. Empat huruf pertama dalam kode
mata kuliah di Fasilkom UI menentukan tipe dari mata kuliah dengan aturan sebagai
berikut:
a. UIGE = Mata Kuliah Wajib Universitas
b. UIST = Mata Kuliah Wajib Rumpun Sains dan Teknologi
c. CSGE = Mata Kuliah Wajib Fakultas
d. CSCM = Mata Kuliah Wajib Program Studi Ilmu Komputer
e. CSIM = Mata Kuliah Wajib Program Studi Sistem Informasi
f. CSCE = Mata Kuliah Peminatan Program Studi Ilmu Komputer
g. CSIE = Mata Kuliah Peminatan Program Studi Sistem Informasi

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

yey Soal 1 selesai !!

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

Mini SIAK: Dosen Pengampu Mata Kuliah

Spesifikasi
Penamaan Berkas : TP12/​<NamaClass>​.java
: TP12/​<NamaClass>Test.​ java
Contoh Penamaan : ​TP12/Dosen.java
: ​TP12/DosenTest.java

Pesan ​Commit : Mengikuti arahan tahapan kerja.

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.

Tahapan Kerja 2a:


Implementasikan Class Diagram dengan inheritance

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

Tahapan Kerja 2b: Pengembangan dengan kelas Dosen

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:

CSGE601021, Dasar-dasar Pemrograman 2


129500004Y, Ade Azurat
1234567890, Burhan

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

Tahapan Kerja 2c: Defensive Programming, terapkan exception


handler.
Perhatikan bahwa pada operasi berkas sangat mungkin terjadi kegagalan karena faktor luar
misalnya pengguna keliru memberikan nama berkas, atau berkas yang ingin dibaca sudah
terhapus; atau tidak bisa membuat berkas baru karena tidak punya akses atau hardisk
sudah penuh. Terapkan try-catch dan pengetahuan exception handler yang baik untuk
program yang telah dibuat sebelumnya. Buat juga ​unit test​ untuk menguji apakah exception
handler memang sudah diimplementasikan dengan sesuai.

Lakukan ​git commit dengan pesan kurang lebih "​Tahap 2c, Defensive
programming penerapan exception handler​" kemudian lakukan ​git push​.

yey Soal 2 selesai !!

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

Pesan ​Commit : Menyesuaikan dengan tahapan kerja pribadi (bebas).

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 

Tambahkan layanan berikut ini:


A. Memeriksa apakah dimensi kedua matriks sama atau tidak.
B. Memeriksa apakah matrik bujur sangkar atau tidak (berukuran ​NxN​)
C. Memberikan diagonal primer dari matriks ​NxN
D. Memberikan matriks segitiga atas dari matriks bujur sangkar ​NxN
E. melakukan perhitungan ​matriks invers 3x3​.

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.

Tahapan Kerja 3: Bebas


Pada soal 3 tahapan kerja bebas sesuai dengan yang dianggap mudah terlebih dahulu,
untuk setiap bagian yang berhasil diselesaikan segera lakukan commit dan push.

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

Matriks Jadwal Kuliah

Spesifikasi
Penamaan Berkas : TP12/​<NamaClass>​.java
: TP12/​<NamaClass>Test.​ java
Contoh Penamaan : ​TP12/JadwalKuliah.java
: ​TP12/JadwalKuliahTest.java

Pesan ​Commit : Menyesuaikan dengan tahapan kerja pribadi (bebas)

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.

Senin Selasa Rabu Kamis Jum'at Sabtu

8:00 Matdas1 Matdas1

9:00 Matdas1 Matdas1 BEM

10:00 DDP2 DDP2 BEM

11:00 DDP2 DDP2 BEM

13:00 PPW PPW

14:00 PPW PPW

15:00 Agama Agama

16:00 Agama Agama

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 

Senin Selasa Rabu Kamis Jum'at Sabtu

8:00 MD2 MD2

9:00 MD2 MD2 BEM

10:00 DDP2 DDP2 BEM

11:00 DDP2 DDP2 BEM

13:00 PPW PPW

14:00 PPW PPW

15:00 Agama Agama

16:00 Agama Agama

17:00

Tugas kalian adalah memodifikasi GenericMatriks.java sehingga bisa mengoperasikan


kedua matriks diatas, sehingga dapat menemukan secara otomatis jadwal waktu mhs A dan
B bisa bertemu untuk belajar bersama tanpa bentrok dengan jadwal kuliahnya.

Misalnya untuk kasus mhs A dan B ini akan menghasilkan table gabungan:

Senin Selasa Rabu Kamis Jum'at Sabtu

8:00 Matdas1 MD2 MD2 Matdas1

9:00 Matdas1 MD2 MD2 Matdas1 BEM

10:00 DDP2 DDP2 BEM

11:00 DDP2 DDP2 BEM

13:00 PPW PPW

14:00 PPW PPW

15:00 Agama Agama Agama Agama

16:00 Agama Agama Agama Agama

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.

Tahapan Kerja 4: Bebas


Pada soal 4 tahapan kerja bebas sesuai dengan pola kerja masing-masing. Untuk setiap
bagian yang berhasil diselesaikan segera lakukan commit dan push.

Lakukan ​git commit dengan pesan kurang lebih "​Tahap 4...,


menggabungkan dua matriks generics……. ​" kemudian lakukan ​git push​.

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

Anda mungkin juga menyukai