Reference no: EM133659295
Object-oriented programming
Part A
This is an individual assessment in which you will develop programs using Java programming concepts and OO principles based on problem definitions provided. You will be required to complete tutorial questions, laboratory exercises and a supervised programming test.
Setup your Environment or installation of Software's:
Install For Java, JDK 18, NetBeans 19 or latest version
For Python, Python 3.7.0, Atom, Jupyter or latest version
Problem Description: Comparing Loans
Write a program that lets the user enter the loan amount and loan period in number of years and displays the monthly and total payments for each interest rate starting from 5.00% to 8.00%, with an increment of 1/8. Here is a sample run:
Use the formulas below to compute monthly payment and total payment.
Design: (Describe the major steps for solving the problem.)
Coding: (Copy and Paste Source Code here. Format your code using Courier 10pts)
Output screenshot: (Paste your output screenshot here. You need to apply the currency and percentage formats as well)
Part B
Write a program in java for class name BankAccount1, by creating an instance, accessing properties using accessor methods, and modifying properties using mutator methods.
Properties/Attributes/Fields/instance variables:
Account Number (String)
Account Holder Name (String)
Balance (Double)
Account State (String) (for later use only)
Constructor
Takes all above fields as parameter
Methods:
Accessor
Mutator
Support methods (if required)
<Output>
Account Number: 123456789 Account Holder Name: John Doe Balance: 1000.0
Account State: Active
Updated Account Information:
Balance: 1500.0
Account State: Suspended
Design: (Describe the major steps for solving the problem.)
Coding: (Copy and Paste Source Code here. Format your code using Courier 10pts)
Output screenshot: (Paste your output screenshot here.) Testing: (Describe how you test this program) Submission Instructions
You will be marked based on your submitted zipped file on Moodle. You are most welcome to
check your file with your lab tutor before your submission. No excuse will be accepted due to file corruption, absence from lecture or lab classes where details of lab requirements may be given.
Note: All work is due by the due date and time. Late submissions will be penalized at 20% of the assessment final grade per day, including weekends.
Part C
For this tutorial session, students are required to appear in practical test by demonstrating the execution of a Java program.
Write a java program implementing a simple nested loop structure to draw the triangle using asterisk *character based on the user's input.
Introduction (Part A) INSTRUCTIONS:
Design a VIT Ride Management System using UML(class )diagram.
The system should allow administrators to manage users, drivers, and ride requests. The application should include the following classes:
User:
Design a class representing the user entity in the system. Include attributes such as user ID, name, contact information, and any other relevant information. Methods: Constructors, getters, and setters. Methods for user-related functionalities (e.g., registering, removing, displaying).
Driver:
Design a class representing the driver entity.
Include attributes like driver ID, name, license number, vehicle information, and availability status. Methods: Constructors, getters, and setters. Methods for driver-related functionalities (e.g., registering, removing, displaying).
Ride:
Design a class representing a ride request or allocation. Include attributes such as ride ID, user ID, driver ID, pickup location, destination, and status. Methods: Constructors, getters, and setters, Methods for ride-related functionalities (e.g., requesting, allocating, displaying).
RideManager:
Design a class to manage users, drivers, ongoing rides, and ride history. Include appropriate methods for registering, removing, and displaying users and drivers.Include methods for ride management, such as requesting rides, allocating drivers, and displaying ride history. Methods for ride management (e.g., requesting rides, allocating drivers, displaying ride history).
Main:
Contains the main method for testing the functionalities. Creates an instance of the Ride Manager class and provides a menu system to allow administrators to interact with the system.
Create Relationships:
User-Driver Relationship:
Define the relationship between the User and Driver classes to represent the association between users and drivers.
Ride-User-Driver Relationship:
Establish relationships between the Ride, User, and Driver classes to represent the associations between ride requests, users, and drivers. You may add some more relationships from your understanding.
The classes should be designed using object-oriented principles such as inheritance, encapsulation, and polymorphism. The application should allow to perform the following tasks:
Register New Users:
Implement a method to register new users for the ride service, including details such as name, student ID, and contact information.
Remove Users:
Implement a feature to remove users from the system based on their student ID.
Display All Users:
Develop a method to display a list of all users registered for the ride service.
Register New Drivers:
Implement a feature to register new drivers for the ride service, including details such as name, driver's license number, and vehicle information.
Remove Drivers:
Develop functionality to remove drivers from the system based on their driver's license number.
Display All Drivers:
Implement a method to display a list of all registered drivers available for rides.
Request a Ride:
Design functionality that allows users to request a ride by providing their current location and desired destination.
Allocate Drivers to Rides:
Implement a method to allocate available drivers to ride requests based on factors such as proximity and availability.
Display Ongoing Rides:
Develop a feature to display a list of all ongoing rides, including details about the user, driver, and current status.
Display Ride History:
Implement functionality to display a list of all completed rides, including information such as starting point, destination, and feedback.
Requirement for design
Utilize appropriate access modifiers for class attributes and methods.
Consider implementing appropriate getter and setter methods for encapsulation.
Use inheritance or interfaces where applicable to promote code reuse and maintainability.
Consider any additional classes or interfaces that may be necessary to support the outlined functionalities.
INSTRUCTIONS:
This assignment is an extension of assignment 3 Part A, that is the team is working on the same case study as in assignment 3 Part A, and Implement a VIT Ride Management System in Java.
Using the feedback provided by the teaching instructor, update the requirements of the VIT Ride application. Based on the conceptual class diagram of the whole system showing all classes and relationships, you are expected first to develop software application in Java implementing functionalities 1 to 10.
The system should allow administrators to manage users, drivers, and ride requests. The application should include the following classes:
User:
Instance Variables :name (String): User's name.,userID (String): User's ID, contactInformation (String): User's contact information.
Methods: Constructors, getters, and setters. Methods for user-related functionalities (e.g., registering, removing, displaying).
Driver:
Instance Variables: name (String): Driver's name, licenseNumber (String): Driver's license number, vehicleInformation (String): Driver's vehicle information.
Methods:Constructors, getters, and setters.Methods for driver-related functionalities (e.g., registering, removing, displaying).
Ride:
Instance Variables: user (User): User associated with the rid, driver (Driver): Driver assigned to the ride, currentLocation (String): Current location for the ride, destination (String): Desired destination for the ride, status (String): Current status of the ride (e.g., ongoing, completed).
Methods: Constructors, getters, and setters, Methods for ride-related functionalities (e.g., requesting, allocating, displaying).
RideManager:
Instance Variables:users (List<User>): List of registered users.drivers, (List<Driver>): List of registered drivers.,ongoingRides (List<Ride>): List of ongoing rides.,rideHistory (List<Ride>): List of completed rides.
Methods: Constructors., Methods for registering, removing, and displaying users and drivers. Methods for ride management (e.g., requesting rides, allocating drivers, displaying ride history).
Main: Contains the main method for testing the functionalities. Creates an instance of the Ride Manager class and provides a menu system to allow administrators to interact with the system.
Register New Users:
Implement a method to register new users for the ride service, including details such as name, student ID, and contact information.
Remove Users:
Implement a feature to remove users from the system based on their student ID.
Display All Users:
Develop a method to display a list of all users registered for the ride service.
Register New Drivers:
Implement a feature to register new drivers for the ride service, including details such as name, driver's license number, and vehicle information.
Remove Drivers:
Develop functionality to remove drivers from the system based on their driver's license number.
Display All Drivers:
Implement a method to display a list of all registered drivers available for rides.
Request a Ride:
Design functionality that allows users to request a ride by providing their current location and desired destination.
Allocate Drivers to Rides:
Implement a method to allocate available drivers to ride requests based on factors such as proximity and availability.
Display Ongoing Rides:
Develop a feature to display a list of all ongoing rides, including details about the user, driver, and current status.
Display Ride History:
Implement functionality to display a list of all completed rides, including information such as starting point, destination, and feedback.
The classes should be designed using object-oriented principles such as inheritance, encapsulation, and polymorphism. The program should not use a graphical user interface (GUI) but should instead use a command-line interface.
Second part is Video demonstration must follow the following protocols:
The whole group will be present in the video with face visible (Camera on). The whole group must introduce themselves and present their contributions. Then the team should discuss design and demonstrate the running of the system (VIT Ride Application). The video must not exceed more than 10 minutes
Workplan / Work breakdown Agreement (WBA)
You are expected to work as a group on this assignment and contribute very closely to approximately an equal amount of work (unless the special consideration policy outlined applies). In your workplan you must provide details about the contributions and how the work is organised and managed. In most cases, if this is followed, students will receive equal marks on those aspects to their teammates. The Workplan section must include the following information:
Task 1: Implementation
Design in the code matches the design in the class diagram.
Coding standards. Applies to any code that has been touched by human hands (e.g. meaningful variable and method names, commenting, layout). We will look for meaningful identifier names (variable, classes, methods), inline comments, method header comments, class/module comments, layout.
Functional Completeness: All features are fully implemented, and snapshots are included in the report.
Task 2: System Demonstrations
Please start the video by discussing the contribution of each team member (i.e., which team member was responsible for which component in the system).
Students demonstrate understanding of the system, the relationship between the code and the design documents of the system.
Students should point out where in their code the constructs shown in their design documents are implemented.
What You Have to Submit Team leader to Submit:
A document detailing the design of your solution in as much detail. It should include an updated UML diagram of the inheritance hierarchy as well as the component hierarchy of the system.
The code for each class in your design. Each class listing should be fully documented commencing with a heading that includes your name, student number, date written,
and lecturer's name, along with a brief description of the class. At the start of each method, there should be a comment clearly describing what the method does. This should be done in NetBeans only. Other IDE will not be accepted.
A readme.doc file with information on how to run your program. Include any extra information about your design and program that you wish the marker to know.
A Word document with evidence of trial runs of your program, i.e., screen printouts of the results where you have tested all the features of your code.