Tugas 11 - Impelemtasi Inheritance Network dan Rental Mobil

 Source Code : https://github.com/alifnurrohmans/tugas11pbo

nama : Alif Nurrohman

NRP : 50525231057

Explanation:


Network



1. Class User

User adalah kelas yang merepresentasikan pengguna. username: Variabel untuk menyimpan nama pengguna, yang bertipe data String. posts: Daftar (List) dari objek Post, yang digunakan untuk menyimpan semua postingan yang dibuat oleh pengguna ini. Tipe data ini diinisialisasi dengan sebuah objek ArrayList. Konstruktor kelas User menerima parameter username, yang digunakan untuk menginisialisasi nama pengguna ketika objek User dibuat. posts diinisialisasi sebagai objek ArrayList kosong untuk menampung postingan-postingan yang akan dibuat oleh pengguna.

addPost menerima parameter content yang berisi konten dari sebuah postingan. Sebuah objek Post baru dibuat, di mana konstruktor Post menerima dua parameter: objek User (yaitu this, yang merujuk pada pengguna saat ini) dan konten postingan (content).

Metode ini memungkinkan pengguna untuk memberikan "like" pada sebuah objek Post. likePost menerima objek Post sebagai parameter dan kemudian memanggil metode addLike pada objek Post tersebut, yang kemungkinan menambahkan pengguna ini ke daftar "likes" pada postingan tersebut.


2. Post

Konstruktor ini menerima dua parameter: author: Objek User yang membuat postingan. content: String yang berisi teks atau konten dari postingan. likes diinisialisasi sebagai ArrayList kosong untuk menampung pengguna yang memberikan "like".
addLike: Metode ini digunakan untuk menambahkan "like" dari seorang pengguna pada postingan. Sebelum menambahkan "like", ada pengecekan apakah pengguna tersebut sudah memberi "like" sebelumnya dengan menggunakan likes.contains(user). Jika pengguna sudah ada dalam daftar, maka "like" tidak akan ditambahkan lagi. Jika pengguna belum memberikan "like", pengguna tersebut akan ditambahkan ke daftar likes, dan sebuah pesan dicetak ke konsol yang menunjukkan siapa yang memberikan "like" dan pada konten postingan apa.


3. Network

Konstruktor ini menginisialisasi dua daftar kosong: users (untuk menyimpan pengguna) dan posts (untuk menyimpan postingan). Setiap kali objek Network dibuat, kedua daftar ini dimulai dengan kondisi kosong. 
addUser: Metode ini digunakan untuk menambahkan pengguna baru ke dalam jaringan. Menerima parameter username yang akan digunakan untuk membuat objek User baru. Pengguna yang baru dibuat ditambahkan ke dalam daftar users. Pesan ditampilkan di konsol untuk menunjukkan bahwa pengguna telah berhasil ditambahkan. Metode ini mengembalikan objek User yang baru dibuat, sehingga objek User ini dapat digunakan untuk interaksi lebih lanjut (misalnya untuk membuat postingan atau memberikan "like").
showAllPosts: Metode ini digunakan untuk menampilkan semua postingan yang ada di dalam jaringan sosial. Pertama, sebuah pesan dicetak di konsol yang menunjukkan bahwa daftar semua postingan akan ditampilkan. Kemudian, metode ini melakukan iterasi (loop) terhadap daftar posts, dan untuk setiap objek Post, ia mencetak informasi berikut: Nama penulis postingan (post.getAuthor().getUsername()). Konten postingan (post.getContent()). Jumlah "like" pada postingan (post.getLikeCount()).


4. Main
Mulai dengan membuat objek Network bernama network, yang akan digunakan untuk mengelola pengguna dan postingan.
Menambahkan tiga pengguna ke jaringan: Alice, Bob, dan Bo menggunakan metode addUser dari objek Network.
Alice dan Bob masing-masing membuat satu postingan menggunakan metode addPost pada objek User mereka. addPost akan membuat objek Post baru dengan konten yang diberikan dan menambahkannya ke daftar postingan pengguna tersebut.Di sini, postingan pertama dari Alice dan Bob ditambahkan ke jaringan menggunakan metode addPost dari objek Network. alice.getPosts().get(0) dan bob.getPosts().get(0) digunakan untuk mengakses postingan pertama yang dibuat oleh Alice dan Bob.



