Tuesday, October 27, 2020

PENUGASAN 3 PEMROGRAMAN BERORIENTASI OBJEK (PBO)

Grouping Object dan Membuat Auction System dengan Menggunakan Java

Grouping Object
Dalam melakukan Grouping Object, kita bisa menggunakan collection yang ada di Java Collections. Java Collections adalah framework yang menyediakan sebuah wadah untuk menyimpan dan memanipulasi sekumpulan objek. Kegiatan yang dapat dilakukan pada sebuah data seperti pencarian, pengurutan, memasukkan, menghapus dapat dilakukan oleh Java Collections. Java Collections secara  sederhana merupakan sebuah objek. Java Collections menyediakan berbagai macam bentuk interfaces (Set, List, Queue, Deque, dan lain - lain) serta bentuk class (ArrayList, Vector, Linked List, Priority Queue, HashSet, Linked Hash Set, Tree Set, dan lain - lain).

Untuk mempermudah dalam memahami berbagai macam bentuk interfaces serta class yang ada di dalam Java Collections, berikut adalah source code dari berbagai macam interfaces serta class  yang ada di dalam Java Collections beserta output dari masing - masing source code tersebut.

Array List dengan Iterasi While

Array List dengan Iterasi For

Array List dengan Class
Agar program dapat berjalan, terlebih dahulu kita perlu membuat class tambahan bernama class mahasiswa untuk melakukan panggilan terhadap data - data yang nantinya akan dicetak di class ArrayListClass.

Penggabungan Array List
Menggunakan add.all untuk menggabungkan semua array list yang ada.

Penghapusan Data pada Array List
Menggunakan remove all untuk menghapus data yang ditentukan pada array list.

Penahanan Data pada Array List
Menggunakan retain all untuk menahan data yang ditentukan pada array list.

Linked List

Hash Set

Linked Hash Set

Hash Map

Hash Table

Auction System
Berikut saya lampirkan contoh source code yang saya buat dengan bahasa pemrograman Java untuk mensimulasikan kegiatan perlelangan barang, dimana kodingan yang saya buat ini terdiri dari 5 class dan masing - masing memiliki tujuan untuk mewakili komponen - komponen yang ada dalam kegiatan perlelangan. 

Auction
Class utama yang berisikan detail proses perlelangan dan merupakan tempat terjadinya perlelangan.

Lot
Class yang bertujuan untuk melakukan pengecekan detail barang seperti nama / deskripsi serta id barang untuk kemudian diteruskan ke class - class yang lain.

Person
Class yang bertujuan untuk menerima identitas bidder yang berpatisipasi dalam perlelangan dan melakukan record terhadap kegiatan yang dilakukan bidder selama kegiatan perlelangan berlangsung.

Bid
Class yang bertujuan untuk menerima nama bidder dan harga yang ditawarkannya untuk barang yang sedang dilelang. 

Auction Test
Class yang berisi inputan dari user.

Output dari source code di atas bila sudah dihubungkan dan di run akan tampak sebagai berikut :


Nama : Arvel Gavrilla Raissananda
NRP   : 05111940000040
Kelas : PBO - A







Share:

Tuesday, October 20, 2020

PENUGASAN 2 PEMROGRAMAN BERORIENTASI OBJEK (PBO)

Abstraksi dan Modularisasi Aplikasi dalam Smart TV dengan Java

Pengantar
Dalam membuat suatu perangkat lunak (software) maupun aplikasi, hal yang harus kita lakukan terlebih dahulu adalah membuat sebuah abstraksi. Apa yang dimaksud dengan abstraksiAbstraksi adalah suatu cara untuk melihat sebuah objek dalam bentuk yang lebih sederhana, dimana abstraksi berisikan gambaran umum mengenai program yang akan kita buat. 

Dalam membuat sebuah abstraksi hal yang dapat dilakukan adalah dengan membagi sebuah problem besar menjadi beberapa sub-problem yang lebih kecil, yaitu dengan membuat class-class yang akan menyusun program. Manfaat yang akan kita dapat dengan membuat abstraksi terlebih dahulu adalah abstraksi dapat memberikan kemudahan dalam pemahaman, penggunaan, dan pengembangan program di masa yang akan datang karena jika terjadi perubahan implementasinya tidak akan berpengaruh secara langsung pada penggunaan program. 

Selain abstraksi kita juga perlu memahami tentang modularisasi. Apa yang dimaksud dengan modularisasi? Modularisasi adalah proses membagi sebuah problem menjadi bagian - bagian yang terpisah sesuai dengan tujuan masing-masing. Tujuan dari modularisasi adalah agar program menjadi lebih mudah dipahami, reuseable, dan memudahkan maintenance.

