Tugas 04

 Tugas 04


Kode di dalam berkas `package.json` berikut tidak boleh diubah:

.{

  "tipe": "modul"

}


Bantu menyelesaikan tugas pafa Inventory.js berikut ini:

/**

 * TODO

 * Selesaikan kode pembuatan class Inventory dengan ketentuan:

 * - Memiliki properti `items` untuk menampung daftar item dalam bentuk array.

 * - Memiliki metode `addItem` untuk menambahkan item ke properti `items`.

 * - Memiliki metode `removeItem` untuk menghapus item berdasarkan `id`.

 * - Memiliki metode `listItems` untuk mengembalikan string yang merupakan informasi detail barang (dipanggil dari fungsi `item.displayDetails()`).

 */


kelas Inventaris {}



// Jangan hapus kode di bawah ini!

ekspor default Inventaris;


Jawaban :


Berikut adalah penyelesaian untuk kelasInventory sesuai dengan instruksi yang diberikan. Silakan salin kode ini ke dalam berkas JavaScript Anda:

javascript
class Inventory {
  constructor() {
    this.items = [];
  }

  addItem(item) {
    this.items.push(item);
  }

  removeItem(id) {
    this.items = this.items.filter((item) => item.id !== id);
  }

  listItems() {
    return this.items.map((item) => item.displayDetails()).join('\n');
  }
}

// Jangan hapus kode di bawah ini!
export default Inventory;
Gunakan kode dengan hati-hati.
Penjelasan Singkat:
  1. constructor: Inisialisasi properti this.itemssebagai array kosong saat objek kelas dibuat.
  2. addItem(item): Menggunakan .push()untuk menambahkan objek item baru ke dalam array.
  3. removeItem(id): Menggunakan .filter()untuk membuat array baru yang berisi semua item kecuali item yang memiliki idyang ingin dihapus.
  4. listItems(): Mengambil detail dari setiap item dengan memanggil item.displayDetails(). Saya menggunakan .join('\n')agar setiap informasi item dipisahkan oleh baris baru (opsional, tergantung kebutuhan tampilan string Anda).
Apakah ada metode tambahan atau properti lain yang perlu ditambahkan ke dalam kelas ini?


Soal :

kemudian selesaikan tugas pada item.js berikut:
/**
 * TODO
 * Selesaikan kode pembuatan class Item dengan ketentuan:
 * - Memiliki properti `id` (angka), `nama` (string), `quantity` (angka), dan `price` (angka).
 * - Memiliki metode `updateDetails()` untuk mengubah nilai `nama`, `kuantitas`, dan `harga`.
 * - Memiliki metode `displayDetails()` yang mengembalikan informasi detail dari Item dengan format:
 * ```
 * ID: ${id}, Nama: ${name}, Kuantitas: ${quantity}, Harga: ${price}
 * ```
 */

kelas Item {}

// Jangan hapus kode di bawah ini!
ekspor default Item;


Jawaban :

Berikut adalah penyelesaian untuk kelasItem di berkas item.jssesuai dengan instruksi:
javascript
class Item {
  constructor(id, name, quantity, price) {
    this.id = id;
    this.name = name;
    this.quantity = quantity;
    this.price = price;
  }

  updateDetails(name, quantity, price) {
    this.name = name;
    this.quantity = quantity;
    this.price = price;
  }

  displayDetails() {
    return `ID: ${this.id}, Name: ${this.name}, Quantity: ${this.quantity}, Price: ${this.price}`;
  }
}

