Tugas 11 - Impelemtasi Inheritance Network dan Rental Mobil

 Source Code : https://github.com/ItsPong/Tugas11

nama : Muhammad Shafa Narariya

NRP : 50525231016

Explanation:

  Network

1. Kelas Post

Kelas ini mewakili sebuah postingan di jaringan sosial.

  • Atribut:

    • User author: Penyusun atau pembuat postingan.
    • String content: Isi atau konten dari postingan.
    • List<User> likes: Daftar pengguna yang menyukai postingan ini.
  • Konstruktor:

    • Post(User author, String content): Membuat sebuah postingan dengan penulis tertentu dan konten yang diberikan. Daftar like awalnya kosong.
  • Metode:

    • getContent(): Mengembalikan konten dari postingan.
    • getAuthor(): Mengembalikan penulis postingan.
    • getLikes(): Mengembalikan daftar pengguna yang menyukai postingan.
    • addLike(User user): Menambahkan pengguna ke daftar like jika pengguna belum menyukai postingan tersebut. Jika berhasil, mencetak pesan tentang siapa yang menyukai postingan.
    • getLikeCount(): Mengembalikan jumlah pengguna yang telah menyukai postingan.

2. Kelas User

Kelas ini mewakili seorang pengguna di jaringan sosial.

  • Atribut:

    • String username: Nama pengguna.
    • List<Post> posts: Daftar postingan yang dibuat oleh pengguna.
  • Konstruktor:

    • User(String username): Membuat pengguna baru dengan nama pengguna yang diberikan dan daftar postingan kosong.
  • Metode:

    • getUsername(): Mengembalikan nama pengguna.
    • addPost(String content): Membuat postingan baru dengan konten tertentu, menambahkannya ke daftar postingan pengguna, dan mencetak pesan.
    • likePost(Post post): Menyukai postingan yang diberikan.
    • getPosts(): Mengembalikan daftar postingan yang dibuat oleh pengguna.

3. Kelas Network

Kelas ini bertindak sebagai jaringan sosial yang mengelola pengguna dan postingan.

  • Atribut:

    • List<User> users: Daftar semua pengguna di jaringan.
    • List<Post> posts: Daftar semua postingan di jaringan.
  • Konstruktor:

    • Network(): Membuat jaringan baru dengan daftar pengguna dan postingan kosong.
  • Metode:

    • addUser(String username): Menambahkan pengguna baru ke jaringan dengan nama yang diberikan dan mencetak pesan.
    • addPost(Post post): Menambahkan postingan ke daftar postingan di jaringan.
    • showAllPosts(): Menampilkan semua postingan di jaringan, termasuk nama penulis, konten, dan jumlah like yang dimiliki oleh setiap postingan.

4. Kelas Main

Kelas ini berisi metode main untuk menjalankan program.

  • Alur Program:
    • Membuat objek Network.
    • Menambahkan pengguna Alice, Bob, dan Bo ke jaringan.
    • Alice dan Bob membuat postingan.
    • Menambahkan postingan Alice dan Bob ke jaringan.
    • Alice dan Bo menyukai postingan pertama Bob, dan Bob menyukai postingan pertama Alice.
    • Menampilkan semua postingan beserta jumlah like.


Rental Mobil

1. Kelas Mobil

Kelas ini adalah kelas induk yang mewakili entitas mobil secara umum, dengan atribut dasar nama dan tipe, serta metode tampilkanInfo() untuk menampilkan informasi mobil.

  • Atribut:

    • String nama: Nama mobil, seperti "Toyota Avanza".
    • String tipe: Tipe mobil, seperti "MPV" atau "SUV".
  • Konstruktor:

    • Mobil(String nama, String tipe): Menginisialisasi mobil dengan nama dan tipe tertentu.
  • Metode:

    • tampilkanInfo(): Menampilkan informasi nama dan tipe mobil.

Mengupload: 21495 dari 21495 byte diupload.

2. Kelas MobilTersedia

Kelas ini adalah subclass dari Mobil dan digunakan untuk merepresentasikan mobil yang tersedia di rental. Tidak ada atribut atau metode tambahan di kelas ini, tetapi penggunaannya membantu membedakan jenis mobil yang tersedia dari yang disewa.

  • Konstruktor:
    • MobilTersedia(String nama, String tipe): Memanggil konstruktor kelas induk (Mobil) untuk menginisialisasi nama dan tipe mobil.

3. Kelas MobilDisewa

Kelas ini adalah subclass dari Mobil dan digunakan untuk merepresentasikan mobil yang disewa. Kelas ini memiliki atribut tambahan penyewa dan metode tampilkanInfo() yang diturunkan dari kelas induk, namun di-override untuk menampilkan nama penyewa.

  • Atribut:

    • String penyewa: Nama penyewa mobil.
  • Konstruktor:

    • MobilDisewa(String nama, String tipe, String penyewa): Memanggil konstruktor kelas induk (Mobil) untuk menginisialisasi nama dan tipe mobil, serta mengatur nama penyewa.
  • Metode:

    • tampilkanInfo(): Di-override untuk menampilkan informasi mobil beserta nama penyewa.


4. Kelas RentalMobil

Kelas ini berisi metode main untuk menjalankan program.

  • Alur Program:
    • Membuat daftar ArrayList untuk menyimpan objek Mobil.
    • Menambahkan beberapa mobil yang tersedia menggunakan kelas MobilTersedia.
    • Menambahkan beberapa mobil yang disewa menggunakan kelas MobilDisewa.
    • Menampilkan daftar mobil yang tersedia dengan memeriksa apakah objek adalah instansi MobilTersedia.
    • Menampilkan daftar mobil yang disewa dengan memeriksa apakah objek adalah instansi MobilDisewa.




Komentar

Postingan populer dari blog ini

Church-Turing Thesis dan kaitannya dengan Bahasa pemrograman

Tugas Data Peserta

Tugas Pertemuan 8