1. Jelaskan apa perbedaan kelas dan objek dalam pemrograman berorientasi objek. Berikan contoh dengan kode sederhana yang menunjukkan hubungan antara kelas dan objek
-Class adalah suatu entitias atau cetakan (Blueprint) yang menggambarkan keadaan dan perilaku dari sesuatu yang logis. Class berisi cetakan fungsi, variabel, dan lain lainnya.
-Objek adalah sebuah instansiasi dari atau perwujudan dari suatu class pada suatu waktu/state yang disimpan pada memory.
-Hubungan class dan objek, bisa dilihat kita membuat sebuah class yang berisi blueprint dari objek yang nantinya akan dibuat. Dengan menginstansiasi objek kita gunakan dari blueprint ClassETS, ClassETS classETS = new ClassETS(10, "Test");.
2. Buatlah Aplikasi CofeeMachine yang menyediakan kopi dengan harga tertentu
publicclassCoffee{
privateString name;
privatefloat cost;
publicCoffee(Stringname, floatcost)
{
this.name= name;
this.cost= cost;
}
publicStringgetName()
{
return name;
}
publicfloatgetCost()
{
return cost;
}
}
publicclassCustomer{
publicStringname;
publicfloatbalance;
publicCustomer(Stringname, floatbalance)
{
this.name=name;
this.balance=balance;
}
publicStringgetName()
{
returnname;
}
publicfloatgetBalance()
{
returnbalance;
}
publicbooleanuseBalance(floatamount)
{
if(amount<0f)
{
System.out.println("Cannot use negative balance amount!");
3. Apa yang dimaksud dengan enkapsulasi dalam pemrograman berorientasi objek? Berikan contoh bagaimana enkapsulasi diterapkan dalam kelas menggunakan modifier private dan method akses (getter dan setter)
Enkapsulasi adalah sebuah konsep yang mengajarkan bagaimana menyembunyikan detail implementasi dari pengguna kelas dan hanya menyediakan antarmuka publik yang diperlukan.. Enkapsulasi dicapai dengan mendeklarasikan variabel suatu kelas menjadi private, yang berarti data tersebut hanya dapat terakses oleh class itu sendiri. Dan jika ingin diakses oleh luar, sebuah getter dan setter yang merupakan sebuah metode public.
Contoh:
publicclassUser{
privateStringname;
privateintage;
privatefloatbalance;
publicUser()
{
}
publicStringgetDisplay()
{
returnname+", age : "+age+" , balance : "+balance;
}
publicvoidsetName(Stringvalue)
{
if(value==null)
{
System.out.println("Cannot set with null name!");
return;
}
this.name=value;
}
publicvoidsetAge(intage)
{
if(age<0)
{
System.out.println("Cannot set a negative age!");
return;
}
this.age=age;
}
publicvoidsetBalance(floatbalance)
{
if(balance<0)
{
System.out.println("Cannot set a negative balance!");
return;
}
this.balance=balance;
}
publicStringgetName()
{
returnname;
}
publicintgetAge()
{
returnage;
}
publicfloatgetBalance()
{
returnbalance;
}
}
publicclassMain{
publicstaticvoidmain(String[] args){
Useruser=newUser();
user.setName("Fajar");
user.setAge(-1);
user.setBalance(-100f);
user.setAge(19);
user.setBalance(9999999f);
System.out.println(user.getDisplay());
}
}
Hasil :
Penjelasan : Bisa dilihat implementasi dari User tidak diperlihatkan. Dan yang hanya diperlihatkan sebuah antarmuka publik yang digunakan untuk memodifikasi dari object tersebut. Sehingga state dari object bisa dipastikan tidak menyimpang dari apa yang diinginkan oleh class tersebut.
4. Buatlah dua kelas BankAccount dan Customer. Setiap objek Customer memiliki akun bank (BankAccount). Buatlah metode dalam Customer yang memungkinkan nasabah untuk melakukan penyetoran (deposit) dan penarikan (withdraw) melalui akun bank mereka. Pastikan interaksi terjadi melalui metode dalam Customer.
publicclassBankAccount{
privateString bankType;
privatefloat balance;
publicBankAccount(StringbankType)
{
this.bankType= bankType;
}
publicbooleandeposit(floatbalance)
{
if(balance <0)
{
returnfalse;
}
this.balance+= balance;
returntrue;
}
publicbooleansetBalance(floatbalance)
{
if(balance <0)
{
returnfalse;
}
this.balance= balance;
returntrue;
}
publicfloatwithdraw(floatamount)
{
if(amount <0)
{
return0f;
}
if(amount > balance)
{
floattempBalance= balance;
setBalance(0);
return tempBalance;
}
setBalance(balance - amount);
return amount;
}
publicfloatgetBalance()
{
return balance;
}
publicStringgetBankType()
{
return bankType;
}
}
publicclassCustomer{
privateStringname;
privateBankAccountbankAccount;
publicCustomer(Stringname, StringbankType)
{
this.name=name;
this.bankAccount=newBankAccount(bankType);
}
publicbooleandeposit(floatamount)
{
if(bankAccount.deposit(amount))
{
System.out.println(name+" ,successfully deposited "+amount+" to bank account "+bankAccount.getBankType());
5. Buatlah Desain Class Diagram untuk Trip Application yang digunakan untuk mengelola perjalanan. Setiap perjalanan memiliki atribut destination, distance, dan costPerKM. Fitur aplikasi sebagai berikut:
Menghitung total biaya perjalanan berdasarkan jarak dan biaya per kilometer.
Menambah penumpang dan mencetak daftar penumpang
Membatalkan perjalanan jika penumpang kurang dari jumlah minimum
Nama : Kadek Fajar Pramartha Yasodana NRP : 5025231185 Kelas : PBO A Abstraksi & Simulasi Fox & Rabit 1. Tuliskan implementasi dari program kecil Abstract Class Makhluk hidup yang diwariskan kepada manusia, hewan, dan tumbuhan Source Code : GitHub Pada soal nomor ini, kita hanya perlu membuat sebuah abstract class makhluk hidup dengan beberapa metode abstrak juga. Setelah itu kita inherit classnya menjadi beberapa subclass Manusia, Hewan, dan Tumbuhan. Terdapat beberapa class seperti MakhlukHidup.java public abstract class MakhlukHidup { protected String name ; public MakhlukHidup (String name) { this . name = name ; } public abstract void doSomething () ; public abstract void grow () ; public abstract void breathe () ; } Class ini merupakan class yang sebagai template sebuah class makhluk hidup. dengan beberapa method yang harus di override oleh subclassnya yaitu doSomething, grow, dan breathe Manusia.java public class Manusia extends M...
Nama : Kadek Fajar Pramartha Yasodana NRP : 5025231185 Kelas : PWEB E Membuat Website CRUD Pendaftaran Siswa PHP MySQL Untuk membuat website CRUD ini saya menggunakan php, mysql, dan beberapa tools lain yang memudahkan development seperti tailwindcss dan Docker. Docker nantinya akan digunakan untuk deployment agar hasil yang didapatkan sudah pasti. Untuk runner dari php saya menggunakan nginx dan php-fpm agar lebih standard. Source Code : GitHub Untuk folder project terdapat beberapa folder dan file folder root : Untuk menyimpan shell code dan config lainnya folder Dockerfile : Untuk menyimpan file Docker folder public : Untuk menyimpan file php yang nantinya akan dilakukan request. nginx.conf : Config dari nginx yang akan digunakan untuk menjalankan website deploy.sh : Script untuk melakukan deploy menggunakan docker. Hasil index.php form-daftar.php list-siswa.php Melakukan Input form-update.php & Melakukan Edit id:12 Jl.Mulyosari -> jl.Denpasar Melakukan Delete id:12 API ...
Nama : Kadek Fajar Pramartha Yasodana NRP : 5025231185 Kelas : PBO A Inheritance Pada kali ini saya akan melakukan modifikasi dari template latihan soal yang diberikan dengan mengikuti kriteria kriteria modifikasi dari latihan. Dalam project ini terdapat juga factory yang akan digunakan untuk membuat post yang diinginkan user menggunakan generic method. Source Code : GitHub User import java.util.HashMap ; import java.util.HashSet ; import java.util.Set ; import java.util.UUID ; public class User { private Network network ; private String username ; private UUID id ; private HashSet<UUID> postReference ; private HashSet<UUID> commentReference ; private HashSet<UUID> followersReference ; public User () { postReference = new HashSet<>() ; } public void set (Network network , UUID id , String username) { this . id = id ; this . network = network ; this . username = username ; po...
Comments
Post a Comment