diff options
| author | Kamal Wickramanayake <kamal@inbox.lk> | 2026-03-20 22:48:14 +0530 |
|---|---|---|
| committer | Kamal Wickramanayake <kamal@inbox.lk> | 2026-03-20 22:48:14 +0530 |
| commit | 938427dace1a9622a55e3f81845fb82af697d001 (patch) | |
| tree | 150c5c441339db4a2295e6e4ebb39c96b11b7df2 /oop/11-point-of-sale/docs | |
| parent | ee94d753a9f87d0b46b3aad3d3cf855056562ad2 (diff) | |
Added 11-point-of-sale sample application
Diffstat (limited to 'oop/11-point-of-sale/docs')
| -rw-r--r-- | oop/11-point-of-sale/docs/01-requirements.txt | 7 | ||||
| -rw-r--r-- | oop/11-point-of-sale/docs/02-domain-model.uxf | 16 | ||||
| -rw-r--r-- | oop/11-point-of-sale/docs/03-design.uxf | 71 |
3 files changed, 94 insertions, 0 deletions
diff --git a/oop/11-point-of-sale/docs/01-requirements.txt b/oop/11-point-of-sale/docs/01-requirements.txt new file mode 100644 index 0000000..4f99432 --- /dev/null +++ b/oop/11-point-of-sale/docs/01-requirements.txt @@ -0,0 +1,7 @@ +A POS system needs to be created. A customer comes to the cashier and the +cashier takes items from the cart and enters the item ids into the system. For +each item type, the system asks the number of items to be purchased. The +system creates a bill and adds line items to it. At the end, the total is +calculated and the tax should be added. The system should ask to enter the +amount of money the customer would give. The system should print the entire +bill with the balance to be given back to the customer. diff --git a/oop/11-point-of-sale/docs/02-domain-model.uxf b/oop/11-point-of-sale/docs/02-domain-model.uxf new file mode 100644 index 0000000..04dae9e --- /dev/null +++ b/oop/11-point-of-sale/docs/02-domain-model.uxf @@ -0,0 +1,16 @@ +<diagram program="umletino" version="15.1"><zoom_level>10</zoom_level><element><id>UMLClass</id><coordinates><x>450</x><y>200</y><w>100</w><h>30</h></coordinates><panel_attributes>Customer</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>310</x><y>100</y><w>100</w><h>30</h></coordinates><panel_attributes>Cashier</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>50</x><y>520</y><w>100</w><h>80</h></coordinates><panel_attributes>Item +-- +id: String +name: String +unitPrice</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>50</x><y>330</y><w>100</w><h>30</h></coordinates><panel_attributes>Cart</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>80</x><y>350</y><w>40</w><h>190</h></coordinates><panel_attributes>lt=<<<<- +m2=*</panel_attributes><additional_attributes>10;10;10;170</additional_attributes></element><element><id>UMLClass</id><coordinates><x>270</x><y>340</y><w>180</w><h>100</h></coordinates><panel_attributes>Bill +-- +id +total +tax +cashByCustomer +balance</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>310</x><y>530</y><w>100</w><h>40</h></coordinates><panel_attributes>LineItem +-- +quantity: int</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>350</x><y>430</y><w>40</w><h>120</h></coordinates><panel_attributes>lt=<<<<<- +m2=*</panel_attributes><additional_attributes>10;10;10;100</additional_attributes></element><element><id>UMLClass</id><coordinates><x>60</x><y>100</y><w>120</w><h>30</h></coordinates><panel_attributes>PointOfSaleSystem</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>140</x><y>540</y><w>190</w><h>40</h></coordinates><panel_attributes>lt=<- +m1=1</panel_attributes><additional_attributes>10;10;170;10</additional_attributes></element></diagram>
\ No newline at end of file diff --git a/oop/11-point-of-sale/docs/03-design.uxf b/oop/11-point-of-sale/docs/03-design.uxf new file mode 100644 index 0000000..8eaee19 --- /dev/null +++ b/oop/11-point-of-sale/docs/03-design.uxf @@ -0,0 +1,71 @@ +<diagram program="umletino" version="15.1"><zoom_level>10</zoom_level><help_text>Space for diagram notes</help_text><element><id>UMLClass</id><coordinates><x>880</x><y>470</y><w>130</w><h>70</h></coordinates><panel_attributes>Item +-- +-id: String +-name: String +-unitPrice: BigDecimal</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>880</x><y>340</y><w>130</w><h>100</h></coordinates><panel_attributes>LineItem +-- +itemId: String +itemName: String +quantity: int +unitPrice: BigDecimal +</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>940</x><y>250</y><w>40</w><h>110</h></coordinates><panel_attributes>lt=<<<<<- +m2=*</panel_attributes><additional_attributes>10;10;10;90</additional_attributes></element><element><id>UMLClass</id><coordinates><x>860</x><y>140</y><w>180</w><h>120</h></coordinates><panel_attributes>Bill +-- +id: int +total: BigDecimal +tax: BigDecimal +cashByCustomer: BigDecimal +balance: BigDecimal +-- +addLineItem(lineItem: LineItem)</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>900</x><y>0</y><w>100</w><h>60</h></coordinates><panel_attributes>Cashier +-- +name: String +id: String</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>940</x><y>50</y><w>30</w><h>110</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;10;10;90</additional_attributes></element><element><id>UMLClass</id><coordinates><x>270</x><y>20</y><w>100</w><h>60</h></coordinates><panel_attributes>TextUI +-- +-- +-printBill() ++start()</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>480</x><y>20</y><w>250</w><h>140</h></coordinates><panel_attributes><<interface>> +PointOfSale +-- +-- +createNewBill(): Bill +addLineItem(itemId: String, quantity: int) +cashByCustomer(amount: String) +searchItems(q: String): ListsavBill() +saveBill() +finishBillSession()</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>360</x><y>30</y><w>140</w><h>30</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>120;10;10;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>490</x><y>420</y><w>240</w><h>120</h></coordinates><panel_attributes><<interface>> +BillManager +-- +-- +createNewBill():Bill +addLineItem(itemId: String, quantity: int) +cashByCustomer(amount: String) +saveBill() +finishBillSession()</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>600</x><y>320</y><w>30</w><h>120</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;100;10;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>890</x><y>640</y><w>100</w><h>30</h></coordinates><panel_attributes>TaxCalculator</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>0</x><y>370</y><w>370</w><h>100</h></coordinates><panel_attributes><<interface>> +ItemManager +-- +-- +createItem(id: String, name: String, unitPrice: BigDecimal): Item +findById(id: String): Item +searchItems(q: String): List</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>180</x><y>250</y><w>320</w><h>140</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;120;10;10;300;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>480</x><y>210</y><w>250</w><h>120</h></coordinates><panel_attributes>PointOfSaleImpl +-- +-- +createNewBill(): Bill +addLineItem(itemId: String, quantity: int) +cashByCustomer(amount: String) +searchItems(q: String): List +saveBill() +finishBillSession()</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>600</x><y>150</y><w>30</w><h>80</h></coordinates><panel_attributes>lt=<<.</panel_attributes><additional_attributes>10;10;10;60</additional_attributes></element><element><id>UMLClass</id><coordinates><x>490</x><y>600</y><w>240</w><h>120</h></coordinates><panel_attributes>BillManagerImpl +-- +- currentBill:Bill +-- +createNewBill():Bill +addLineItem(itemId: String, quantity: int) +cashByCustomer(amount: String) +saveBill() +finishBillSession()</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>600</x><y>530</y><w>30</w><h>90</h></coordinates><panel_attributes>lt=<<.</panel_attributes><additional_attributes>10;10;10;70</additional_attributes></element><element><id>UMLClass</id><coordinates><x>0</x><y>500</y><w>370</w><h>80</h></coordinates><panel_attributes>ItemManagerImpl +-- +-- +createItem(id: String, name: String, unitPrice: BigDecimal) +findById(id: String): Item +searchItems(q: String): List</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>180</x><y>460</y><w>30</w><h>60</h></coordinates><panel_attributes>lt=<<.</panel_attributes><additional_attributes>10;10;10;40</additional_attributes></element><element><id>Relation</id><coordinates><x>364</x><y>380</y><w>190</w><h>60</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;10;170;10;170;40</additional_attributes></element></diagram>
\ No newline at end of file |
