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.0
dan 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