package AlfaMantul;
import java.util.Date;
public class main {
public static void main(String[] args) {
// Membuat beberapa produk
elektronik laptop = new elektronik("Laptop", 8000000, 8, 2);
pakaian kaos = new pakaian("Kaos", 110000, 7, "M", "Hitam");
makanan kacang = new makanan("Kacang Pilus", 5000, 28, new Date());
// Membuat keranjang belanja
keranjangBelanja keranjang = new keranjangBelanja();
// Menambahkan produk ke keranjang
keranjang.tambahProduk(tv, 1);
keranjang.tambahProduk(kaos, 2);
keranjang.tambahProduk(roti, 5);
// Menampilkan isi keranjang
keranjang.displayKeranjang();
}
}
Penjelasan
- Deklarasi package dan Impor
package AlfaMantul;
import java.util.Date;
Package AlfaMantul
mengelompokkan semua kelas terkait dalam proyek ini agar terorganisir dan mudah diakses. Kelas Date dari pustaka Java diimpor untuk menangani tanggal kadaluarsa pada produk makanan.
- Kelas
main
public class main {
public static void main(String[] args) {
// Kode di sini
}
}
Kelas main
adalah titik awal program dan berisi metode main
, yang dijalankan pertama kali saat program dimulai.
- Membuat Objek Produk
Di sini, tiga objek produk dari berbagai jenis dibuat: elektronik, pakaian, dan makanan. Setiap produk memiliki properti yang relevan seperti harga, stok, dan atribut khusus untuk setiap jenis produk.
elektronik laptop = new elektronik("Laptop", 8000000, 8, 2);
pakaian kaos = new pakaian("Kaos", 110000, 7, "M", "Hitam");
makanan kacang = new makanan("Kacang Pilus", 5000, 28, new Date());
laptop
: Objek elektronik
dengan nama "Laptop", harga 8.000.000, stok 8 unit, dan garansi 2 tahun.
kaos
: Objek pakaian
dengan nama "Kaos", harga 110.000, stok 7 unit, ukuran "M", dan warna "Hitam".
kacang
: Objek makanan
dengan nama "Kacang Pilus", harga 5.000, stok 28 unit, dan tanggal kedaluwarsa yang diatur pada tanggal saat program dijalankan.
- Membuat Objek keranjangBelanja
keranjangBelanja keranjang = new keranjangBelanja();
Objek keranjang
dari kelas keranjangBelanja
dibuat untuk menyimpan produk yang dipilih pengguna. keranjangBelanja
bertindak sebagai penyimpanan sementara untuk produk yang akan dibeli.
- Menambahkan Produk ke Keranjang
keranjang.tambahProduk(laptop, 1);
keranjang.tambahProduk(kaos, 2);
keranjang.tambahProduk(kacang, 5);
Metode tambahProduk
pada objek keranjang
menambahkan produk beserta kuantitasnya ke keranjang belanja. Di sini :
laptop
ditambahkan dengan kuantitas 1 unit.
kaos
ditambahkan dengan kuantitas 2 unit.
kacang
ditambahkan dengan kuantitas 5 unit.
- Menampilkan Isi Keranjang
keranjang.displayKeranjang();
Metode displayKeranjang
menampilkan semua produk yang telah ditambahkan ke keranjang belanja beserta detailnya, seperti nama produk, harga, kuantitas, dan total harga.
package AlfaMantul;
public class Produk {
private String namaProduk;
private int harga;
private int jumlahStok;
public Produk(String namaProduk, int harga, int jumlahStok) {
this.namaProduk = namaProduk;
this.harga = harga;
this.jumlahStok = jumlahStok;
}
// Setter NamaProduk
public String getNamaProduk() {
return namaProduk;
}
// Setter Harga
public int getHarga() {
return harga;
}
// Setter JumlahStok
public int getJumlahStok() {
return jumlahStok;
}
public void kurangiStok(int jumlah) {
this.jumlahStok -= jumlah;
}
public void displayInfo(){
System.out.println("Toko Alfa Mantul");
System.out.println("Nama Produk : " + namaProduk);
System.out.println("Harga Produk : " + harga);
System.out.println("Jumlah Stok : " + jumlahStok);
}
}
Penjelasan
- Deklarasi Package
package AlfaMantul;
Package AlfaMantul
digunakan untuk mengelompokkan kelas ini bersama kelas-kelas lainnya yang berkaitan dalam satu modul atau direktori.
- Kelas
Produk
public class Produk {
// Kode di dalam kelas
}
Kelas Produk
bersifat public
, sehingga dapat diakses oleh kelas lain di luar paket ini. Kelas ini berisi atribut dan metode yang berkaitan dengan informasi dasar produk.
- Atribut (Properti Produk)
private String namaProduk;
private int harga;
private int jumlahStok;
Atribut namaProduk
, harga
, dan jumlahStok
masing-masing digunakan untuk menyimpan :
namaProduk
: Nama dari produk, misalnya "Laptop" atau "Kaos".
harga
: Harga produk dalam bentuk bilangan bulat (integer).
jumlahStok
: Jumlah stok produk yang tersedia.
Atribut-atribut ini dideklarasikan sebagai private
, yang artinya hanya dapat diakses dari dalam kelas Produk
saja, sehingga tidak bisa diakses langsung oleh kelas luar.
- Konstruktor
Produk
public Produk(String namaProduk, int harga, int jumlahStok) {
this.namaProduk = namaProduk;
this.harga = harga;
this.jumlahStok = jumlahStok;
}
Konstruktor ini digunakan untuk menginisialisasi objek Produk
dengan nilai-nilai awal untuk namaProduk
, harga
, dan jumlahStok
. Ketika objek Produk
dibuat, nilai-nilai yang diberikan sebagai parameter akan disimpan ke dalam atribut kelas.
- Metode Getter
public String getNamaProduk() {
return namaProduk;
}
public int getHarga() {
return harga;
}
public int getJumlahStok() {
return jumlahStok;
}
Ketiga metode di atas adalah metode "getter", yang berfungsi untuk mengakses nilai dari atribut namaProduk
, harga
, dan jumlahStok
. Metode ini memungkinkan kelas lain untuk mengambil nilai atribut tersebut tanpa perlu mengaksesnya secara langsung.
- Metode
kurangiStok
public void kurangiStok(int jumlah) {
this.jumlahStok -= jumlah;
}
Metode kurangiStok
digunakan untuk mengurangi jumlah stok produk. Metode ini menerima parameter jumlah
, yang kemudian akan dikurangkan dari jumlahStok
. Ini berguna, misalnya, ketika ada pembelian produk sehingga stoknya berkurang.
- Metode
displayInfo
public void displayInfo(){
System.out.println("Toko Alfa Mantul");
System.out.println("Nama Produk : " + namaProduk);
System.out.println("Harga Produk : " + harga);
System.out.println("Jumlah Stok : " + jumlahStok);
}
Metode displayInfo
digunakan untuk menampilkan informasi produk ke layar, termasuk nama toko, nama produk, harga produk, dan jumlah stok yang tersedia. Metode ini memberikan output yang informatif tentang produk ketika dipanggil.
package AlfaMantul;
public class elektronik extends Produk {
private int garansi;
public elektronik (String namaProduk, int harga, int jumlahStok, int garansi) {
super(namaProduk, harga, jumlahStok);
this.garansi = garansi;
}
// Setter dan Getter Garansi
public int getGaransi() {
return garansi;
}
public void setGaransi(int garansi) {
this.garansi = garansi;
}
@Override
public void displayInfo() {
super.displayInfo();
System.out.println("Garansi : " + this.garansi + " tahun");
}
}
- Deklarasi package
package AlfaMantul;
Kelas elektronik
dikelompokkan ke dalam package AlfaMantul
, bersama kelas-kelas lain dalam sistem yang sama.
- Kelas elektronik dan Pewarisan
public class elektronik extends Produk {
// Kode di dalam kelas
}
Kelas elektronik
dideklarasikan sebagai public
, sehingga dapat diakses oleh kelas lain. Kelas ini menggunakan konsep pewarisan (inheritance) dengan kata kunci extends
, yang menunjukkan bahwa elektronik adalah turunan dari kelas Produk
. Dengan pewarisan ini, kelas elektronik
mewarisi semua atribut dan metode dari kelas Produk
, seperti namaProduk
, harga
, jumlahStok
, dan metode displayInfo
.
- Atribut
garansi
private int garansi;
Atribut garansi
menyimpan informasi tambahan khusus untuk produk elektronik, yaitu lama garansi dalam tahun. Atribut ini bertipe int
dan bersifat private
, yang berarti hanya dapat diakses dalam kelas elektronik
.
- Konstruktor
elektronik
public elektronik (String namaProduk, int harga, int jumlahStok, int garansi) {
super(namaProduk, harga, jumlahStok);
this.garansi = garansi;
}
Konstruktor elektronik
digunakan untuk menginisialisasi objek elektronik
dengan nilai-nilai yang diperlukan :
namaProduk
: Nama produk elektronik.
harga
: Harga produk elektronik.
jumlahStok
: Jumlah stok produk elektronik.
garansi
: Lama garansi produk dalam tahun.
Kata kunci super
digunakan untuk memanggil konstruktor dari kelas Produk
, yang akan menginisialisasi atribut namaProduk
, harga
, dan jumlahStok
. Setelah itu, atribut garansi
diatur sesuai dengan parameter yang diterima.
- Metode Getter dan Setter
garansi
public int getGaransi() {
return garansi;
}
public void setGaransi(int garansi) {
this.garansi = garansi;
}
getGaransi
: Metode ini mengembalikan nilai garansi
, yang memungkinkan kelas lain untuk membaca informasi garansi produk elektronik.
setGaransi
: Metode ini mengubah nilai garansi
, yang memungkinkan pengaturan ulang lama garansi jika dibutuhkan.
- Override Metode
displayInfo
@Override
public void displayInfo() {
super.displayInfo();
System.out.println("Garansi : " + this.garansi + " tahun");
}
Metode displayInfo
di-override (diubah) dari versi aslinya di kelas Produk
. Dengan kata kunci @Override
, metode ini akan menambahkan informasi garansi produk elektronik. Metode ini memanggil super.displayInfo()
untuk menampilkan informasi dasar produk dari kelas Produk
, lalu menambahkan detail garansi
dengan output Garansi : <nilai garansi> tahun
.
package AlfaMantul;
public class pakaian extends Produk {
private String ukuran;
private String warna;
public pakaian (String namaProduk, int harga,int jumlahStok, String ukuran, String warna) {
super(namaProduk, harga, jumlahStok);
this.ukuran = ukuran;
this.warna = warna;
}
// Setter Ukuran
public String getUkuran() {
return ukuran;
}
// Setter Warna
public String getWarna() {
return warna;
}
@Override
public void displayInfo(){
super.displayInfo();
System.out.println("Ukuran : " + this.ukuran);
System.out.println("Warna : " + this.warna);
}
}
- Deklarasi Package
package AlfaMantul;
Package AlfaMantul
digunakan untuk mengelompokkan kelas pakaian
bersama dengan kelas lain dalam proyek yang sama.
- Kelas
pakaian
danPewarisan
public class pakaian extends Produk {
// Kode di dalam kelas
}
Kelas pakaian
adalah subclass dari Produk
, yang artinya pakaian
mewarisi semua atribut dan metode dari Produk
. Dengan kata kunci extends
, kelas ini memperoleh atribut dasar seperti namaProduk
, harga
, dan jumlahStok
serta metode seperti displayInfo
dari kelas induknya.
- Atribut
ukuran
danwarna
private String ukuran;
private String warna;
Kelas pakaian
memiliki dua atribut tambahan :
ukuran
: Menyimpan ukuran produk pakaian, misalnya "M", "L", atau "XL".
warna
: Menyimpan warna produk pakaian, misalnya "Hitam" atau "Biru".
Kedua atribut ini bersifat private
, sehingga hanya dapat diakses dan diubah melalui metode di dalam kelas pakaian
.
- Konstruktor
pakaian
public pakaian (String namaProduk, int harga, int jumlahStok, String ukuran, String warna) {
super(namaProduk, harga, jumlahStok);
this.ukuran = ukuran;
this.warna = warna;
}
Konstruktor pakaian
digunakan untuk menginisialisasi objek dengan atribut yang dibutuhkan :
namaProduk
: Nama produk pakaian.
harga
: Harga produk.
jumlahStok
: Jumlah stok produk yang tersedia.
ukuran
: Ukuran pakaian.
warna
: Warna pakaian.
Konstruktor ini memanggil konstruktor kelas Produk
dengan super
, yang menginisialisasi namaProduk
, harga
, dan jumlahStok
, sementara ukuran
dan warna
diatur di dalam konstruktor pakaian
sendiri.
- Metode Getter ukuran dan warna
public String getUkuran() {
return ukuran;
}
public String getWarna() {
return warna;
}
Metode ini adalah getter yang mengembalikan nilai ukuran
dan warna
:
getUkuran
: Mengembalikan ukuran pakaian.
getWarna
: Mengembalikan warna pakaian.
Metode ini memungkinkan atribut ukuran
dan warna
diakses dari luar kelas pakaian
.
- Override Metode
displayInfo
@Override
public void displayInfo(){
super.displayInfo();
System.out.println("Ukuran : " + this.ukuran);
System.out.println("Warna : " + this.warna);
}
Metode displayInfo
di-override dari kelas Produk
. Dengan @Override
, metode ini memanggil super.displayInfo()
untuk menampilkan informasi dasar dari Produk
, seperti namaProduk
, harga
, dan jumlahStok
. Setelah itu, informasi ukuran
dan warna
ditambahkan untuk melengkapi deskripsi produk pakaian.
package AlfaMantul;
import java.util.Date;
public class makanan extends Produk {
private Date exp;
public makanan(String namaProduk,int harga,int jumlahStok, Date exp) {
super(namaProduk, harga, jumlahStok);
this.exp = exp;
}
@Override
public void displayInfo(){
super.displayInfo();
System.out.println("Tanggal Exp : " + this.exp);
}
}
- Deklarasi Package dan Impor Kelas
package AlfaMantul;
import java.util.Date;
Kode ini berada dalam package AlfaMantul
, yang mengelompokkan kelas makanan
bersama kelas-kelas lain dalam proyek ini. Kelas Date
diimpor dari pustaka Java, digunakan untuk menyimpan data tanggal kedaluwarsa produk makanan.
- Kelas
makanan
dan Pewarisan
public class makanan extends Produk {
// Kode di dalam kelas
}
Kelas makanan
merupakan subclass dari kelas Produk
. Dengan kata kunci extends
, kelas ini mewarisi semua atribut dan metode dari kelas Produk
, seperti namaProduk
, harga
, dan jumlahStok
, serta metode displayInfo
.
- Atribut
exp
private Date exp;
Atribut exp
adalah variabel bertipe Date
yang menyimpan tanggal kedaluwarsa (expired) produk makanan. Atribut ini bersifat private
, sehingga hanya dapat diakses melalui metode dalam kelas makanan
.
- Konstruktor
makanan
public makanan(String namaProduk, int harga, int jumlahStok, Date exp) {
super(namaProduk, harga, jumlahStok);
this.exp = exp;
}
Konstruktor makanan
digunakan untuk menginisialisasi objek makanan
dengan atribut yang diperlukan :
namaProduk
: Nama produk makanan.
harga
: Harga produk.
jumlahStok
: Jumlah stok produk yang tersedia.
exp
: Tanggal kedaluwarsa produk.
Kata kunci super
digunakan untuk memanggil konstruktor kelas Produk
, yang menginisialisasi namaProduk
, harga
, dan jumlahStok
. Setelah itu, atribut exp
diatur menggunakan nilai Date
yang diberikan sebagai parameter.
- Override Metode
displayInfo
@Override
public void displayInfo(){
super.displayInfo();
System.out.println("Tanggal Exp : " + this.exp);
}
Metode displayInfo
di-override dari kelas Produk
untuk menampilkan informasi tambahan mengenai tanggal kedaluwarsa. Dengan memanggil super.displayInfo()
, metode ini menampilkan informasi dasar produk seperti namaProduk
, harga
, dan jumlahStok
, kemudian menambahkan detail Tanggal Exp
yang menunjukkan tanggal kedaluwarsa produk makanan.
package AlfaMantul;
import java.util.ArrayList;
public class keranjangBelanja {
private ArrayList<Produk> keranjang;
public keranjangBelanja() {
keranjang = new ArrayList<>();
}
public void tambahProduk(Produk p, int jumlah) {
if (p.getJumlahStok() >= jumlah) {
p.kurangiStok(jumlah);
keranjang.add(p);
System.out.println("Produk " + p.getNamaProduk() + " ditambahkan sebanyak " + jumlah);
} else {
System.out.println("Stok tidak mencukupi untuk produk " + p.getNamaProduk());
}
}
public int hitungTotalBelanja() {
int total = 0;
for (Produk item : keranjang) {
total += item.getHarga();
}
return total;
}
public void displayKeranjang() {
System.out.println("Isi Keranjang Belanja :");
for (Produk item : keranjang) {
System.out.println("- " + item.getNamaProduk() + " = Rp" + item.getHarga());
}
System.out.println("Total Belanja : Rp" + hitungTotalBelanja());
}
}
- Deklarasi Package dan Impor Kelas
package AlfaMantul;
import java.util.ArrayList;
Kelas keranjangBelanja
berada dalam paket AlfaMantul
, dan kelas ArrayList
diimpor dari pustaka Java untuk menyimpan daftar produk dalam bentuk list dinamis.
- Deklarasi Kelas
keranjangBelanja
dan Atributkeranjang
public class keranjangBelanja {
private ArrayList<Produk> keranjang;
}
Kelas keranjangBelanja
memiliki atribut keranjang
, yang merupakan ArrayList
berisi objek Produk
. Dengan deklarasi private
, atribut ini hanya dapat diakses dalam kelas keranjangBelanja
.
- Konstruktor
keranjangBelanja
public keranjangBelanja() {
keranjang = new ArrayList<>();
}
Konstruktor ini menginisialisasi atribut keranjang
sebagai objek ArrayList
, siap untuk menyimpan produk-produk yang akan ditambahkan.
- Metode
tambahProduk
public void tambahProduk(Produk p, int jumlah) {
if (p.getJumlahStok() >= jumlah) {
p.kurangiStok(jumlah);
keranjang.add(p);
System.out.println("Produk " + p.getNamaProduk() + " ditambahkan sebanyak " + jumlah);
} else {
System.out.println("Stok tidak mencukupi untuk produk " + p.getNamaProduk());
}
}
Metode ini digunakan untuk menambahkan produk p
ke dalam keranjang dengan jumlah tertentu :
Validasi Stok : Metode ini memeriksa apakah stok produk mencukupi untuk jumlah yang diminta. Jika stok mencukupi, stok produk dikurangi dengan kurangiStok
, lalu produk ditambahkan ke keranjang
.
Pesan Kesuksesan atau Kegagalan : Jika produk berhasil ditambahkan, pesan konfirmasi ditampilkan. Jika stok tidak mencukupi, pesan peringatan muncul.
- Metode
hitungTotalBelanja
public int hitungTotalBelanja() {
int total = 0;
for (Produk item : keranjang) {
total += item.getHarga();
}
return total;
}
Metode ini menghitung total belanja dalam keranjang dengan menjumlahkan harga setiap produk yang ada di dalam keranjang
. Nilai total dikembalikan dalam bentuk integer.
- Metode
displayKeranjang
public void displayKeranjang() {
System.out.println("Isi Keranjang Belanja :");
for (Produk item : keranjang) {
System.out.println("- " + item.getNamaProduk() + " = Rp" + item.getHarga());
}
System.out.println("Total Belanja : Rp" + hitungTotalBelanja());
}
Metode ini digunakan untuk menampilkan daftar produk di keranjang beserta total harga belanja. Setiap produk dalam keranjang
ditampilkan dengan nama dan harganya, diikuti dengan total keseluruhan yang dihitung melalui hitungTotalBelanja
.