Java Program for Managing Customer and Online Orders
Java OOP: Exercise-27 with Solution
Write a Java program to create a class called "CustomerOrder" with attributes for order ID, customer, and order date. Create a subclass "OnlineOrder" that adds attributes for delivery address and tracking number. Implement methods to calculate delivery time based on the address and update the tracking status.
Sample Solution:
Java Code:
CustomerOrder.java
// Import necessary classes for date handling
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
// Define the CustomerOrder class
public class CustomerOrder {
// Attributes for order ID, customer, and order date
private String orderId;
private String customer;
private LocalDate orderDate;
// Constructor to initialize the CustomerOrder object
public CustomerOrder(String orderId, String customer, LocalDate orderDate) {
this.orderId = orderId;
this.customer = customer;
this.orderDate = orderDate;
}
// Getter for order ID
public String getOrderId() {
return orderId;
}
// Getter for customer
public String getCustomer() {
return customer;
}
// Getter for order date
public LocalDate getOrderDate() {
return orderDate;
}
// Method to display order details
public void displayOrderDetails() {
System.out.println("Order ID: " + orderId);
System.out.println("Customer: " + customer);
System.out.println("Order Date: " + orderDate);
}
}
Explanation:
CustomerOrder Class:
- Attributes: orderId, customer, and orderDate.
- Constructor: Initializes the attributes.
- Methods:
- displayOrderDetails(): Displays the order details.
- Getters: getOrderId(), getCustomer(), getOrderDate().
OnlineOrder.java
// Import necessary classes for date handling
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
// Define the OnlineOrder subclass that extends CustomerOrder
class OnlineOrder extends CustomerOrder {
// Additional attributes for delivery address and tracking number
private String deliveryAddress;
private String trackingNumber;
// Constructor to initialize the OnlineOrder object
public OnlineOrder(String orderId, String customer, LocalDate orderDate, String deliveryAddress, String trackingNumber) {
// Call the superclass constructor to initialize common attributes
super(orderId, customer, orderDate);
this.deliveryAddress = deliveryAddress;
this.trackingNumber = trackingNumber;
}
// Getter for delivery address
public String getDeliveryAddress() {
return deliveryAddress;
}
// Getter for tracking number
public String getTrackingNumber() {
return trackingNumber;
}
// Method to calculate delivery time based on the address (dummy logic for demonstration)
public int calculateDeliveryTime() {
// Dummy logic: Assuming delivery time is based on the length of the address string
return deliveryAddress.length() % 10 + 1; // Just a placeholder logic
}
// Method to update the tracking status (dummy logic for demonstration)
public void updateTrackingStatus(String newStatus) {
// Dummy logic: Print the updated tracking status
System.out.println("Tracking Number: " + trackingNumber + " - Status: " + newStatus);
}
// Override the displayOrderDetails method to include additional details
@Override
public void displayOrderDetails() {
// Call the superclass method to display common details
super.displayOrderDetails();
// Display additional details for online order
System.out.println("Delivery Address: " + deliveryAddress);
System.out.println("Tracking Number: " + trackingNumber);
}
}
Explanation:
OnlineOrder Subclass:
- Extends CustomerOrder.
- Additional Attributes: deliveryAddress and trackingNumber.
- Constructor: Initializes the attributes, calling the superclass constructor for the common attributes.
- Methods:
- calculateDeliveryTime(): Dummy logic to calculate delivery time based on the address.
- updateTrackingStatus(String newStatus): Dummy logic to update the tracking status.
- Overrides displayOrderDetails() to include additional details for online orders.
- Getters: getDeliveryAddress(), getTrackingNumber().
Main.java
// Import necessary classes for date handling
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
// Main class to test the CustomerOrder and OnlineOrder classes
public class Main {
public static void main(String[] args) {
// Create a CustomerOrder object
CustomerOrder order = new CustomerOrder("ORD023", "Asih Wanjiku", LocalDate.now());
// Display the order details
order.displayOrderDetails();
System.out.println();
// Create an OnlineOrder object
OnlineOrder onlineOrder = new OnlineOrder("ORD034", "Kai Biserka", LocalDate.now(), "123 ABC Street, Springfield", "STR455");
// Display the online order details
onlineOrder.displayOrderDetails();
// Calculate and display the delivery time
int deliveryTime = onlineOrder.calculateDeliveryTime();
System.out.println("Estimated Delivery Time: " + deliveryTime + " days");
// Update and display the tracking status
onlineOrder.updateTrackingStatus("In Transit");
}
}
Explanation:
- Main Method:
- public static void main(String[] args): The entry point of the program.
- Creating a CustomerOrder Object:
- CustomerOrder order = new CustomerOrder("ORD023", "Asih Wanjiku", LocalDate.now());: Creates a CustomerOrder object with order ID "ORD023", customer name "Asih Wanjiku", and the current date.
- Displaying CustomerOrder Details:
- order.displayOrderDetails();: Calls the method to display details of the CustomerOrder object.
- System.out.println();: Prints an empty line for separation.
- Creating an OnlineOrder Object:
- OnlineOrder onlineOrder = new OnlineOrder("ORD034", "Kai Biserka", LocalDate.now(), "123 ABC Street, Springfield", "STR455");: Creates an OnlineOrder object with order ID "ORD034", customer name "Kai Biserka", current date, delivery address "123 ABC Street, Springfield", and tracking number "STR455".
- Displaying OnlineOrder Details:
- onlineOrder.displayOrderDetails();: Calls the method to display details of the OnlineOrder object.
- Calculating and Displaying Delivery Time:
- int deliveryTime = onlineOrder.calculateDeliveryTime();: Calls the method to calculate the delivery time based on the delivery address.
- System.out.println("Estimated Delivery Time: " + deliveryTime + " days");: Prints the estimated delivery time.
- Updating and Displaying Tracking Status:
- onlineOrder.updateTrackingStatus("In Transit");: Calls the method to update the tracking status to "In Transit".
Output:
Order ID: ORD023 Customer: Asih Wanjiku Order Date: 2024-06-10 Order ID: ORD034 Customer: Kai Biserka Order Date: 2024-06-10 Delivery Address: 123 ABC Street, Springfield Tracking Number: STR455 Estimated Delivery Time: 8 days Tracking Number: STR455 - Status: In Transit
Java Code Editor:
Improve this sample solution and post your code through Disqus.
Java OOP Previous: Java Program: Event, Seminar & MusicalPerformance Classes.
Java OOP Next: Java Program for Managing Reservations with Resort and Railway Subclasses.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/java-exercises/oop/java-oop-exercise-27.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics