Thursday, October 24, 2024

ETS PBO G

Nama:    Basten Andika Salim
NRP:      5025231132


Evaluasi Tengah Semester Pemrograman Berorientasi Obyek (G)


Source Code ( keseluruhan) : https://github.com/rowlys/PBO-G/tree/main/ETS%20PBO


1. Apa yang dimaksud dengan inheritance/pewarisan dalam OOP? Berikan contoh penerapan pewarisan dengan menunjukkan hubungan antara kelas induk dan kelas turunan.


Jawaban: 

Inheritance adalah sebuah mekanisme dalam OOP yang dapat memberikan solusi terhadap permasalahan duplikasi kode. Ini bekerja dengan membuat sebuah 'kelas induk' yang memiliki method dan attribute yang akan banyak digunakan kelas lain, lalu setiap kali dibuatnya sebuah kelas yang menggunakan method dan attribute tersebut akan dilakukan 'pewarisan' dari kelas induk, sehingga menghasilkan kelas turunan. Dari kelas turunan ini pun dapat ditambahkan method-method dan attribute-attribute baru.

Sebagai contoh adalah kelas induk 'Peminjaman' yang memiliki sistem untuk meminjam barang dari sebuah perpustakaan. Kelas induk tersebut mewarisi properti nya kepada dua kelas turunan, yaitu 'PeminjamanBuku' dan 'PeminjamanFilm'. Dalam kelas induk 'Peminjaman', bisa saja memiliki method yang menampilkan user interface dan method yang menerima input dari pengguna, sedangkan pada kedua kelas turunannya ditambahkan method sistem peminjamannya masing-masing.


2. Apakah fungsi konstruktor dalam sebuah kelas atau obyek? Buatlah kelas Book yang memiliki dua atribut, yaitu judul, penulis, tahun terbit, nama penerbit, kategori buku. Tambahkan konstruktor untuk menginisialisasi atribut tersebut dan tambahkan metode printDetails() untuk mencetak detail buku.


Jawaban:

Konstruktor adalah fungsi yang menginisialisasi attribute awal yang dimasukkan pengguna saat sebuah obyek dari sebuah kelas telah dibuat.


Source Code: https://github.com/rowlys/PBO-G/tree/main/ETS%20PBO/ETS%20PBO%20-%202%20(Book%20Class)

Berikut adalah kelas Book:



3. Studi kasus Parking Ticket Machine

Source Code: https://github.com/rowlys/PBO-G/tree/main/ETS%20PBO/ETS%20PBO%20-%203%20(ParkingTicketMachine%20Class)

Berikut adalah kode daari kelas ParkingTicketMachine:




Berikut adalah pembuatan obyek dari kelas ParkingTicketMachine:



Berikut hasil dari method insertMoney, issueTicket, dan getTimePurchased():




4. Studi kasus aplikasi FoodOrder

Source Code: https://github.com/rowlys/PBO-G/tree/main/ETS%20PBO/ETS%20PBO%20-%204%20(Aplikasi%20FoodOrder)

a. Berikut adalah diagram kelas dari aplikasi FoodOrder:



b. Berikut adalah implementasinya:


Kelas Menu:




Kelas Pesan:




Kelas FoodOrder:






Hasil penggunaan program (method state()): 



Hasil printAllOrder:



Wednesday, October 23, 2024

Tugas Pertemuan 8

Nama:    Basten Andika Salim

NRP:      5025231132


Source code: https://github.com/rowlys/PBO-G/tree/main/World%20of%20Zuul

Tugas Pembuatan Game 'World of Zuul'

Berikut adalah Class Diagram dari program:



Class Command
Class ini akan menyimpan input pengguna yang terdiri dari dua kata, perintah dan kata kedua opsional.

Class CommandWords

Class ini menyimpan kata-kata perintah yang valid.

Class Parser
Class ini akan memisahkan input dari pengguna (perintah dan kata kedua) dan memeriksa perintah dalam input tersebut.

Class Room
Class ini menyimpan data-data ruangan dalam, termasuk deskripsinya. Class ini juga menyimpan informasi exit dari setiap ruangan.

Class Game

Ini adalah class utama dalam program yang mengatur jalannya game. Terdapat cukup banyak method dalam class ini, yaitu:

    Method createRoom
        Membuat ruangan yang akan digunakan dalam game.


    Method play
        Method ini akan terus membuat game berjalan dan menerima input sampai pengguna ingin berhenti.


    Method printWelcome
        Method yang menampilkan intro dari game.


    Method processCommand
        Method yang meng-handle setiap perintah dari pengguna.


    Method printHelp
        Method ini akan menampilkan perintah-perintah valid dalam game.


    Method goRoom
        Menampilkan arah apa saja yang bisa dilalui pemain dan melakukan pemindahan ruangan.



    Method quit
        Method ini yang meng-handle bilang pengguna memasukkan perintah 'quit'.




Contoh Jalannya Game:









Tuesday, October 8, 2024

Tugas Pertemuan 6

 Nama:    Basten Andika Salim

NRP:      5025231132


Source code: https://github.com/rowlys/PBO-G/tree/main/Tech%20Support/Tech%20Support

Tugas Pembuatan Sistem Tech Support

Proyek ini akan memiliki diagram berikut:



1. inputReader Class

    Class ini berfungsi untuk membaca input dari pengguna.


2. Responder Class
    Class ini akan bekerja sebagai pembuat response untuk Sistem Tech Support. Berikut adalah library dan constructor dari class:


    Berikutnya terdapat method generateResponse:



     Untuk isi dari answers dan keywords bisa disesuaikan keinginan, tetapi dalam pengerjaan tugas ini akan digunakan answers dan keywords yang sama dengan source code yang diberikan:




3. SupportSystem Class



    Class inilah yang akan menerima input menggunakan class inputReader danmengeluarkan output dari class Responder.


Penggunanaan:





Wednesday, October 2, 2024

Tugas Pertemuan 5

   

Nama:    Basten Andika Salim

NRP:      5025231132


Source code: https://github.com/rowlys/PBO-G/tree/main/Auction

Tugas Pembuatan Sistem Auction


class Person:


Class ini akan bertindak sebagai perwalian seorang 'bidder', sehingga hanya memerlukan sebuah variabel nama.


class Bid:


Class ini akan bekerja sebagai 'bid' dari seseorang, sehingga class ini memerlukan seorang 'bidder' dan sebuah angka yang menjadi uang.

class Lot:


Class ini akan menyimpan semua yang dibutuhkan untuk sebuah 'lot' dalam sebuah auction, yaitu barang yang sedang dijual, 'bid' untuk barang tersebut, dan 'bidder' yang mengajukan 'bid' tersebut.

class Auction:



Class Auction akan berfungsi sebagai manager semua dari class Lot, Bid, dan Person. Ia akan membuat sebuah array Lot yang akan diisikan setiap kali method newLot terpanggil. Berikut adalah fungsi pengajuan sebuah 'bid':



Penggunaan:


Pembuatan sebuah lot baru


Output showLots() jika tidak ada bid


Pembuatan bid oleh person1



Output showLots() setelah pembuatan bid