Hello! I have my first java software oral exam coming up soon and will be asked

Hello! I have my first java software oral exam coming up soon and will be asked questions and evaluated regarding this Metric Conversions (attached). Basically, I need help understanding the program in terms of the java language.
I need guidance and an explanation of how this code works and USE JAVA TERMS/LANGUAGE to explain this code (“______ is a reference that points to an object from class ______”, “this _____ object is created in order to call the _____ constructor in order to….”, “this variable is declared final because so….”, “this variable is declared as local because…”, etc.).
————————————————————————————————————————————————————————-Possible questions I could be asked:
– Definitions of the Java terms shown in the program
– Why did they choose to use this data structure/control structure etc…? (EX: Why did they decide to an if-else loop/switch statement structure/do-while loop for this part?)
– What is happening in this structure? (EX: what is happening in public static double convert(String fromUnit, String toUnit, double value))
– Instead of this structure, how would you change this program to also do …?
– What could you have done differently with this program to execute the same output? (EX: instead of this do-while structure, what could you have also done?, Instead of this switch-structure, what could you also have done?, etc.)
– What would happen if you made the following change?

JAVA: TO DO (1): (Metric Conversion Application ) Write an application that will

JAVA:
TO DO (1): (Metric Conversion Application ) Write an application that will assist the user with metric conversions. Your application should allow the user to specify the names of the units as strings(i.e., centimeters, liters, grams, and so on, for the metric system and inches, quarts, pounds, and so on, for the English system) and should respond to simple questions, such as
“How many inches are in 2 meters?”
“How many liters are in 10 quarts?”
————————————————————————————————————————————————————————-
Your application should recognize invalid conversions. For example, the question:
“How many feet are in 5 kilograms?”
is not meaningful because “feet” is a unit of length, whereas “kilograms” is a unit of mass.
————————————————————————————————————————————————————————-TO DO (2):
please write descriptions for (example attached): problem statement, user documentation, developer documentation, and source code (you probably won’t need to do this), you will need to add link/picture to Javadocs documentation and UML diagram.
*again, an explanation and steps of how and why the code is processed and done is a MUST
*do not COPY answers from other sources (chegg, coursehero, etc.), otherwise will request refund with proof

Description: 9.7 (The Account class) Design a class named Account that contains:

Description:
9.7 (The Account class) Design a class named Account that contains:- A private int property named id for the account (default 0).
– A private double property named balance for the account (default 0).
– A private double property named annualInterestRate that stores the current interest rate (default 0). Assume all accounts have the same interest rate.
– A private Date property named dateCreated that stores the date when the account was created.
– A no-arg constructor that creates a default account.
– A constructor that creates an account with the specified id and initial balance.
– Get and set methods for the properties: getId, setId, getBalance, setBalance, getAnnualInterestRate, setAnnualInterestRate, getDateCreated, and setDateCreated.
– A method named getMonthlyInterestRate() that returns the monthly interest rate.
– A method named getMonthlyInterest() that returns the monthly interest.
– A method named withdraw that withdraws a specified amount from the account.
– A method named deposit that deposits a specified amount to the account.
Implement this class.
Hints:
– The method getMonthlyInterest() is to return monthly interest, not the interest rate.
– Monthly interest is balance * monthlyInterestRate.
– monthlyInterestRate is annualInterestRate / 12.
– annualInterestRate is a percentage, e.g., like 4.5%. You need to divide it by 100.
Add a main() method to the class that creates an Account object with an account ID of 1122, a balance of $20,000, and an annual interest rate of 4.5%. Use the withdraw method to withdraw $2,500, use the deposit method to deposit $3,000, and print the balance, the monthly interest, monthly interest rate, and the annual interest rate.

Program name:
Account.java
Sample Runs:
The balance is: 20500.0
The monthly interest is: 76.875
The monthly interest rate is: 0.00375
The annual interest rate is: 4.5

Create a program that finds a path across the desert grid using rats. General be