Untuk mempermudah dalam memahami abstraksi dan modularisasi, berikut adalah contoh abstraksi dan modularisasi yang saya buat  berdasarkan aplikasi - aplikasi yang ada pada Smart TV.

Abstraksi

Gambaran User Interface (UI) pada Smart TV

Gambar di atas adalah salah satu bentuk abstraksi, dalam hal ini saya membuat sebuah model sederhana dari UI sebuah Smart TV. Bisa dilihat bahwa dari menu Home abstraksi yang saya buat terdapat beberapa fitur yang lazim ditemukan pada UI Smart TV seperti search bar, Wifi connection, User Account, jam untuk menunjukkan waktu, settings, serta beberapa widget dari aplikasi yang sudah di-install oleh user ke dalam Smart TV. 

Modularisasi

Diagram class - class  pada Smart TV

Pada gambar diagram di atas, bisa dilihat bahwa Home adalah kelas utama (main class) dari diagram dan memiliki beberapa sub-class seperti Apps, TV Channels, Recording, Settings, Account, Wifi, Search Bar Display, Time, Notification, dan Movies.

Berikut adalah source code dari main class Home

Dari diagram di atas bisa kita lihat bahwa sub class Apps ternyata terbagi lagi menjadi 2, yaitu List Apps dan Add Apps. Berikut adalah source code dari sub class Apps beserta "anak-anaknya" yaitu class List Apps dan class Add Apps.

Dari diagram dan kodingan diatas, dapat kita lihat bahwa sub class Apps memanggil kedua "anaknya" yaitu List Apps dan Add Apps dengan tujuan agar ketika seorang user memilih menu  Add Apps maka user dapat menambahkan berbagai aplikasi dan memasukkannya ke dalam List Apps, jika user langsung memilih List Apps maka pada Smart TV akan langsung ditampilkan berbagai macam pilihan aplikasi yang tersedia di dalam Smart TV.

Kita lanjutkan ke sub class berikutnya. Dari diagram di atas bisa kita lihat bahwa sub class TV Channels ternyata terbagi lagi menjadi 2, yaitu class List Channels dan class Add Channels. Berikut adalah source code dari sub class TV Channels beserta "anak-anaknya" yaitu List Channels dan Add Channels.

Dari diagram dan kodingan diatas, dapat kita lihat bahwa sub class TV Channels memanggil kedua "anaknya" yaitu List Channels dan Add Channels dengan tujuan agar ketika seorang user memilih menu  Add Channels maka user dapat menambahkan berbagai saluran televisi dan memasukkannya ke dalam List Channels, jika user langsung memilih List Channels maka pada Smart TV akan langsung ditampilkan berbagai macam pilihan saluran televisi beserta kategorinya yang tersedia di dalam Smart TV.

Kita lanjutkan ke sub class berikutnya. Dari diagram di atas bisa kita lihat bahwa sub class Settings ternyata terbagi lagi menjadi 4, yaitu  class Sign Upclass Log In, class Log Outdan class Help Center. Berikut adalah source code dari sub class Settings beserta "anak-anaknya" yaitu Sign Up, Log In, Log Outdan Help Center.

Dari diagram dan kodingan diatas, dapat kita lihat bahwa sub class Settings memanggil keempat "anaknya" yaitu  Sign UpLog In, Log Outdan Help Center dengan tujuan agar ketika seorang user memilih menu setting maka user dapat melakukan pengaturan sesuai dengan yang dikehendakinya seperti melakukan pendaftaran akun ( Sign Up), masuk ke dalam akun (Log In), keluar dari akun (Log Out), maupun mendapatkan bantuan melalui Help Center.

Sub class berikutnya yang akan kita bahas adalah sub class TimeDari diagram di atas bisa kita lihat bahwa sub class Time (bertugas melakukan penampilan waktu) melakukan pemanggilan terhadap "anaknya" yaitu class Clock Display yang akan menampilkan jam dan menit dalam format AM/PM. Namun penggunaan AM/PM tentu memerlukan batasan agar waktu yang ditampilkan tidak salah, oleh karena itu dilakukan pemanggilan kembali terhadap class Number Display . Berikut adalah source code dari sub class TV Time, class Clock Display, dan class Number Display.

