-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathooprogAct
More file actions
142 lines (108 loc) · 4.01 KB
/
ooprogAct
File metadata and controls
142 lines (108 loc) · 4.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package ooprogAct;
import java.util.*;
class InsufficientStockException extends Exception {
public InsufficientStockException(String message) {
super(message);
}
}
class InvalidQuantityException extends Exception {
public InvalidQuantityException(String message) {
super(message);
}
}
public class product {
private String productId;
private String productName;
private int quantity;
private double price;
public product(String productId, String productName, int quantity, double price) {
this.productId = productId;
this.productName = productName;
this.quantity = quantity;
this.price = price;
}
public String getProductId() {
return productId;
}
public String getProductName() {
return productName;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
class PerishableProduct extends product {
private String expirationDate;
public PerishableProduct(String productId, String productName, int quantity, double price, String expirationDate) {
super(productId, productName, quantity, price);
this.expirationDate = expirationDate;
}
public String getExpirationDate() {
return expirationDate;
}
public void setExpirationDate(String expirationDate) {
this.expirationDate = expirationDate;
}
public void updateStock(int amount) throws Exception {
if (amount < 0) {
throw new InvalidQuantityException("Quantity cannot be negative.");
}
if (getQuantity() + amount > 100) {
throw new Exception("Cannot exceed maximum quantity of 100 for perishable products.");
}
setQuantity(getQuantity() + amount);
System.out.println("Stock updated: " + getProductName() + ", New Quantity: " + getQuantity());
}
}
class NonPerishableProduct extends product {
private int shelfLife;
public NonPerishableProduct(String productId, String productName, int quantity, double price, int shelfLife) {
super(productId, productName, quantity, price);
this.shelfLife = shelfLife;
}
public int getShelfLife() {
return shelfLife;
}
public void setShelfLife(int shelfLife) {
this.shelfLife = shelfLife;
}
public void updateStock(int amount) throws Exception {
if (getQuantity() + amount < 0) {
throw new InsufficientStockException("Insufficient stock for product " + getProductName());
}
setQuantity(getQuantity() + amount);
System.out.println("Stock updated: " + getProductName() + ", New Quantity: " + getQuantity());
}
}
abstract class InventoryOperation {
public abstract void addProduct(product product);
public abstract void removeProduct(String productId) throws InsufficientStockException;
}
class Inventory extends InventoryOperation {
ArrayList<product> prods = new ArrayList<>();
@Override
public void removeProduct(String productId) throws InsufficientStockException {
for (product product : prods) {
if (product.getProductId().equals(productId)) {
prods.remove(product);
System.out.println("Product removed: " + productId);
return;
}
}
throw new InsufficientStockException("Product not found: " + productId);
}
@Override
public void addProduct(product product) {
prods.add(product);
throw new UnsupportedOperationException("Unimplemented method 'addProduct'");
}
}
}