Create a program that finds a path across the desert grid using rats.
General behavior and specifications of program.
The program will consist of one static class: ControlDriver class, and five object producing classes: Desert class, Cell class, Hole class, RatStatus class, and Rat class. There will also be a static ObjectCreator class that I will provide.
The ObjectCreator class is a static class that will provide Desert, Rat, RatStatus, Cell, and Hole objects when requested. Return values from these requests are interface types. The purpose of this class is to hide the production of objects from the client classes. Client classes will only use interfaces to work with objects.
The ControlDriver class is a static class that will
contain the main() method, which is the entry point into the program
control the timing of the rat moves.It will control the timing of rat movement across the desert by telling the Desert object when a rat can move. ControlDriver will use a loop to notify the Desert to move a rat for each move.
only communicate with the Desert and RatStatus objects through their respective interfaces.
be responsible for initiating the creation of new Rat objects.It will call startRat():RatStatusInterface – Desert and receive back a RatStatus object that contains the unique ID and status for the new rat.
it will maintain a list of current rat IDs.
request the creation of the Desert objectIt will request the creation of a single Desert object by calling ObjectCreator.createNewDesert(), and work through the DesertInterface of the object in running rats through the desert grid.
The Desert will
implement the DesertInterface
create the 2-dimensional CellInterface array for the desert during the construction of a new Desert object.The Desert constructor will query the user for the size of the desert array.
The Desert will create a two-dimensional array to represent the desert. It will be of type CellInterface[][], and will hold Cell and Hole objects.Cell class implements CellInterface,
call ObjectCreator.ceateNewRat() to create a Rat object when prompted and return a unique ID tuple for that Rat object (RatStatus). Note this is not the reference to the Rat object (see Ratstatus class).
start the rat in location (0,0) of the Desert’s array by doing the following task.will hand over a Rat to a cell and remove the Rat’s reference from its own records.
be responsible for keeping track of the rat’s location and movement path(Note: You may delegate keeping track of the rat’s movement path to the Rat. We will discuss this during lecture.)
The Desert, when prompted by the ControlDriver, will:retrieve a Rat from a cell by asking the cell if it has a Rat with a given ID. It receives the Rat’s reference, and the cell will set its storage of that Rat’s reference to null.
prompt the rat for a move direction.
The Desert will calculate the rat’s next location using the move direction provided by the rat and the current location of the rat.
The Desert moves the Rat one cell in a straight line in the direction indicated by the rat.
upon completion of the move, the desert will report back to the ControlDriver with the Rat’s ID and stateThe state is: 0: when the rat is waiting to move, 1: when the Rat is gone(died or escaped), or -1: When the Rat finishes the Desert.
will work with the rat object indicated by the control driver, by calling methods from the rat, using the RatInterface. The rat is an object of the Rat class.
keep rats from falling off the edge. The rats will stay in the grid cell closest to the edge or not move if they are at the edge, but it will still count as a move.
display the final results

Create a program that finds a path across the desert grid using rats. General be

Create a program that finds a path across the desert grid using rats.
General behavior and specifications of program.
The program will consist of one static class: ControlDriver class, and five object producing classes: Desert class, Cell class, Hole class, RatStatus class, and Rat class. There will also be a static ObjectCreator class that I will provide.
The ObjectCreator class is a static class that will provide Desert, Rat, RatStatus, Cell, and Hole objects when requested. Return values from these requests are interface types. The purpose of this class is to hide the production of objects from the client classes. Client classes will only use interfaces to work with objects.
The ControlDriver class is a static class that will
contain the main() method, which is the entry point into the program
control the timing of the rat moves.It will control the timing of rat movement across the desert by telling the Desert object when a rat can move. ControlDriver will use a loop to notify the Desert to move a rat for each move.
only communicate with the Desert and RatStatus objects through their respective interfaces.
be responsible for initiating the creation of new Rat objects.It will call startRat():RatStatusInterface – Desert and receive back a RatStatus object that contains the unique ID and status for the new rat.
it will maintain a list of current rat IDs.
request the creation of the Desert objectIt will request the creation of a single Desert object by calling ObjectCreator.createNewDesert(), and work through the DesertInterface of the object in running rats through the desert grid.
The Desert will
implement the DesertInterface
create the 2-dimensional CellInterface array for the desert during the construction of a new Desert object.The Desert constructor will query the user for the size of the desert array.
The Desert will create a two-dimensional array to represent the desert. It will be of type CellInterface[][], and will hold Cell and Hole objects.Cell class implements CellInterface,
call ObjectCreator.ceateNewRat() to create a Rat object when prompted and return a unique ID tuple for that Rat object (RatStatus). Note this is not the reference to the Rat object (see Ratstatus class).
start the rat in location (0,0) of the Desert’s array by doing the following task.will hand over a Rat to a cell and remove the Rat’s reference from its own records.
be responsible for keeping track of the rat’s location and movement path(Note: You may delegate keeping track of the rat’s movement path to the Rat. We will discuss this during lecture.)
The Desert, when prompted by the ControlDriver, will:retrieve a Rat from a cell by asking the cell if it has a Rat with a given ID. It receives the Rat’s reference, and the cell will set its storage of that Rat’s reference to null.
prompt the rat for a move direction.
The Desert will calculate the rat’s next location using the move direction provided by the rat and the current location of the rat.
The Desert moves the Rat one cell in a straight line in the direction indicated by the rat.
upon completion of the move, the desert will report back to the ControlDriver with the Rat’s ID and stateThe state is: 0: when the rat is waiting to move, 1: when the Rat is gone(died or escaped), or -1: When the Rat finishes the Desert.
will work with the rat object indicated by the control driver, by calling methods from the rat, using the RatInterface. The rat is an object of the Rat class.
keep rats from falling off the edge. The rats will stay in the grid cell closest to the edge or not move if they are at the edge, but it will still count as a move.
display the final results