{"id":26784305,"url":"https://github.com/fadiladz/constructor","last_synced_at":"2025-07-26T13:14:34.165Z","repository":{"id":260597356,"uuid":"881758782","full_name":"FadilAdz/Constructor","owner":"FadilAdz","description":"Praktikum Pertemuan Ke 7 Pemrograman Orientasi Objek.","archived":false,"fork":false,"pushed_at":"2024-11-01T08:53:42.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-01T09:28:31.620Z","etag":null,"topics":["constructor-in-java","constuctor","oop-in-java","vscode"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FadilAdz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-01T06:51:52.000Z","updated_at":"2024-11-01T08:53:46.000Z","dependencies_parsed_at":"2024-11-01T09:38:32.853Z","dependency_job_id":null,"html_url":"https://github.com/FadilAdz/Constructor","commit_stats":null,"previous_names":["fadiladz/constructor"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FadilAdz%2FConstructor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FadilAdz%2FConstructor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FadilAdz%2FConstructor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FadilAdz%2FConstructor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FadilAdz","download_url":"https://codeload.github.com/FadilAdz/Constructor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246168100,"owners_count":20734391,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["constructor-in-java","constuctor","oop-in-java","vscode"],"created_at":"2025-03-29T10:19:20.852Z","updated_at":"2025-03-29T10:19:21.444Z","avatar_url":"https://github.com/FadilAdz.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Constructor\n## Praktikum Pertemuan Ke 7 Pemrograman Orientasi Objek.\n\n\u003cimg src=https://raw.githubusercontent.com/bablubambal/All_logo_and_pictures/1ac69ce5fbc389725f16f989fa53c62d6e1b4883/programming%20languages/java.svg width=\"120px\"\u003e\n\n![img](P7/assets/studikasus.png) \u003cbr\u003e \u003cbr\u003e\n![img](P7/assets/soal.png) \n\n\u003cbr\u003e \u003cbr\u003e\n\n\n### File \u003cb\u003emain.java\u003c/b\u003e\n\n``` java\npackage AlfaMantul;\nimport java.util.Date;\n\npublic class main {\n    public static void main(String[] args) {\n        // Membuat beberapa produk\n        elektronik laptop = new elektronik(\"Laptop\", 8000000, 8, 2);\n        pakaian kaos = new pakaian(\"Kaos\", 110000, 7, \"M\", \"Hitam\");\n        makanan kacang = new makanan(\"Kacang Pilus\", 5000, 28, new Date());\n\n        // Membuat keranjang belanja\n        keranjangBelanja keranjang = new keranjangBelanja();\n\n        // Menambahkan produk ke keranjang\n        keranjang.tambahProduk(tv, 1);\n        keranjang.tambahProduk(kaos, 2);\n        keranjang.tambahProduk(roti, 5);\n\n        // Menampilkan isi keranjang\n        keranjang.displayKeranjang();\n    }\n}\n```\n\u003cbr\u003e\n\n\u003cb\u003ePenjelasan\u003c/b\u003e \u003cbr\u003e\n1. Deklarasi package dan Impor\n\n``` java\npackage AlfaMantul;\nimport java.util.Date;\n```\n\n```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. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n2. Kelas ```main```\n\n``` java\npublic class main {\n    public static void main(String[] args) {\n        // Kode di sini\n    }\n}\n```\n\nKelas ```main``` adalah titik awal program dan berisi metode ```main```, yang dijalankan pertama kali saat program dimulai. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n3. Membuat Objek Produk \u003cbr\u003e\n\nDi 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.\n\n``` java\nelektronik laptop = new elektronik(\"Laptop\", 8000000, 8, 2);\npakaian kaos = new pakaian(\"Kaos\", 110000, 7, \"M\", \"Hitam\");\nmakanan kacang = new makanan(\"Kacang Pilus\", 5000, 28, new Date());\n```\n\n```laptop``` : Objek ```elektronik``` dengan nama \"Laptop\", harga 8.000.000, stok 8 unit, dan garansi 2 tahun. \u003cbr\u003e \n```kaos``` : Objek ```pakaian``` dengan nama \"Kaos\", harga 110.000, stok 7 unit, ukuran \"M\", dan warna \"Hitam\". \u003cbr\u003e \n```kacang``` : Objek ```makanan``` dengan nama \"Kacang Pilus\", harga 5.000, stok 28 unit, dan tanggal kedaluwarsa yang diatur pada tanggal saat program dijalankan.\n\u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n4. Membuat Objek keranjangBelanja\n\n``` java\nkeranjangBelanja keranjang = new keranjangBelanja();\n```\n\nObjek ```keranjang``` dari kelas ```keranjangBelanja``` dibuat untuk menyimpan produk yang dipilih pengguna. ```keranjangBelanja``` bertindak sebagai penyimpanan sementara untuk produk yang akan dibeli. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e \n\n\n5. Menambahkan Produk ke Keranjang\n\n``` java\nkeranjang.tambahProduk(laptop, 1);\nkeranjang.tambahProduk(kaos, 2);\nkeranjang.tambahProduk(kacang, 5);\n```\n\nMetode ```tambahProduk``` pada objek ```keranjang``` menambahkan produk beserta kuantitasnya ke keranjang belanja. Di sini :\n\n```laptop``` ditambahkan dengan kuantitas 1 unit. \u003cbr\u003e\n```kaos``` ditambahkan dengan kuantitas 2 unit. \u003cbr\u003e\n```kacang``` ditambahkan dengan kuantitas 5 unit. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n6. Menampilkan Isi Keranjang\n\n``` java\nkeranjang.displayKeranjang();\n```\n\nMetode ```displayKeranjang``` menampilkan semua produk yang telah ditambahkan ke keranjang belanja beserta detailnya, seperti nama produk, harga, kuantitas, dan total harga. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n### File \u003cb\u003eProduk.java\u003c/b\u003e\n\n``` java\npackage AlfaMantul;\npublic class Produk {\n    private String namaProduk;\n    private int harga;\n    private int jumlahStok;\n\n    public Produk(String namaProduk, int harga, int jumlahStok) {\n        this.namaProduk = namaProduk;\n        this.harga = harga;\n        this.jumlahStok = jumlahStok;\n    }\n\n    // Setter NamaProduk\n    public String getNamaProduk() {\n        return namaProduk;\n    }\n\n    // Setter Harga\n    public int getHarga() {\n        return harga;\n    }\n\n    // Setter JumlahStok\n    public int getJumlahStok() {\n        return jumlahStok;\n    }\n\n\n    public void kurangiStok(int jumlah) {\n        this.jumlahStok -= jumlah;\n    }\n\n    public void displayInfo(){\n        System.out.println(\"Toko Alfa Mantul\");\n        System.out.println(\"Nama Produk : \" + namaProduk);\n        System.out.println(\"Harga Produk : \" + harga);\n        System.out.println(\"Jumlah Stok : \" + jumlahStok);\n    }\n}\n```\n\u003cbr\u003e\n\n\u003cb\u003ePenjelasan\u003c/b\u003e \u003cbr\u003e\n1. Deklarasi Package\n\n```java\npackage AlfaMantul;\n```\n\nPackage ```AlfaMantul``` digunakan untuk mengelompokkan kelas ini bersama kelas-kelas lainnya yang berkaitan dalam satu modul atau direktori. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n2. Kelas ```Produk```\n\n``` java\npublic class Produk {\n    // Kode di dalam kelas\n}\n```\n\nKelas ```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. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n3. Atribut (Properti Produk)\n\n``` java\nprivate String namaProduk;\nprivate int harga;\nprivate int jumlahStok;\n```\n\nAtribut ```namaProduk```, ```harga```, dan ```jumlahStok``` masing-masing digunakan untuk menyimpan : \u003cbr\u003e \u003cbr\u003e\n\n```namaProduk``` : Nama dari produk, misalnya \"Laptop\" atau \"Kaos\".\u003cbr\u003e\n\n```harga``` : Harga produk dalam bentuk bilangan bulat (integer).\u003cbr\u003e\n\n```jumlahStok``` : Jumlah stok produk yang tersedia. \u003cbr\u003e\n\nAtribut-atribut ini dideklarasikan sebagai ```private```, yang artinya hanya dapat diakses dari dalam kelas ```Produk``` saja, sehingga tidak bisa diakses langsung oleh kelas luar. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n4. Konstruktor ```Produk```\n\n``` java\npublic Produk(String namaProduk, int harga, int jumlahStok) {\n    this.namaProduk = namaProduk;\n    this.harga = harga;\n    this.jumlahStok = jumlahStok;\n}\n```\n\nKonstruktor 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. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n5. Metode Getter\n\n``` java\npublic String getNamaProduk() {\n    return namaProduk;\n}\n\npublic int getHarga() {\n    return harga;\n}\n\npublic int getJumlahStok() {\n    return jumlahStok;\n}\n```\n\nKetiga 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. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n6. Metode ```kurangiStok```\n\n``` java\npublic void kurangiStok(int jumlah) {\n    this.jumlahStok -= jumlah;\n}\n```\n\nMetode ```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. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n7. Metode ```displayInfo```\n\n``` java\npublic void displayInfo(){\n    System.out.println(\"Toko Alfa Mantul\");\n    System.out.println(\"Nama Produk : \" + namaProduk);\n    System.out.println(\"Harga Produk : \" + harga);\n    System.out.println(\"Jumlah Stok : \" + jumlahStok);\n}\n```\n\nMetode ```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. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n### File \u003cb\u003eelektronik.java\u003c/b\u003e\n\n``` java\npackage AlfaMantul;\npublic class elektronik extends Produk {\n    private int garansi;\n\n    public elektronik (String namaProduk, int harga, int jumlahStok, int garansi) {\n        super(namaProduk, harga, jumlahStok);\n        this.garansi = garansi;\n    }\n\n    // Setter dan Getter Garansi\n    public int getGaransi() {\n        return garansi;\n    }\n\n    public void setGaransi(int garansi) {\n        this.garansi = garansi;\n    }\n\n    @Override\n    public void displayInfo() {\n        super.displayInfo();\n        System.out.println(\"Garansi : \" + this.garansi + \" tahun\");\n\n    }\n}\n```\n\u003cbr\u003e\n\n1. Deklarasi package\n\n``` java\npackage AlfaMantul;\n```\n\nKelas ```elektronik``` dikelompokkan ke dalam package ```AlfaMantul```, bersama kelas-kelas lain dalam sistem yang sama. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n2. Kelas elektronik dan Pewarisan\n\n``` java\npublic class elektronik extends Produk {\n    // Kode di dalam kelas\n}\n```\n\nKelas ```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```, j```umlahStok```, dan metode ```displayInfo```. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n3. Atribut ```garansi```\n\n``` java\nprivate int garansi;\n```\n\nAtribut ```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```. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n4. Konstruktor ```elektronik```\n\n``` java\npublic elektronik (String namaProduk, int harga, int jumlahStok, int garansi) {\n    super(namaProduk, harga, jumlahStok);\n    this.garansi = garansi;\n}\n```\n\nKonstruktor ```elektronik``` digunakan untuk menginisialisasi objek ```elektronik``` dengan nilai-nilai yang diperlukan : \u003cbr\u003e\n\n```namaProduk``` : Nama produk elektronik.\u003cbr\u003e\n```harga``` : Harga produk elektronik.\u003cbr\u003e\n```jumlahStok``` : Jumlah stok produk elektronik. \u003cbr\u003e\n```garansi``` : Lama garansi produk dalam tahun. \u003cbr\u003e \u003cbr\u003e\n\nKata 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. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n5. Metode Getter dan Setter ```garansi```\n\n``` java\npublic int getGaransi() {\n    return garansi;\n}\n\npublic void setGaransi(int garansi) {\n    this.garansi = garansi;\n}\n```\n\n```getGaransi``` : Metode ini mengembalikan nilai ```garansi```, yang memungkinkan kelas lain untuk membaca informasi garansi produk elektronik. \u003cbr\u003e \u003cbr\u003e\n\n```setGaransi``` : Metode ini mengubah nilai ```garansi```, yang memungkinkan pengaturan ulang lama garansi jika dibutuhkan. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n6. Override Metode ```displayInfo```\n\n``` java\n@Override\npublic void displayInfo() {\n    super.displayInfo();\n    System.out.println(\"Garansi : \" + this.garansi + \" tahun\");\n}\n```\n\nMetode ```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 : \u003cnilai garansi\u003e tahun```. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n### File \u003cb\u003epakaian.java\u003c/b\u003e\n\n``` java\npackage AlfaMantul;\n\npublic class pakaian extends Produk {\n    private String ukuran;\n    private String warna;\n\n    public pakaian (String namaProduk, int harga,int jumlahStok, String ukuran, String warna) {\n        super(namaProduk, harga, jumlahStok);\n        this.ukuran = ukuran;\n        this.warna = warna;\n    }\n\n    // Setter Ukuran\n    public String getUkuran() {\n        return ukuran;\n    }\n\n    // Setter Warna\n    public String getWarna() {\n        return warna;\n    }\n\n    @Override\n    public void displayInfo(){\n        super.displayInfo();\n        System.out.println(\"Ukuran : \" + this.ukuran);\n        System.out.println(\"Warna : \" + this.warna);\n    }\n\n}\n```\n\u003cbr\u003e\n\n1. Deklarasi Package\n\n``` java\npackage AlfaMantul;\n```\n\nPackage ```AlfaMantul``` digunakan untuk mengelompokkan kelas ```pakaian``` bersama dengan kelas lain dalam proyek yang sama. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n2. Kelas ```pakaian``` dan ```Pewarisan```\n\n``` java\npublic class pakaian extends Produk {\n    // Kode di dalam kelas\n}\n```\n\nKelas ```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. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n3. Atribut ```ukuran``` dan ```warna```\n\n``` java\nprivate String ukuran;\nprivate String warna;\n```\n\nKelas ```pakaian``` memiliki dua atribut tambahan : \u003cbr\u003e\n\n```ukuran``` : Menyimpan ukuran produk pakaian, misalnya \"M\", \"L\", atau \"XL\". \u003cbr\u003e\n```warna``` : Menyimpan warna produk pakaian, misalnya \"Hitam\" atau \"Biru\". \u003cbr\u003e \u003cbr\u003e\n\nKedua atribut ini bersifat ```private```, sehingga hanya dapat diakses dan diubah melalui metode di dalam kelas ```pakaian```. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n4. Konstruktor ```pakaian```\n\n``` java\npublic pakaian (String namaProduk, int harga, int jumlahStok, String ukuran, String warna) {\n    super(namaProduk, harga, jumlahStok);\n    this.ukuran = ukuran;\n    this.warna = warna;\n}\n```\n\nKonstruktor ```pakaian``` digunakan untuk menginisialisasi objek dengan atribut yang dibutuhkan : \u003cbr\u003e\n\n```namaProduk``` : Nama produk pakaian. \u003cbr\u003e\n```harga``` : Harga produk. \u003cbr\u003e\n```jumlahStok``` : Jumlah stok produk yang tersedia. \u003cbr\u003e\n```ukuran``` : Ukuran pakaian. \u003cbr\u003e\n```warna``` : Warna pakaian. \u003cbr\u003e \u003cbr\u003e\n\nKonstruktor ini memanggil konstruktor kelas ```Produk``` dengan ```super```, yang menginisialisasi ```namaProduk```, ```harga```, dan ```jumlahStok```, sementara ```ukuran``` dan ```warna``` diatur di dalam konstruktor ```pakaian``` sendiri. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n5. Metode Getter ukuran dan warna\n\n``` java\npublic String getUkuran() {\n    return ukuran;\n}\n\npublic String getWarna() {\n    return warna;\n}\n```\n\nMetode ini adalah getter yang mengembalikan nilai ```ukuran``` dan ```warna``` : \u003cbr\u003e\n\n```getUkuran``` : Mengembalikan ukuran pakaian. \u003cbr\u003e\n```getWarna``` : Mengembalikan warna pakaian. \u003cbr\u003e \u003cbr\u003e\n\nMetode ini memungkinkan atribut ```ukuran``` dan ```warna``` diakses dari luar kelas ```pakaian```. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n6. Override Metode ```displayInfo```\n\n``` java\n@Override\npublic void displayInfo(){\n    super.displayInfo();\n    System.out.println(\"Ukuran : \" + this.ukuran);\n    System.out.println(\"Warna : \" + this.warna);\n}\n```\n\nMetode ```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. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e \n\n\n### File \u003cb\u003emakanan.java\u003c/b\u003e\n\n``` java\npackage AlfaMantul;\n\nimport java.util.Date;\n\npublic class makanan extends Produk {\n    private Date exp;\n\n    public makanan(String namaProduk,int harga,int jumlahStok, Date exp) {\n        super(namaProduk, harga, jumlahStok);\n        this.exp = exp;\n    }\n\n    @Override\n    public void displayInfo(){\n        super.displayInfo();\n        System.out.println(\"Tanggal Exp : \" + this.exp);\n    }\n\n}\n```\n\u003cbr\u003e\n\n1. Deklarasi Package dan Impor Kelas\n\n``` java\npackage AlfaMantul;\nimport java.util.Date;\n```\n\nKode 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. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n2. Kelas ```makanan``` dan Pewarisan\n\n``` java\npublic class makanan extends Produk {\n    // Kode di dalam kelas\n}\n```\n\nKelas ```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```. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n3. Atribut ```exp```\n\n``` java\nprivate Date exp;\n```\n\nAtribut ```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```. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n4. Konstruktor ```makanan```\n\n``` java\npublic makanan(String namaProduk, int harga, int jumlahStok, Date exp) {\n    super(namaProduk, harga, jumlahStok);\n    this.exp = exp;\n}\n```\n\nKonstruktor ```makanan``` digunakan untuk menginisialisasi objek ```makanan``` dengan atribut yang diperlukan : \u003cbr\u003e \u003cbr\u003e\n\n```namaProduk``` : Nama produk makanan. \u003cbr\u003e\n```harga``` : Harga produk. \u003cbr\u003e\n```jumlahStok``` : Jumlah stok produk yang tersedia. \u003cbr\u003e\n```exp``` : Tanggal kedaluwarsa produk. \u003cbr\u003e \u003cbr\u003e\n\nKata 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. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n5. Override Metode ```displayInfo```\n\n``` java\n@Override\npublic void displayInfo(){\n    super.displayInfo();\n    System.out.println(\"Tanggal Exp : \" + this.exp);\n}\n```\n\nMetode ```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. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n### File \u003cb\u003ekeranjangBelanja.java\u003c/b\u003e\n\n``` java\npackage AlfaMantul;\nimport java.util.ArrayList;\n\npublic class keranjangBelanja {\n    private ArrayList\u003cProduk\u003e keranjang;\n\n    public keranjangBelanja() {\n        keranjang = new ArrayList\u003c\u003e();\n    }\n\n    public void tambahProduk(Produk p, int jumlah) {\n        if (p.getJumlahStok() \u003e= jumlah) {\n            p.kurangiStok(jumlah);\n            keranjang.add(p);\n            System.out.println(\"Produk \" + p.getNamaProduk() + \" ditambahkan sebanyak \" + jumlah);\n        } else {\n            System.out.println(\"Stok tidak mencukupi untuk produk \" + p.getNamaProduk());\n        }\n    }\n\n    public int hitungTotalBelanja() {\n        int total = 0;\n        for (Produk item : keranjang) {\n            total += item.getHarga();\n        }\n        return total;\n    }\n\n    public void displayKeranjang() {\n        System.out.println(\"Isi Keranjang Belanja :\");\n        for (Produk item : keranjang) {\n            System.out.println(\"- \" + item.getNamaProduk() + \" = Rp\" + item.getHarga());\n        }\n        System.out.println(\"Total Belanja : Rp\" + hitungTotalBelanja());\n    }\n}\n```\n\u003cbr\u003e\n\n1. Deklarasi Package dan Impor Kelas\n\n``` java\npackage AlfaMantul;\nimport java.util.ArrayList;\n```\n\nKelas ```keranjangBelanja``` berada dalam paket ```AlfaMantul```, dan kelas ```ArrayList``` diimpor dari pustaka Java untuk menyimpan daftar produk dalam bentuk list dinamis. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n2. Deklarasi Kelas ```keranjangBelanja``` dan Atribut ```keranjang```\n\n``` java\npublic class keranjangBelanja {\n    private ArrayList\u003cProduk\u003e keranjang;\n}\n```\n\nKelas ```keranjangBelanja``` memiliki atribut ```keranjang```, yang merupakan ```ArrayList``` berisi objek ```Produk```. Dengan deklarasi ```private```, atribut ini hanya dapat diakses dalam kelas ```keranjangBelanja```. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n3. Konstruktor ```keranjangBelanja```\n\n``` java\npublic keranjangBelanja() {\n    keranjang = new ArrayList\u003c\u003e();\n}\n```\n\nKonstruktor ini menginisialisasi atribut ```keranjang``` sebagai objek ```ArrayList```, siap untuk menyimpan produk-produk yang akan ditambahkan. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n4. Metode ```tambahProduk```\n\n``` java\npublic void tambahProduk(Produk p, int jumlah) {\n    if (p.getJumlahStok() \u003e= jumlah) {\n        p.kurangiStok(jumlah);\n        keranjang.add(p);\n        System.out.println(\"Produk \" + p.getNamaProduk() + \" ditambahkan sebanyak \" + jumlah);\n    } else {\n        System.out.println(\"Stok tidak mencukupi untuk produk \" + p.getNamaProduk());\n    }\n}\n```\n\nMetode ini digunakan untuk menambahkan produk ```p``` ke dalam keranjang dengan jumlah tertentu : \u003cbr\u003e \u003cbr\u003e \n\nValidasi 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```. \u003cbr\u003e\n\nPesan Kesuksesan atau Kegagalan : Jika produk berhasil ditambahkan, pesan konfirmasi ditampilkan. Jika stok tidak mencukupi, pesan peringatan muncul.\u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n5. Metode ```hitungTotalBelanja```\n\n``` java\npublic int hitungTotalBelanja() {\n    int total = 0;\n    for (Produk item : keranjang) {\n        total += item.getHarga();\n    }\n    return total;\n}\n```\n\nMetode ini menghitung total belanja dalam keranjang dengan menjumlahkan harga setiap produk yang ada di dalam ```keranjang```. Nilai total dikembalikan dalam bentuk integer. \u003cbr\u003e \u003cbr\u003e \u003cbr\u003e\n\n\n6. Metode ```displayKeranjang```\n\n``` java\npublic void displayKeranjang() {\n    System.out.println(\"Isi Keranjang Belanja :\");\n    for (Produk item : keranjang) {\n        System.out.println(\"- \" + item.getNamaProduk() + \" = Rp\" + item.getHarga());\n    }\n    System.out.println(\"Total Belanja : Rp\" + hitungTotalBelanja());\n}\n```\n\nMetode 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```.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffadiladz%2Fconstructor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffadiladz%2Fconstructor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffadiladz%2Fconstructor/lists"}