summaryrefslogtreecommitdiff
path: root/oop/11-point-of-sale/docs
diff options
context:
space:
mode:
authorKamal Wickramanayake <kamal@inbox.lk>2026-03-20 22:48:14 +0530
committerKamal Wickramanayake <kamal@inbox.lk>2026-03-20 22:48:14 +0530
commit938427dace1a9622a55e3f81845fb82af697d001 (patch)
tree150c5c441339db4a2295e6e4ebb39c96b11b7df2 /oop/11-point-of-sale/docs
parentee94d753a9f87d0b46b3aad3d3cf855056562ad2 (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.txt7
-rw-r--r--oop/11-point-of-sale/docs/02-domain-model.uxf16
-rw-r--r--oop/11-point-of-sale/docs/03-design.uxf71
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=&lt;&lt;&lt;&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=&lt;&lt;&lt;&lt;&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=&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=&lt;&lt;&lt;&lt;&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=&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>&lt;&lt;interface&gt;&gt;
+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=&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>&lt;&lt;interface&gt;&gt;
+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=&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>&lt;&lt;interface&gt;&gt;
+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=&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=&lt;&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=&lt;&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=&lt;&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=&lt;-</panel_attributes><additional_attributes>10;10;170;10;170;40</additional_attributes></element></diagram> \ No newline at end of file