280 likes | 537 Views
Contoh Kasus. IndoMart, adl sebuah jaringan mini market yg menggunakan Point-Of-Sale (POS) terminal sbg cash register, dgn fasilitas barcode reader & receipt printer.
E N D
Contoh Kasus • IndoMart, adl sebuah jaringan mini market yg menggunakan Point-Of-Sale (POS) terminal sbg cash register, dgn fasilitas barcode reader & receipt printer. • Masing-masing store (toko), memiliki sebuah komputer yg terhubung ke seluruh POS yg ada di store tsb. Pd komputer tsb tercatat markup, tax policy, & store totals.
Contoh Kasus • Seluruh komputer Store terhubung ke komputer Depot yg ada di kantor pusat. Komputer Depot memberikan informasi kpd komputer Store, spt harga dasar (sebelum markup), informasi deskriptif utk dicetak pd slip penjualan. Komputer Depot memantau inventori masing-masing toko, & menjadualkan pengiriman stok sesuai status inventori tsb.
DEPOT STORE STORE POS POS POS POS Contoh Kasus
USE CASES • Dalam OOA&D, use cases digunakan utk menentukan apakah desain sistem sudah lengkap atau belum. • Use case mendefinisikan business rule: • What will happen in the business. • Di sini hanya akan ditampilkan use case singkat. Dalam tugas maupun ujian, gunakan use case lengkap, mengacu pd referensi OOA&D.
USE CASES • Initialization: • Nyalakan POS station. • Nyalakan komputer Store. • Nyalakan komputer Depot. Masing-masing akan memulai obyek ygbersesuaian, dan memanggil operasi inisialisasi.
USE CASES • Login-to-POS: • Seorang kasir datang ke sebuah POS station yg telah menyala, kemudian mengetikkan L pd keypad. • Keypad memanggil operasi login dr POS station tersebut.
USE CASES • Request-a-report (ada 2 jenis): • Seseorang mengetikkan P atau S pd keypad. • Keypad memanggil operasi print_POS_sales_summary atau print_store_sales_summary pd POS station tersebut.
USE CASES • Perform-a-sale • (Optional) Operator mengetikkan Qn pd keypad, utk menyatakan pembelian multiple item pd pembacaan barcode berikutnya.Keypad memanggil operasi item_quantity pd obyek POSTerminal, yg memiliki n sbg input argumen.
USE CASES • Operator memindai (scan) barang yg dibeli. Scanner memanggil operasi send_barcode pd obyek POSTerminal dgn no barcode sbg input argumen. Ada 2 kemungkinan: • Barcode tidak dikenal – hasil scan diabaikan, kasir mencoba lagi. Asumsi: akhirnya akan berhasil. • Barcode dikenal. Lakukan kalkulasi, cetak penjualan di kertas. Sebelum pencetakan baris pertama, cetak dahulu nama toko.
USE CASES • Ulangi langkah 1 & 2, sampai kasir mengetikkan T pd keypad. Jika hal tsb terjadi, keypad memanggil operasi end_sale pd obyek POSTerminal, tanpa argumen. Lakukan update yg diperlukan, cetak baris lain pada slip pembelanjaan termasuk sub total, pajak, & grand total.
Catatan • Setiap baris penjualan pd slip berisi: Dihitung oleh POS station harga satuan sesudah markup x jumlah penjualan Dari barcode reader pd POS station Dari komputer Depot Dimasukkan oleh kasir melalui keypad Harga dasar dari komputer DepotPersentase markup disimpan di komputer StoreHarga jual (sesudah markup) dihitung di komputer Store
Catatan • Agar dpt mencetak setiap baris penjualan pd sales slip & melaporkan inventori toko pd komputer Depot: • Setiap POS station mengirimkan no barcode & jumlah penjualan suatu item ke komputer Store. • Komputer Store menyampaikan informasi tsb ke komputer Depot, yg menjawab dgn informasi harga dasar item tsb, jenis pajak, dan nama item.
Catatan • Komputer Store menghitung harga sesudah mark up. Suatu item dpt dijual dgn harga berbeda di toko-toko yg berada pd jaringan IndoMart. • Harga sesudah markup dikirimkam dr komputer Store ke POS station. • POS station mencetak nama item & harga satuan item tsb pd slip penjualan. • Komputer Store juga mengirimkan kpd POS station, harga sesudah pajak dr item tsb.
Catatan • POS station menghitung dan mencetak harga penjualan sesuai jumlah yg dijual utk item tsb: harga satuan sesudah markup x quantity (jumlah penjualan). • Komputer Store mencatat total penjualan dalam satu hari, yg dpt dihitung melalui pemanggilan operasi print_store_sales_summary. Operasi tsb dpt dipanggil dr setiap POS station, tidak ada console khusus utk komputer Store.
Catatan • Pajak dihitung oleh komputer Store sbg final taxable sales total, tidak dihitung per-item, utk menghindari kesalahan kumulatif dlm pembulatan.
InputMedia OutputMedia POSTerminal Ketiganya ada pd POS station, yg terhubung dlm LAN setiap toko. Store StoreAccess TaxKetiganya ada pd komputer Store, satu LAN dgn POS di toko tsb. DepotAda pd WAN IndoMart Objects • Masing-masing obyek memiliki: • Glossary (keterangan) • State variables • Operations
Obyek pd POS Station • InputMedia: • Mensimulasikan keypad & barcode reader devices. • OutputMedia: • Mensimulasikan sales printer & screen, yg menunjukkan status penjualan saat ini. • POSTerminal: • Menangani interaksi antara media devices, mengingat status kalkulasi penjualan yg sedang berjalan, menyediakan fasilitas log in bagi kasir, menyampaikan laporan ttg POS station atau komputer Store.
Obyek pd Komputer Store • Store: • Traffic keeper & accountant for the store. • Menangani seluruh POS station pd suatu toko, mengatur log in POS station tsb, mencatat & melaporkan seluruh pd penjualan komputer Store & POS station. • StoreAccess: • Menangani sebuah POS station, agar obyek Store tdk overloaded. • Menyediakan akses ke basis data inventori.
Obyek pd Komputer Store • Tax: • Menyimpan informasi status pajak setiap item yg dijual di suatu toko. • Pd contoh ini, pakaian & makanan tidak dikenai pajak. Barang lainnya dikenakan flat tax (straight percentage of sales price).
Obyek pd Komputer Depot • Depot: • Merepresentasikan inventori jaringan IndoMart, berisikan informasi seluruh item yg dijual di seluruh toko.
IDL Module POS module POS { typedef long POSId; typedef string Barcode; interface InputMedia { typedef string OperatorCmd; void barcode_input(in Barcode item); void keypad_input( in OperatorCmd cmd); }; interface OutputMedia { boolean output_text( in string string_to_print ); };
IDL Module POS interface POSTerminal { void login(); void print_POS_sales_summary(); void print_store_sales_summary(); void send_barcode(in Barcode item); void item_quantity(in long quantity); void end_of_sale(); }; };
IDL Module AStore module AStore { enum ItemTypes {FOOD, CLOTHES, OTHER}; typedef long AStoreId; struct ItemInfo { POS::Barcode item; ItemTypes item_type; float item_cost; string name; long quantity; }; // The barcodeNotFound exception indicates that the // input barcode does not match to any known item. exception BarcodeNotFound { POS::Barcode item; };
IDL Module AStore interface StoreAccess; // /forward reference struct POSInfo { POS::POSId id; StoreAccess store_access_reference; float total_sales; float total_taxes; }; typedef sequence <POSInfo> POSList; interface Tax { float calculate_tax( in float taxable_amount); float find_taxable_price(in float item_price, in ItemTypes item_type); };
IDL Module AStore interface Store { struct StoreTotals { float store_total; float store_tax_total; }; readonly attribute AStoreId store_id; // The struct StoreTotals and this readonly attribute are used // in place of a pair of float attributes to avoid data inconsistencies // that would result from the following sequence of operations: // // POS 1 invokes a method to read store_total // POS 2 invokes the method update_store_totals // POS 1 invokes a method to read the store_tax_total readonly attribute StoreTotals totals; StoreAccess login( in POS::POSId id); void get_POS_totals( out POSList POS_data); void update_store_totals( in POS::POSId id, in float price, in float taxes); };
IDL Module AStore interface StoreAccess { // ItemTaxPrice is 0 or return value of FindTaxablePrice() void find_price(in POS::Barcode item, in long quantity, out float item_price, out float item_tax_price, out ItemInfo item_info) raises (BarcodeNotFound); }; };
IDL Module CentralOffice module CentralOffice { interface Depot { void find_item_info( in AStore::AStoreId store_id, in POS::Barcode item, in long quantity, out AStore::ItemInfo item_info) raises (AStore::BarcodeNotFound); }; };