Sub class terakhir yang akan kita bahas adalah sub class MoviesDari diagram di atas bisa kita lihat bahwa sub class Movies  melakukan pemanggilan terhadap ketiga "anaknya" yaitu class Watch List, class Favorites, dan class Bookmarks dimana jika user memilih menu movies maka user akan masuk ke halaman yang berisikan 3 menu diatas. Jika user memilih Watch List maka di layar TV akan ditampilkan daftar berbagai macam film yang dapat dinikmati oleh user, kemudian jika user memilih Favorites maka di layar TV akan ditampilkan berbagai macam film yang sudah diberi tanda "suka" oleh user., yang terakhir jika user memilih Bookmarks maka di layar TV akan ditampilkan berbagai macam film yang sudah diberikan tanda oleh user untuk disimpan agar bisa ditonton di kemudian waktu  . Berikut adalah source code dari sub class Movies, class Watch Listclass Favorites, dan class Favorites.

Demikian penjelasan singkat dari saya mengenai Abstraksi dan Modularisasi dengan menggunakan contoh aplikasi - aplikasi pada Smart TV. Abstraksi dan Modularisasi saling melengkapi dan kedua konsep ini sangat penting untuk dipahami dalam mempelajari Pemrograman Berorientasi Objek. 

Nama : Arvel Gavrilla Raissananda
NRP    : 05111940000040
Kelas  : PBO - A








Share:

Monday, October 12, 2020

PENUGASAN 1 PEMROGRAMAN BERORIENTASI OBJEK (PBO)

Biodata, "Classes And Objects", & Program Konversi Uang dengan Java


1. BIODATA
Sebelum kita mulai mempelajari bahasa pemrograman Java terlebih dahulu kita perlu memahami sesuatu yang begitu mendasar dalam bahasa pemrograman apapun, yaitu bagaimana cara kita melakukan pencetakan data sesuai dengan ketentuan bahasa pemrograman yang sedang digunakan. 

Bagaimana cara kita melakukan pencetakan data dengan bahasa Java? Supaya lebih paham lebih baik langsung kita praktekan. Di bawah ini adalah contoh source code bahasa Java dimana tujuan dari source code di bawah adalah melakukan pencetakan data biodata seseorang, dalam hal ini saya akan menggunakan biodata saya sendiri sebagai contoh.

Jika source code di atas telah di-compile dan dijalankan, maka akan didapatkan output seperti berikut :


Dari source code di atas, bisa kita lihat bahwa untuk melakukan pencetakan data di dalam bahasa java adalah dengan menggunakan system.out.print. Perbedaan antara system.out.print dan system.out.println adalah system.out.print hanya berfungsi untuk melakukan pencetakan data, sedangkan system.out.println berfungsi untuk melakukan pencetakan data sekaligus membuat baris baru.

2. CLASSES & OBJECTS
Saat kita mempelajari bahasa pemrograman Java, terlebih dahulu kita perlu mengerti apakah yang dimaksud dengan class (kelas) dan object (objek). Kedua hal ini penting untuk dimengerti khususnya saat kita mempelajari materi pemrograman berbasis objek. Untuk mempermudah dalam memahami class dan object, maka berikut saya lampirkan pembahasan dan penyelesaian dengan topik "Classes and Objects" yang saya kutip dari buku "Java How To Program 9th Edition" chapter 8. 

A. Time Class Case Study
Pada kasus pertama kita lihat terdapat 2 buah class, yaitu Time1 dan Time1Test. Class Time1 menunjukkan waktu dalam sehari, sedangkan Class Time1Test adalah class aplikasi dimana metode utama (main method) membuat sebuah objek (object) dari class Time1 dan memanggil method-nya. Kedua class tersebut harus dideklarasikan sebagai file yang terpisah karena keduanya adalah public class.

Di dalam class Time1 terdapat 3 macam variabel yaitu hour, minute, dan second. Ketiga variabel ini mempresentasikan waktu dalam format universal atau 24 jam (0-23). Class Time1 mengandung beberapa methods seperti setTime, toUniversalString, dan toString dimana ketiga methods tersebut dikenal dengan public services atau public interface.

Berikut adalah source code dari class Time1

Berikut adalah source code dari class Time1Test
 
Jika kedua source code class diatas telah dihubungkan, di-compile, dan dijalankan maka akan didapatkan output sebagai berikut :


B. Controlling Access to Members
Class - class di dalam pemrograman java dapat saling berhubungan satu sama lain, caranya adalah dengan saling memberikan akses terhadap member mereka masing - masing. Yang disebut dengan member adalah semua yang berada di dalam class, seperti atribute dan method. Setiap class, atribute, dan method  memiliki control access, dimana hak control access ini dituliskan secara eksplisit di awal pendeklarasian class dan method. Hak access ini biasa disebut dengan modifier dan memiliki beberapa tingkatan.

Secara umum ada 3 macam modifier yang lazim digunakan dalam java, yaitu :
Public
Atribute dan method  dari suatu kelas bisa diakses oleh semua class lain dalam program tersebut, dan biasanya hak akses public  digunakan jika suatu atribute boleh diakses secara langsung oleh kelas lain.

