Inheritance dan Rental Mobil

 Inheritance Network


 


Network.java


Attributes: Network memiliki dua atribut:

  • users: Daftar (list) untuk menyimpan semua objek User.
  • posts: Daftar untuk menyimpan semua objek Post
Constructor: public Network() menginisialisasi list users dan posts sebagai list kosong menggunakan ArrayList.

addUser: Metode addUser(String username) membuat objek User baru dengan username yang diberikan, menambahkannya ke list users, mencetak pesan konfirmasi, dan mengembalikan objek User yang baru.

addPost: Metode addPost(Post post) menambahkan objek Post ke list posts.

showAllPosts: Metode showAllPosts() mencetak daftar semua postingan beserta detailnya (username, konten, dan jumlah likes).


Post.java




Kelas Post ini merepresentasikan sebuah postingan dalam jaringan sosial dengan atribut sebagai berikut:

  1. Attributes: author (penulis), content (isi postingan), dan likes (daftar pengguna yang menyukai postingan).

  2. Constructor: Post(User author, String content) menginisialisasi author, content, dan list kosong likes.

  3. Methods:

    • getContent() dan getAuthor(): Mengembalikan konten dan penulis postingan.
    • getLikes() dan getLikeCount(): Mengembalikan daftar pengguna yang menyukai dan jumlah likes.
    • addLike(User user): Menambah user ke daftar likes jika belum ada, lalu mencetak konfirmasi.

User.java




Kelas User ini merepresentasikan pengguna dalam jaringan sosial dengan atribut dan metode berikut:

  1. Attributes:

    • username: Nama pengguna.
    • posts: Daftar postingan yang dibuat oleh pengguna.
  2. Constructor:

    • User(String username) menginisialisasi username dan list posts kosong.
  3. Methods:

    • getUsername(): Mengembalikan username.
    • addPost(String content): Membuat dan menambahkan postingan baru ke posts pengguna, serta mencetak konfirmasi.
    • likePost(Post post): Menyukai postingan yang diberikan.
    • getPosts(): Mengembalikan daftar postingan pengguna.

Main.java




Kode di atas adalah kelas Main yang menjalankan contoh interaksi dalam jaringan sosial Network.

  1. Inisialisasi Jaringan:

    • Membuat objek Network bernama network.
  2. Menambah Pengguna:

    • Menambahkan dua pengguna, Alice dan Bob, ke jaringan menggunakan metode addUser.
  3. Membuat Postingan:

    • Alice dan Bob masing-masing membuat satu postingan menggunakan metode addPost dari kelas User.
  4. Menambahkan Postingan ke Network:

    • Menambahkan postingan Alice dan Bob ke daftar postingan di network.
  5. Memberi Like pada Postingan:

    • Bob menyukai postingan Alice, dan Alice menyukai postingan Bob menggunakan metode likePost.
  6. Menampilkan Semua Postingan:

    • network.showAllPosts() mencetak daftar semua postingan beserta penulis, konten, dan jumlah likes.


Output






Rental



Mobil



Kode ini mendefinisikan kelas Mobil yang merupakan subclass dari Kendaraan.

  • Mobil memiliki atribut tambahan jumlahRoda selain atribut merk, model, dan tahunProduksi yang diwariskan dari kelas Kendaraan.
  • Konstruktor Mobil menerima merk, model, tahunProduksi, dan jumlahRoda, lalu memanggil konstruktor super untuk menginisialisasi atribut dari Kendaraan dan mengatur nilai jumlahRoda.
  • Metode getInfo di-override untuk menambahkan informasi jumlahRoda ke hasil getInfo dari kelas Kendaraan.

Motor




Kelas Motor adalah subclass dari Kendaraan yang menambahkan atribut jumlahRoda. Konstruktor Motor menginisialisasi atribut dari Kendaraan dan atribut khusus jumlahRoda. Metode getInfo di-override untuk menampilkan informasi lengkap, termasuk jumlahRoda, dengan menambahkan informasi tersebut ke hasil getInfo dari Kendaraan.


Sepeda




Kelas Sepeda adalah subclass dari Kendaraan yang menambahkan atribut jenis untuk menyimpan tipe sepeda. Konstruktor Sepeda menginisialisasi atribut Kendaraan dan jenis. Metode getInfo di-override untuk menambahkan informasi jenis ke hasil getInfo dari Kendaraan, memberikan informasi lengkap tentang sepeda.


Rental






Kelas Rental menyimpan daftar Kendaraan yang tersedia untuk disewa dan daftar penyewa yang telah menyewa kendaraan.

  • Atribut kendaraanTersedia: Menyimpan objek Kendaraan yang dapat disewa.
  • Atribut daftarPenyewa: Menyimpan informasi nama penyewa dan kendaraan yang disewa dalam bentuk string.


Kendaraan




Kelas Kendaraan merepresentasikan kendaraan dengan atribut dasar:

  • Atribut merk, model, dan tahunProduksi: Mewakili merk, model, dan tahun produksi kendaraan.
  • Konstruktor Kendaraan: Menginisialisasi merk, model, dan tahunProduksi saat objek Kendaraan dibuat.
  • Metode getInfo: Mengembalikan string yang berisi informasi lengkap tentang merk, model, dan tahun produksi kendaraan.


Main




Kelas Main menjalankan program utama untuk mengelola rental kendaraan. Di sini:

  1. Membuat objek Rental untuk menyimpan data kendaraan dan penyewa.
  2. Menambahkan kendaraan ke dalam daftar rental:
    • Mobil dengan merk "Toyota", model "Avanza", tahun 2020, dan 4 roda.
    • Motor dengan merk "Yamaha", model "NMAX", tahun 2021, dan 2 roda.
    • Sepeda dengan merk "Polygon", model "Xtrada", tahun 2019, jenis "Gunung".
  3. Menampilkan daftar kendaraan yang tersedia di rental.
  4. Mendaftarkan penyewa:
    • "Ali" menyewa Mobil "Toyota Avanza".
    • "Budi" menyewa Sepeda "Polygon Xtrada".
  5. Menampilkan daftar penyewa beserta informasi kendaraan yang mereka sewa.

Output




Github : https://github.com/rafftd/PBO-inheritance.git













Komentar

Postingan populer dari blog ini

ETS PBO

Global User Interface