#output : 



Rental Mobil



1. Mobil
public Mobil(String nama, String tipe): Konstruktor ini memiliki dua parameter, nama dan tipe, yang digunakan untuk menginisialisasi atribut nama dan tipe objek. this.nama = nama; dan this.tipe = tipe; this merujuk pada objek saat ini. Di sini, this.nama merujuk pada atribut nama dari objek yang sedang dibuat, sementara nama adalah parameter yang diterima oleh konstruktor. Hal yang sama berlaku untuk tipe.


2. MobilTersedia
public class MobilTersedia extends Mobil: MobilTersedia adalah kelas yang meng-extend (mewarisi) kelas Mobil. Kata kunci extends digunakan untuk menunjukkan bahwa MobilTersedia adalah subclass dari kelas Mobil. Ini berarti kelas MobilTersedia mewarisi semua atribut dan metode yang ada di kelas Mobil. Dengan kata lain, MobilTersedia adalah spesialisasi dari Mobil, yang dapat memiliki tambahan fungsionalitas di masa depan.



3. MobilDisewa
public class MobilDisewa extends Mobil: Kelas MobilDisewa adalah subclass dari kelas Mobil. Ini berarti kelas MobilDisewa mewarisi semua atribut dan metode yang ada di kelas Mobil. MobilDisewa menambahkan fungsionalitas baru yang terkait dengan mobil yang disewa, seperti menyimpan informasi tentang penyewa. tampilkanInfo(); Memanggil metode tampilkanInfo() dari kelas induk untuk menampilkan informasi tentang nama dan tipe mobil. System.out.println("Penyewa: " + penyewa); Menambahkan informasi tentang penyewa setelah informasi mobil ditampilkan.




4. Rental Mobil
daftarMobil.add(new MobilTersedia("Toyota Avanza", "MPV")): Menambahkan objek MobilTersedia yang menyatakan mobil yang tersedia untuk disewa. daftarMobil.add(new MobilDisewa("Suzuki Ertiga", "MPV", "Budi")); Menambahkan objek MobilDisewa, yang berarti mobil ini sedang disewa oleh seorang penyewa dengan nama "Budi". Proses ini diulang untuk beberapa mobil lain yang tersedia dan yang disewa.
System.out.println("Daftar Mobil Tersedia:"): Mencetak judul untuk daftar mobil yang tersedia. for (Mobil mobil : daftarMobil) { if (mobil instanceof MobilTersedia) { mobil.tampilkanInfo(); } }: Ini adalah loop yang digunakan untuk menelusuri setiap objek dalam daftarMobil. Jika objek tersebut merupakan instansiasi dari kelas MobilTersedia (mobil yang tersedia), maka tampilkanInfo() dipanggil untuk menampilkan informasi mobil tersebut. Kata kunci instanceof digunakan untuk memeriksa apakah objek merupakan instance dari kelas tertentu. Dalam hal ini, mobil instanceof MobilTersedia memeriksa apakah objek mobil adalah objek dari kelas MobilTersedia.
Proses yang sama dilakukan untuk menampilkan daftar mobil yang sedang disewa. for (Mobil mobil : daftarMobil) { if (mobil instanceof MobilDisewa) { mobil.tampilkanInfo(); } }: Ini adalah loop yang memeriksa apakah objek mobil adalah instance dari kelas MobilDisewa (mobil yang disewa) dan jika benar, informasi mobil tersebut ditampilkan.



#Output : 











Komentar

Postingan populer dari blog ini

Evaluasi Tengah Semester

Tugas 14 - Pemrogramman GUI

Tugas 15 Final Project