PPB G - Pertemuan 15

Nama: Moh. rosy haqqy aminy

NRP: 5025211012

Kelas: PPB G

Re-Design aplikasi starbucks

Link github: https://github.com/rosyhaqqy/Tugas_Tugas_PPB/tree/main/starbucks


Home

Transaksi

Riwayat





🔧 Struktur File

  • Package: com.example.redesignstarbucksapp.ui.screens

  • Halaman utama: HomeScreen

  • Komponen pendukung: CategoryChip, ProductCard


🏠 HomeScreen

Fungsi utama yang menampilkan tampilan utama dari aplikasi.

Parameter:

  • onProductClick: Callback saat produk diklik

  • onCartClick: Callback saat ikon keranjang diklik

Struktur:

  1. TopAppBar

    • Warna latar putih

    • Terdapat ikon keranjang (ShoppingCart) sebagai tombol aksi

  2. LazyColumn

    • Scrollable list yang berisi:

      • Welcome Card: Ucapan selamat datang & nama user

      • Judul: "Item Populer"

      • Daftar Produk: Menampilkan produk dari kategori yang dipilih (default: Category.COFFEE)


🔘 CategoryChip

Chip kategori yang dapat diklik.

Parameter:

  • category: Kategori yang diwakili chip

  • isSelected: Menunjukkan apakah chip sedang dipilih

  • onClick: Fungsi yang dipanggil saat chip diklik

Tampilan:

  • Jika dipilih: Latar hijau, teks putih

  • Jika tidak dipilih: Latar abu transparan, teks abu


🛍 ProductCard

Menampilkan detail dari sebuah produk dalam bentuk kartu.

Parameter:

  • product: Objek produk (Product)

  • onClick: Fungsi saat kartu diklik

Komponen:

  1. Box: Tempat placeholder ikon produk (belum menggunakan gambar asli)

  2. Nama Produk, Deskripsi, Harga

  3. Icon Add (+): Simbol untuk menambahkan ke keranjang, namun saat ini belum memiliki aksi


📦 Data yang Digunakan

  • SampleData.sampleProducts: List dummy produk

  • Category: Enum atau data class untuk kategori produk (seperti COFFEE, TEA, dll.)

  • Product: Data class yang mewakili produk (dengan name, description, price, dan category)


🎨 Desain dan UI

  • Warna utama: Hijau Starbucks (#00704A)

  • Tampilan bersih dan modern

  • Elevasi dan corner radius untuk efek depth dan visual menarik



📦 Product: Data Class untuk Produk

data class Product(
    val id: String,
    val name: String,
    val description: String,
    val price: Double,
    val imageUrl: String,
    val category: Category,
    val size: Size = Size.MEDIUM,
    val isAvailable: Boolean = true
)

🔹 Penjelasan Properti:

Properti Tipe Deskripsi
id String ID unik produk
name String Nama produk
description String Deskripsi singkat produk
price Double Harga dasar produk
imageUrl String URL gambar produk
category Category Kategori produk
size Size Ukuran produk (default: MEDIUM)
isAvailable Boolean Status ketersediaan produk (default: true)

🏷️ Category: Enum Kategori Produk

enum class Category {
    COFFEE, TEA, FRAPPUCCINO, FOOD, MERCHANDISE
}

Mewakili jenis-jenis produk di Starbucks:

  • COFFEE: kopi

  • TEA: teh

  • FRAPPUCCINO: minuman blended khas Starbucks

  • FOOD: makanan

  • MERCHANDISE: barang dagangan (gelas, tumblr, dll.)


📏 Size: Enum Ukuran Produk

enum class Size(val displayName: String, val priceMultiplier: Double) {
    SMALL("Small", 0.9),
    MEDIUM("Medium", 1.0),
    LARGE("Large", 1.2)
}

🔹 Penjelasan Properti:

Properti Tipe Deskripsi
displayName String Label yang ditampilkan (misal: "Small")
priceMultiplier Double Pengali harga berdasarkan ukuran

Contoh:

  • Jika harga dasar 20.0 dan ukuran LARGE, maka harga = 20.0 × 1.2 = 24.0


🛒 CartItem: Data Class Item dalam Keranjang

data class CartItem(
    val product: Product,
    val quantity: Int = 1,
    val size: Size = Size.MEDIUM,
    val customizations: List<String> = emptyList()
)

🔹 Penjelasan Properti:

Properti Tipe Deskripsi
product Product Produk yang ditambahkan ke keranjang
quantity Int Jumlah produk (default: 1)
size Size Ukuran produk dalam keranjang
customizations List<String> Daftar kustomisasi (misal: "Extra shot", "No sugar")

Komentar

Postingan populer dari blog ini

Latihan 1 (PBKK)

PPB G - Pertemuan 1

ETS - PWEB