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:
-
TopAppBar-
Warna latar putih
-
Terdapat ikon keranjang (
ShoppingCart) sebagai tombol aksi
-
-
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:
-
Box: Tempat placeholder ikon produk (belum menggunakan gambar asli)
-
Nama Produk, Deskripsi, Harga
-
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 (denganname,description,price, dancategory)
🎨 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.0dan ukuranLARGE, 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
Posting Komentar