// Jangan hapus kode di bawah ini!
export default Item;
Gunakan kode dengan hati-hati.
Penjelasan:
  1. constructor: Mendefinisikan properti id, name, quantity, dan pricesaat objek Itempertama kali dibuat.
  2. updateDetails: Metode ini menerima tiga parameter baru untuk memperbarui nilai properti yang sudah ada.
  3. displayDetails: Menggunakan template literal (tanda backtick `) untuk mengembalikan string sesuai format yang diminta.
Apakah Anda memerlukan bantuan untuk cara menghubungkan kelas Itemini dengan kelas Inventoryyang tadi kita buat?


Soal :

kemudian selesaikan tugas pafa main.js berikut:
impor Item dari './Item.js';
impor Inventaris dari './Inventory.js';

const inventory = new Inventory();

const item1 = new Item(1, 'Laptop', 10, 1000);
const item2 = new Item(2, 'Mouse', 50, 20);

inventaris.tambahItem(item1);
inventaris.tambahItem(item2);

console.log('Inventaris Awal:');
console.log(inventory.listItems());
/**
 * Output yang diharapkan:
 * Persediaan Awal:
 * ID: 1, Nama: Laptop, Jumlah: 10, Harga: 1000
 * ID: 2, Nama: Tikus, Jumlah: 50, Harga: 20
 */

item1.updateDetails('Laptop', 8, 950);
console.log('\nInventaris setelah pembaruan:');
console.log(inventory.listItems());

/**
 * Output yang diharapkan:
 * Inventaris setelah pembaruan:
 * ID: 1, Nama: Laptop, Jumlah: 8, Harga: 950
 * ID: 2, Nama: Tikus, Jumlah: 50, Harga: 20
 */

inventaris.hapusItem(2);
console.log('\nInventaris setelah penghapusan:');
console.log(inventory.listItems());

/**
 * Output yang diharapkan:
 * Inventaris setelah pemindahan:
 * ID: 1, Nama: Laptop, Jumlah: 8, Harga: 950
 */

Jawaban :


Kode yang Anda berikan sebenarnya sudah hampir lengkap untuk menguji kelasItem dan Inventoryyang telah kita buat sebelumnya. Tugas Anda main.jsadalah memastikan alur pemanggilan metodenya berjalan sesuai harapan.
Berikut adalah isi berkas main.jsyang sudah disesuaikan agar menghasilkan output yang diminta:
javascript
import Item from './Item.js';
import Inventory from './Inventory.js';

const inventory = new Inventory();

const item1 = new Item(1, 'Laptop', 10, 1000);
const item2 = new Item(2, 'Mouse', 50, 20);

// Menambahkan item ke inventory
inventory.addItem(item1);
inventory.addItem(item2);

console.log('Initial Inventory:');
console.log(inventory.listItems());
/**
 * Output:
 * Initial Inventory:
 * ID: 1, Name: Laptop, Quantity: 10, Price: 1000
 * ID: 2, Name: Mouse, Quantity: 50, Price: 20
 */

// Memperbarui detail item1
item1.updateDetails('Laptop', 8, 950);
console.log('\nInventory after update:');
console.log(inventory.listItems());

/**
 * Output:
 * Inventory after update:
 * ID: 1, Name: Laptop, Quantity: 8, Price: 950
 * ID: 2, Name: Mouse, Quantity: 50, Price: 20
 */

// Menghapus item dengan ID 2
inventory.removeItem(2);
console.log('\nInventory after removal:');
console.log(inventory.listItems());

/**
 * Output:
 * Inventory after removal:
 * ID: 1, Name: Laptop, Quantity: 8, Price: 950
 */
Gunakan kode dengan hati-hati.
Catatan Penting untuk Garis:
  1. Pastikan Nama File Sesuai : Perhatikan huruf kapital pada import Item from './Item.js'dan import Inventory from './Inventory.js'. Pastikan file Anda bernama Item.js(I kapital) dan Inventory.js(I kapital).
  2. Cara membatasi : Jika Anda menggunakan StackBlitz atau terminal, jalankan dengan perintah:
    pesta
    node main.js
    
    Gunakan kode dengan hati-hati.
Apakah Anda ingin saya membantu membuatkan file index.jssebagai titik masuk utama (entry point) jika diperlukan oleh sistem Dicoding?







Comments