Private
Atribute dan method  dari suatu kelas hanya bisa diakses oleh method atau code dari class yang sama, dan biasanya hak akses private digunakan untuk melindungi atribute suatu class agar tidak dapat digunakan oleh class lain.

Protected
Atribute dan method  dari suatu kelas hanya bisa diakses oleh class yang sama, sub-class dari class yang sama, dan package (class yang berada satu package).  Modifier dengan hak akses protected hanya bisa digunakan pada member saja.

Berikut adalah source code dari class MemberAccessTest

Jika source code class di atas telah dihubungkan dengan class Time1, di-compile, dan dijalankan maka akan didapatkan error seperti berikut :




Error diatas merupakan contoh penerapan hak akses private, dimana error terjadi karena anggota private class tidak dapat diakses dari luar class. Dari source code ternyata line 14 - 16 mencoba untuk mengakses secara langsung variabel - variabel private seperti hour, minute, dan second dari object time di class Time1. Saat source code di-compile maka akan muncul error dengan peringatan bahwa private members tidak dapat diakses karena saat dihubungkan program mengasumsikan bahwa class Time1 sedang digunakan.

C. Referring to The Current Object's Members with The "This" Reference
Setiap object bisa mengakses sebuah reference ke dirinya sendiri dengan menggunakann kata kunci atau keyword this ("This" reference). Ketika sebuah method non - static dipanggil untuk sebuah object , badan dari method tersebut akan menggunakan kata kunci this secara implisit untuk merujuk pada variabel objects dan method lain. Hal ini memungkinkan kode dari class untuk mengetahui method mana yang harus dimanipulasi dan meminimalisir kemungkinan kesalahan logika oleh programmer karena kerancuan dari penamaan yang membingungkan.

Berikut adalah source code dari class ThisTest

Jika source code dari class di atas telah di-compile dan dijalankan maka akan didapatkan output seperti berikut :


 D. Time Class Case Study : Overloaded Constructors
Sebuah class perlu memiliki sebuah method yang kita sebut dengan constructor. Saat kita mendeklarasikan suatu object maka constructor adalah method yang pertama kali dipanggil, dimana fungsi dari constructor itu sendiri adalah menentukan bagaimana object dari suatu class akan diinisiasi. Sebuah class dapat memiliki constructor sebanyak 1 atau lebih (Jika programmer tidak menuliskan constructor maka Java akan membuat constructor pada class secara otomatis) 

Dalam membuat sebuah constructor, kita dapat menuliskannya seperti method namun dengan syarat nama constructor harus sama seperti nama class-nya serta hak aksesnya harus ditetapkan sebagai public. Overloading constructor adalah sebutan ketika kita membuat banyak constructor dalam 1 class, dimana saat program dieksekusi maka compiler akan mencari constructor yang sesuai dengan constructor yang dipanggil . Hal inilah yang disebut dengan overloading.

Untuk mempermudah dalam memahaminya, berikut saya lampirkan source code dari class Time2


Berikut adalah source code dari class Time2Test

Jika kedua source code class diatas telah dihubungkan, di-compile, dan dijalankan maka akan didapatkan output sebagai berikut :


Source code diatas merupakan contoh penerapan overloaded constructors, dimana pada sebuah class terdapat beberapa deklarasi constructor namun dengan signature yang berbeda - beda sehingga memungkinkan object dari suatu class dapat diinisiasikan secara berbeda - beda pula. Pada class Time2 terdapat 5 buah overloaded constructor dengan tujuan untuk mempermudah menginisialisasi objects ke dalam class baru Time2. Dari 5 constructor di atas, 4 constructor pertama akan memanggil constructor kelima dengan tujuan untuk memanggil method  setTime dimana method ini akan digunakan untuk melakukan pengecekan bahwa setiap nilai untuk hour (jam) berada dalam rentang universal (0-23) dan nilai untuk minute (menit) dan second (detik) berada dalam rentang 0 - 59.

3. KONVERSI MATA UANG
Berikut saya lampirkan contoh source code yang saya buat dengan bahasa pemrograman Java untuk melakukan konversi mata uang sederhana, dimana kodingan yang saya buat ini bertujuan untuk mengubah nilai mata uang Rupiah menjadi nilai mata uang lain seperti US Dollar, Euro, dan Poundsterling.

Jika source code di atas di-compile dan dijalankan, dimana pada kasus ini saya ingin mengubah 1.000.000 rupiah ke dalam mata uang lain, maka akan didapatkan output sebagai berikut :



Nama : Arvel Gavrilla Raissananda
NRP   : 05111940000040
Kelas : PBO - A








Share: