Unit 4 – Creating Methods
Since you have created the data objects for Harbor View Mooring, you now need to create processes associated with each object. In order to keep with good object-oriented practices of implementation hiding and program modularization, all processes related to an object (class) must be kept in a discreet method, within the object's Class definition file. So, your job is to create Methods that accomplish the following tasks.
Assumption: Each customer will only be owner of one boat and will only rent one slip.
You are expected to follow the "General Directions" found in the "Course Project Instructions" link on our course page.
(1) Use the Customer class and array you created in Unit 3. (See Note #1 in Programming Notes below.)
(2) Create a Method in the Customer Class file that will sort the Customers by ID number when called from the main program. To do this, you will need to use an Interface (using the iComparable method) as described in the programming notes below. (See Note #2 in Programming Notes below.)
(1) Use the Boat class and array you created in Unit 3.
(2) Each year, a customer must pay an insurance premium to HVM based on a fixed amount (determined by HVM) and the value of their boat. Create a Method in the Boat Class file called, "BoatInsurance". This Method will receive a fixed amount and a percentage (floating point number) as parameters (input by the user) and will return the insurance premium due from the owner of this boat. (The insurance premium is the fixed amount plus the percentage of the boat's value; the fixed amount and percentage are both supplied by the user.) In keeping with the OO principles of Abstraction and Reusability, this Method will be in the Boat Class file.
(1) Use the Slip class and array you created in Unit 3.
For Unit 4, the following tasks need to be demonstrated using the Methods you have created:
Use the Interface you created in the Customer class to sort the customers by ID number.
Print Customer information about each customer in sorted order. You can either print all information (fields), or print customer ID, last name, first name, boat number, and slip number (excluding address and phone number).
Continuously prompt the user for a customer number; while user enters a valid customer number, present customer name, boat ID, and slip ID. Tell the user if they enter an invalid customer ID. Continue prompting the user until they indicate they are finished.
Prompt the user for a boat ID;
if the boat ID is valid, return the value of the boat (using "getter" Methods from the Boat class). (See Note #3 in Programming Notes below.) and
ask the user if they want to calculate the yearly boat insurance premium;
if they do, prompt them for a fixed amount and a percentage, and then return the insurance premium amount. (For this task you should use the BoatInsurance method from the Boat class.)
Print out the insurance premium amount.
(If they enter an invalid boat ID, inform them of such.)
(No need to prompt the user for more boat IDs; just demonstrate this function once in your program; i.e. only ask for one boat ID, then continue on in the program.)
Prompt the user for a slip ID;
if the slip ID exists, return the slip's monthly rental amount,
and tell whether the slip is rented or not (using "getter" Methods from the Slip class). (See Note #3 in Programming Notes below.)
Ask the user if they want to change the monthly slip rental amount; if they do, then prompt them for the amount and update the slip rental amount (using "setter" Methods from the Slip class).
Print all the new slip information (at least slip ID and rental amount) to verify to the user that the slip rental amount was updated. (No need to prompt the user for more slip IDs; just demonstrate this function once in your program; i.e. only ask for one slip ID, then continue on in the program.)
(If they enter an invalid slip ID, inform them of such.)
(No need to prompt the user for more slip IDs; just demonstrate this function once in your program; i.e. only ask for one slip ID, then continue on in the program.)
No need to do advanced error checking; for this exercise we will assume that if the customer exists, then the slip and boat numbers also exist, even though in real life this might cause our program to encounter errors.
Unit 4 Programming Notes:
Because you are using the same Classes you created in Unit 3 (and will be instantiating your objects with data you have already created), you should copy your Visual Studio solution to create your Unit 4 Project. You can then add Methods to your Class files for Unit 4. (As in Unit 3, even though you will be submitting four separate .cs files, it is suggested that you create them all as one Visual Studio Project, if that is what you are using for your C# programming.)
For sorting "objects" by ID, you need to create an Interface using the iComparable.CompareTo() method in the Class file as explained on page 286 ff. (This same process could be used to sort by name or by any other field.)
In order to access elements of an object individually, you will need to assign "getters" and "setters", and set their protection levels properly. Consider using the auto-implemented property as explained on pp. 256-259.
Unit 4 Deliverables:
A customer Class file with indicated Methods defined.
A boat Class file with indicated Methods defined.
A slip Class file with indicated Methods defined.
A main C# test program that carries out the processes indicated above.