{"product_id":"new-full-course-guide-cis247a-week-ilab-1-7-projects_id_247ff573qqj","title":"(New Full Course Guide) CIS247A Week iLab 1-7 Projects","description":"\u003ch1\u003eCIS247A Week iLab 1-7 Projects-\u003cspan\u003eDeVry University\u003c\/span\u003e\n\u003c\/h1\u003e\n\u003ch2\u003eCIS247A Week 1 iLab Creating a User Interface\u003c\/h2\u003e\n\u003cp\u003eScenario and Summary\u003c\/p\u003e\n\u003cp\u003eThis program creates the basic user interface code that can be used, in the following week’s iLab assignments. The assignment will help you get started using the programming environment and some practice with coding. You will also be able to re-use much, if not all, of the code in later assignments.\u003cbr\u003eIn this program, you will create the following methods:\u003c\/p\u003e\n\u003cp\u003eDisplayApplicationInformation, which will provide the program user some basic information about the program.\u003cbr\u003eDisplayDivider, which will provide a meaningful output separator between different sections of the program output.\u003cbr\u003eGetInput, which is a generalized function that will prompt the user for a specific type of information, then return the string representation of the user input.\u003cbr\u003eTerminateApplication, which provides a program termination message.\u003c\/p\u003e\n\u003cp\u003eUsing these methods, you will construct a program that prompts the user for the following:\u003c\/p\u003e\n\u003cp\u003eTheir name, which will be a string data type\u003cbr\u003eTheir age, which will be an integer data type\u003cbr\u003eThe gas mileage for their car, which will be a double data type\u003cbr\u003eDisplay of the collected information\u003c\/p\u003e\n\u003cp\u003eAlso, note that the program should contain a well document program header. Deliverables\u003cbr\u003eBefore you post your lab in the dropbox, copy your entire program into a Notepad file and post that. I do not need you to zip the project or give me screen shots of the output.\u003cbr\u003ePreparation:\u003c\/p\u003e\n\u003cp\u003eIf you are using the Citrix remote lab, follow the login instructions located in the iLab tab in Course Home.\u003cbr\u003eLocate the Visual Studio 2010 icon and launch the program.\u003c\/p\u003e\n\u003cp\u003eiLAB STEPS\u003cbr\u003eSTEP 1: Review the Design\u003cbr\u003eDownload the program description and pseudocode. Make sure you fully understand the program design and ask any questions that you may have BEFORE you start programming.\u003c\/p\u003e\n\u003cp\u003eSTEP 2: Construct the Program\u003c\/p\u003e\n\u003cp\u003eStart Visual Studio and create a new project titled “CIS247_WK1_Lab_LASTNAME”\u003cbr\u003eUsing the Week 1 Lab Design construct the methods\u003cbr\u003eOnce the methods are constructed, use the Week 1 Lab Design document to create the Main\u003c\/p\u003e\n\u003cp\u003emethod.\u003c\/p\u003e\n\u003cp\u003eSTEP 3: Compile and Test\u003c\/p\u003e\n\u003cp\u003eWhen done, compile your code by clicking on Build-\u0026gt;Build Solution. Then debug any errors until your code is error-free. If you click on the error in the Error Window, it takes you to the statement in your code, which produced the error. You can then click on F1, which launches the Microsoft Help Library, to see additional information and possible suggestions on how to fix your error.\u003cbr\u003eTo execute your code, click Start and then Start Debugging. Check your output to ensure that you have the desired output. If you need to fix anything, close your execution window, modify your code as necessary, and rebuild.\u003cbr\u003eCreate a test plan in order to make sure your application runs properly. A test plan is a series of tests you choose to perform, where you predefine the input values and write down the expected output. When you execute your code given the input values, your program should display the expected output. If it does not, this means you need to review your code and correct any mistakes. Creating several scenarios, based on the program complexity, ensures that your code runs properly.\u003cbr\u003eExecute your code and check your output to ensure that you have the desired output. If you need to fix anything, close your execution window, modify your code as necessary, and rebuild.\u003c\/p\u003e\n\u003cp\u003eSTEP 4: Screen Prints\u003cbr\u003eThe output of your program should resemble the following: Image Description\u003c\/p\u003e\n\u003cp\u003eSTEP 5: Submit Deliverables\u003c\/p\u003e\n\u003cp\u003eBefore you post your lab in the dropbox, copy your entire program into a Notepad file and post that. I do not need you to zip the project or give me screen shots of the output.\u003cbr\u003eSubmit your lab to the Dropbox located on the silver tab at the top of this page. For instructions on how to use the Dropbox, read these Step-by-Step Instructions or watch this Dropbox Tutorial. See Syllabus “Due Dates for Assignments \u0026amp; Exams” for due date information.\u003c\/p\u003e\n\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp\u003eScenario and Summary\u003cbr\u003eWe begin our investigation of object-oriented programming by creating an object-oriented program with a class called Employee. You will create two objects based on the Employee class, along with a class that contains the main method. The attributes, constructors, and methods for this class must satisfy the requirements in Steps 1 through 3. After you create the objects, you will prompt the user for information and then display it. We will want to ensure that this first class is well-constructed and tested since we will extend this class in Labs 3 through 6.\u003c\/p\u003e\n\u003cp\u003eDeliverables\u003c\/p\u003e\n\u003cp\u003eiLAB STEPS\u003cbr\u003eSTEP 1: Understand the UML Class Diagram\u003cbr\u003eAnalyze and understand the object UML diagram, which models the structure of the program. The first section specifies the attributes. The second section specifies the operations, and the first character specifies the access modifier value, where:\u003c\/p\u003e\n\u003cp\u003e“-” means that the class member is private\u003cbr\u003e“+” means that the class member is public.\u003cbr\u003eEach attribute has a default value assigned, and you will create private class constants to hold these values and initialize the values in the default constructor.\u003cbr\u003eThe InputUtitlities and ApplicationUtilities classes are provided for you (see below) and are used by the Main method to display the standard application information and there are methods that will prompt, retrieve, and convert each of the different input data types. You will use these classes for each of the following weeks assignments. Directions on how to include these in your project are provided below.\u003cbr\u003eOne final note, for this lab ONLY will the attributes be made public. When we discuss accessors and mutators (get and set) methods in Week 3 we will modify these attributes to be “private” and all access to these attributes will be done with the get and set methods, or properties.\u003c\/p\u003e\n\u003cp\u003eLayer\/Tiered Program Architecture\u003cbr\u003eIn your following courses you will learn about a design principle called Tiered or Layered Architecture. This is a design technique that professional program desigers use to manage the complexity of real world applications. We do not want to go into the details of a tiered design in this course, but we do want tolearn to program using the underling principles since using the tiered approach is a practical way to simpify the coding process that professional programmers use and you will discover the tiered approach enables us to make changes to an existing program much easier. The programming labs in this course will lead you through this process but let’s define the two standard tiers that we will use in this course.\u003c\/p\u003e\n\u003cp\u003ePresentaiton tier contains all the classes that will provide input\/output operations and the main program. There should NOT be any actual data processing in the presentation tier and the presenation tier should only provide input\/ouput operations and execution control. Once data is collected in the presentation tier it is passed into the logic tier for processing. Once the logic tier processes the data the logic tier passes the information back to the presentation tier for output.\u003cbr\u003eLogic tier contains all the classes that represent the business objects that are necessary to hold and process the application data. There should not be any user input\/output operations in the Logic Tier and the Logic Tier should only process the data collected by operations in the presentation tier and then send the back the information operations in the presentation tier for display.\u003cbr\u003eOne last note. A tiered design is a “logical” design concept, which means that the physical files that hold the classes can exist in any location within your project. However, MS Visual Studio Solution Explorer provides tools to create folders and subfolders within your project that will allow us to store the classes for each teir into separate folders. However, will will NOT create these folders until Week 4 when we start adding more classes to the application. So, for now we just want to put the various files under the root project folder.\u003c\/p\u003e\n\u003cp\u003eSTEP 2: Create a New Project and Add Existing Classes\u003cbr\u003eIn the Week 1 lab you created a set of re-useable classes and methods and in order to demonstrate the power of re-usablity and to provide a common interface in all our programs, you will create a project and add some existing classes that contain re-useable methods that we will use throughout the rest of labs. In order to re-use the existing classes follow these steps:\u003c\/p\u003e\n\u003cp\u003eGo to the Doc Sharing area and download the Week 2 Utilities Class file, which is a zip file that contains two classes (1) ApplicationUtilities.cs and (2) InputUtilities.cs. Unzip the two files and place the files in a known location.\u003cbr\u003eCreate a new project called “CIS247_WK2_Lab_LASTNAME”. An empty project will then be created.\u003cbr\u003eRight click the project name in the Solution Explorer, or select the Project Menu, and select “Add Existing Item”\u003cbr\u003eNavigate to the folder where you saved the (1) ApplicationUtilities.cs and (2) InputUtilities.cs class files, select the files, and then click add.\u003cbr\u003eThe files will be added to your project.\u003cbr\u003eThe final step is to change the name of the Namespace so all the classes in the project can\u003cbr\u003erecognize each other (there are advanced ways around this, but for this course may be easiest to change the namespace. In order to make it easier for the follow on weeks, change the namespace to all the classes to “Employee”. The file list in the Solution Explorer will then look something like:\u003cbr\u003eSince all the lab assignments through the rest of the course will re-use classes from the previous week’s assignments, make sure you become proficient in adding existing items–it will reduce the\u003cbr\u003eamount of “busy work” you have to do each week.\u003c\/p\u003e\n\u003cp\u003eSTEP 3: Code the Employee class\u003cbr\u003eBe sure you follow proper commenting and programming styles (header, indentation, line spacing, etc.) that are specified in the Programming Conventions and Standards guide.\u003cbr\u003eUsing the provided Class Diagram as a guide code the Employee class in the new project (i.e., “Realize the UML Class diagram”).\u003c\/p\u003e\n\u003cp\u003eAdd a new class called “Employee” to the project\u003cbr\u003eFor each of the private attributes\u003cbr\u003eCreate constants in the Employee class for the default values, and the default constuctor\u003cbr\u003eshall set these default values to the appropriate attribute.\u003cbr\u003eThe multi-argument constructor (parameterized constructor) should initialize all of the attributes using values passed in through the parameter list.\u003cbr\u003eAs mentioned above, for this lab ONLY will the attributes be made “public” and we will access the attributes directly. Begininning in Week 3 ALL variable attributes of every class will be private and access will be done through the get and set methods.\u003cbr\u003eThe CalculateWeeklyPay( ) method of the Employee class should return the value of annual salary divided by 52 (return annualSalary \/ 52;).\u003cbr\u003eMost classes will have a ToString method that collects the key class attributes into a single well formated string. The method will always be declared using the “override” keyword (this will be explained in Week 5) and the declaration of the ToString method for every class will look like the following:\u003cbr\u003epublic override string ToString()\u003cbr\u003eThe ToString method will always return a string value that collects the key attributes, the following shows one technique that you can use to collect the information and return the formatted string:\u003cbr\u003epublic override string ToString()\u003cbr\u003e{\u003cbr\u003estring output;\u003cbr\u003eoutput = “============ Employee Information ============”; \u003cbr\u003eoutput += “Name: ” + firstName + ” ” + lastName;\u003cbr\u003e\/\/rest of method omitted\u003cbr\u003ereturn output;\u003cbr\u003e}\u003cbr\u003eIn order to print out currency values in currency format (dollars and cents) you can use the ToString method that each numeric variable has predefined. For example, to output the annualSalary in currency you would use the following:\u003cbr\u003eoutput += “Annual Salary: ” + AnnualSalary.ToString(“C2??);\u003c\/p\u003e\n\u003cp\u003eSTEP 4: Code the Main Program\u003cbr\u003eIn the Main class, create code statements that perform the following operations.\u003cbr\u003eRemember, to access a public method (method or property) of an object, or class, use the DOT notation:\u003cbr\u003eobjectName.MethodName()\u003c\/p\u003e\n\u003cp\u003eFor example, to access the DisplayApplicationInformation of the ApplicationUtilities class, the\u003cbr\u003estatement would look something like: ApplicationUtilities.DisplayApplicationInformation();\u003c\/p\u003e\n\u003cp\u003eDisplay the program information.\u003cbr\u003eCreate an Employee object using the default constructor.\u003cbr\u003ePrompt for and then set the first name, last name, gender, dependents, and annual salary.\u003cbr\u003eRemember to use the appropriate methods in the InputUtilties class to prompt for and retreive the values.\u003cbr\u003eDisplay the employee information.\u003cbr\u003eCreate a second Employee object using the multi-argument constructor using data of your\u003cbr\u003echoosing that is the correct type and within the valid ranges for each of the attributes.\u003cbr\u003eDisplay the Employee information for the second employee object.\u003cbr\u003eTerminate the application\u003c\/p\u003e\n\u003cp\u003eSTEP 5: Compile and Test\u003cbr\u003eWhen done, compile and execute your code. Debug errors until your code is error-free. Check your output to ensure that you have the desired output, modify your code as necessary, and rebuild. The following shows some sample output, but your output may look different.\u003c\/p\u003e\n\u003cp\u003eSTEP 6: Submit Deliverables\u003cbr\u003eBefore you post your lab in the dropbox, copy your entire program into a Notepad file and post that. I do not need you to zip the project or give me screen shots of the output.\u003cbr\u003eSubmit your lab to the Dropbox located on the silver tab at the top of this page. For instructions on how to use the Dropbox, read these Step-by-Step Instructions or watch this Dropbox Tutorial. See Syllabus “Due Dates for Assignments \u0026amp; Exams” for due date information.\u003cbr\u003eCIS247A Week 1 iLab Creating a User Interface\u003cbr\u003eCIS247A Week 3 iLab Overloaded Methods and Static Methods Variables\u003cbr\u003eCIS247A Week 4 iLab Composition and Class Interfaces\u003cbr\u003eCIS247A Week 5 iLab Composition Inheritance and Polymorphism\u003cbr\u003eCIS247A Week 6 iLab Abstract Classes\u003cbr\u003eCIS247A Week 7 iLab Putting It All Together\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003ch2\u003eCIS247A Week 2 iLab Object Construction and Data Abstraction\u003c\/h2\u003e\n\u003cp\u003eScenario and Summary\u003c\/p\u003e\n\u003cp\u003eThis program creates the basic user interface code that can be used, in the following week’s iLab assignments. The assignment will help you get started using the programming environment and some practice with coding. You will also be able to re-use much, if not all, of the code in later assignments.\u003cbr\u003eIn this program, you will create the following methods:\u003c\/p\u003e\n\u003cp\u003eDisplayApplicationInformation, which will provide the program user some basic information about the program.\u003cbr\u003eDisplayDivider, which will provide a meaningful output separator between different sections of the program output.\u003cbr\u003eGetInput, which is a generalized function that will prompt the user for a specific type of information, then return the string representation of the user input.\u003cbr\u003eTerminateApplication, which provides a program termination message.\u003c\/p\u003e\n\u003cp\u003eUsing these methods, you will construct a program that prompts the user for the following:\u003c\/p\u003e\n\u003cp\u003eTheir name, which will be a string data type\u003cbr\u003eTheir age, which will be an integer data type\u003cbr\u003eThe gas mileage for their car, which will be a double data type\u003cbr\u003eDisplay of the collected information\u003c\/p\u003e\n\u003cp\u003eAlso, note that the program should contain a well document program header. Deliverables\u003cbr\u003eBefore you post your lab in the dropbox, copy your entire program into a Notepad file and post that. I do not need you to zip the project or give me screen shots of the output.\u003cbr\u003ePreparation:\u003c\/p\u003e\n\u003cp\u003eIf you are using the Citrix remote lab, follow the login instructions located in the iLab tab in Course Home.\u003cbr\u003eLocate the Visual Studio 2010 icon and launch the program.\u003c\/p\u003e\n\u003cp\u003eiLAB STEPS\u003cbr\u003eSTEP 1: Review the Design\u003cbr\u003eDownload the program description and pseudocode. Make sure you fully understand the program design and ask any questions that you may have BEFORE you start programming.\u003c\/p\u003e\n\u003cp\u003eSTEP 2: Construct the Program\u003c\/p\u003e\n\u003cp\u003eStart Visual Studio and create a new project titled “CIS247_WK1_Lab_LASTNAME”\u003cbr\u003eUsing the Week 1 Lab Design construct the methods\u003cbr\u003eOnce the methods are constructed, use the Week 1 Lab Design document to create the Main\u003c\/p\u003e\n\u003cp\u003emethod.\u003c\/p\u003e\n\u003cp\u003eSTEP 3: Compile and Test\u003c\/p\u003e\n\u003cp\u003eWhen done, compile your code by clicking on Build-\u0026gt;Build Solution. Then debug any errors until your code is error-free. If you click on the error in the Error Window, it takes you to the statement in your code, which produced the error. You can then click on F1, which launches the Microsoft Help Library, to see additional information and possible suggestions on how to fix your error.\u003cbr\u003eTo execute your code, click Start and then Start Debugging. Check your output to ensure that you have the desired output. If you need to fix anything, close your execution window, modify your code as necessary, and rebuild.\u003cbr\u003eCreate a test plan in order to make sure your application runs properly. A test plan is a series of tests you choose to perform, where you predefine the input values and write down the expected output. When you execute your code given the input values, your program should display the expected output. If it does not, this means you need to review your code and correct any mistakes. Creating several scenarios, based on the program complexity, ensures that your code runs properly.\u003cbr\u003eExecute your code and check your output to ensure that you have the desired output. If you need to fix anything, close your execution window, modify your code as necessary, and rebuild.\u003c\/p\u003e\n\u003cp\u003eSTEP 4: Screen Prints\u003cbr\u003eThe output of your program should resemble the following: Image Description\u003c\/p\u003e\n\u003cp\u003eSTEP 5: Submit Deliverables\u003c\/p\u003e\n\u003cp\u003eBefore you post your lab in the dropbox, copy your entire program into a Notepad file and post that. I do not need you to zip the project or give me screen shots of the output.\u003cbr\u003eSubmit your lab to the Dropbox located on the silver tab at the top of this page. For instructions on how to use the Dropbox, read these Step-by-Step Instructions or watch this Dropbox Tutorial. See Syllabus “Due Dates for Assignments \u0026amp; Exams” for due date information.\u003c\/p\u003e\n\u003cp\u003eSCREENSHOTS SOLUTION PAYMENT\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003eThis Includes:\u003cbr\u003eCIS247A Week 2 iLab Object Construction and Data Abstraction\u003cbr\u003eCIS247A Week 3 iLab Overloaded Methods and Static Methods Variables\u003cbr\u003eCIS247A Week 4 iLab Composition and Class Interfaces\u003cbr\u003eCIS247A Week 5 iLab Composition Inheritance and Polymorphism\u003cbr\u003eCIS247A Week 6 iLab Abstract Classes\u003cbr\u003eCIS247A Week 7 iLab Putting It All Together\u003c\/p\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003ch2\u003eCIS247A Week 3 iLab Overloaded Methods and Static Methods Variables\u003c\/h2\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eScenario and Summary\u003c\/div\u003e\n\u003cdiv\u003eThe objective of the lab is to take the UML Class diagram and enhance last week?s Employee class by making the following changes:\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eCreate a static variable called numEmployees that holds an int and initialize it to zero. This will allow us to count all the Employee objects created in the main class.\u003c\/div\u003e\n\u003cdiv\u003eIncrement numEmployees in all of the constructors.\u003c\/div\u003e\n\u003cdiv\u003eAdd an overloaded method of CalculatePay that will accept a new, or modifed, annual salary\u003c\/div\u003e\n\u003cdiv\u003evalue. We will then have two versions of the CalculatePay method (1) that uses the current value of the annual salary for the calculation and (2) one that updates the annual salary with a new value before the calculation.\u003c\/div\u003e\n\u003cdiv\u003eUsing properties add accessor (get) and mutator (set) methods to access each of the private attributes and to validate the attribute values before they are set.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eiLAB STEPS\u003c\/div\u003e\n\u003cdiv\u003eSTEP 1: Understand the UML Diagram\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eAnalyze and understand the object UML diagram, which models the structure of the program.\u003c\/div\u003e\n\u003cdiv\u003eThere are no design changes to the Presentation Tier from the previous project and InputUtilities and ApplicationsUtilities classes are used without modification (except for changing the Application Information).\u003c\/div\u003e\n\u003cdiv\u003eThe default values for each of the attributres have been declared as a constants, which is indicated by the ALL_CAPS in the name, and the attributes are then set using the default values\u003c\/div\u003e\n\u003cdiv\u003eEach of the attributes have been specified as private.\u003c\/div\u003e\n\u003cdiv\u003eThe accessors (get) and mutators (set) are not shown on the class diagram, but it is ASSUMED that each private attribute has a corresponding property that contains the get and set methods.\u003c\/div\u003e\n\u003cdiv\u003eThe “static” modifier for the numEmployees attribute means that there is only one copy of the variable that is then shared by all the objects of the class.\u003c\/div\u003e\n\u003cdiv\u003eThere is a second CalculatePay method that overloads the existing CalculatePay method\u003c\/div\u003e\n\u003cdiv\u003eWhile not shown on the class diagram, the property for numEmployees will only have a get method, which means it will be a “read only” method. (A property with only and set method is a “wrute-only” property).\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 2: Create the Project\u003c\/div\u003e\n\u003cdiv\u003eYou will want to use the Week 2 project as the starting point for the lab. To do this, you will want to create a new project by following these steps:\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eCreate a new project named “CIS247_WK3_Lab_LASTNAME”. An empty project will then be created.\u003c\/div\u003e\n\u003cdiv\u003eDelete the default Program.cs file that is created.\u003c\/div\u003e\n\u003cdiv\u003eClick on Project-\u0026gt;Add Existing Item…. Select the .cs files containing the InputUtilities,\u003c\/div\u003e\n\u003cdiv\u003eApplicationUtilities, Employee, and Program classes from your project folder from last week?s lab.\u003c\/div\u003e\n\u003cdiv\u003eThe namespaces for the classes should all be “Employee”, but you should verify that the namespaces for all the classes are the same.\u003c\/div\u003e\n\u003cdiv\u003eUpdate the program information in the ApplicationUtilities.DisplayApplicationInformation method to reflect your name, current lab, and program description.\u003c\/div\u003e\n\u003cdiv\u003eBuild and execute the project.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eFor each week?s assignments you will follow these steps create a new project that reuses the program from the previous week.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 3: Modify the Employee\u003c\/div\u003e\n\u003cdiv\u003eBe sure you follow proper commenting and programming styles (header, indentation, line spacing, etc.) that are specified in the Programming Conventions and Standards guide. Using the Employee class diagram as a guide modify the Employee class:\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eAdd the constants to the class using the following as an example:\u003c\/div\u003e\n\u003cdiv\u003epublic const double MIN_SALARY = 20000;\u003c\/div\u003e\n\u003cdiv\u003eIn the default constructor, update assignment statements to use the defined constants\u003c\/div\u003e\n\u003cdiv\u003eChange all the employee class attributes to private.\u003c\/div\u003e\n\u003cdiv\u003eCreate a private static numEmployees variable and initialize it to zero\u003c\/div\u003e\n\u003cdiv\u003eIncrement numEmployees by 1 in each of the constructors\u003c\/div\u003e\n\u003cdiv\u003eFor each private attribute, create a well-named property that contains the get and set\u003c\/div\u003e\n\u003cdiv\u003emethods. The get method of the property only needs to return the value of the attribute; but the set method of each property needs to validate the provided value using the following validation rules:\u003c\/div\u003e\n\u003cdiv\u003ea. If the provided first or last values are empty, or a null value, then set the name to DEFAULT_NAME.\u003c\/div\u003e\n\u003cdiv\u003eb. If the provided gender value is „F?, „f?, „M?, or „m? set the value; otherwise set the value to DEFAULT_GENDER.\u003c\/div\u003e\n\u003cdiv\u003ec. If the provided dependent value is between the MIN_DEPENDENTS and MAX_DEPENDENTS (inclusive) then set dependent to the provided value; if the provided value is less than MIN_DEPENDENTS set the dependents to MIN_DEPENDENTS; else if provided value is greater than MAX_DEPENDENTS set the dependents to MAX_DEPENDENTS.\u003c\/div\u003e\n\u003cdiv\u003ed. If the provided salary value is between the MIN_SALARY and MAX_SALARY (inclusive) the set the annualSalary to the provided value; if the provided value is less than MIN_SALARY set the annualSalary to MIN_SALARY; else if provided value is greater than MAX_SALARY set the annualSalary to MAX_SALARY.\u003c\/div\u003e\n\u003cdiv\u003ee. For the numEmployee attribute create a property called NumberEmployees that only contains a “get” method, external objects should NOT be allowed modify the numEmployee value. Since numEmployees is a static method, the property must be declared as static.\u003c\/div\u003e\n\u003cdiv\u003eIn the parameterized constructor, change statements that set the attributes so that the properties are used, which ensures that attributes are validated prior to be set.\u003c\/div\u003e\n\u003cdiv\u003eCreate the overloaded CalculateWeeklyPay method that accepts a double “modifiedSalary” argument. The method shall update the annualSalary attribute (use the AnnualSalary property to ensure the value is valid), and then return the updated weekly pay based on the new annual salary value.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 4: Modify the Main Method\u003c\/div\u003e\n\u003cdiv\u003eIn the Main class, create code statements that perform the following operations. Be sure you follow proper commenting and programming styles (header, indentation, line spacing, etc.) and use the ApplicationUtiltities methods to logically separate the operations in the output.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eTo access a property of an object\/class, you continue to use the DOT notation; however, a property DOES NOT require the parenthesis and you just use the assignment operator (=) to set or get the value, which makes using propertys very easy. For example to set the first name, the statement would look something like:\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e1\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003e \u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003eemployee1.FirstName = “John”\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eTo get the full name, the statement would look look something like:\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e1\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003e \u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003etheName = employee1.FirstName + ” ” + employee1.LastName\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eNotice, there is no use of parenethese, only the assignment operator, when using properties.\u003c\/div\u003e\n\u003cdiv\u003eThe Main method code from the previous week?s lab performed the following operations, ensure that your project correctly implements these operations before moving on the new operations for this week.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eDisplay the program information.\u003c\/div\u003e\n\u003cdiv\u003eCreate an Employee object using the default constructor.\u003c\/div\u003e\n\u003cdiv\u003ePrompt for and then set the first name, last name, gender, dependents, and annual salary.\u003c\/div\u003e\n\u003cdiv\u003eRemember to use the appropriate methods in the InputUtilties class to prompt for and retreive the values.\u003c\/div\u003e\n\u003cdiv\u003eDisplay the employee information.\u003c\/div\u003e\n\u003cdiv\u003eCreate a second Employee object using the multi-argument constructor using data of your\u003c\/div\u003e\n\u003cdiv\u003echoosing that is the correct type and within the valid ranges for each of the attributes.\u003c\/div\u003e\n\u003cdiv\u003eDisplay the Employee information for the second employee object.\u003c\/div\u003e\n\u003cdiv\u003eTerminate the application\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eOnce your code is working and implements the previous week?s operations, modify the code to implement the following new requirements (updated code should implement all previous requirements except as noted below).\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eAfter the first employee information is provided, display the number of employees created.\u003c\/div\u003e\n\u003cdiv\u003ePrompt the user to provide an updated annual salary for employee1, retrieve the value and\u003c\/div\u003e\n\u003cdiv\u003einvoke the overloaded CalculateWeeklyPay, and then display only the updated weekly pay.\u003c\/div\u003e\n\u003cdiv\u003eCreate a third Employee object using the parameterized constructor setting each of the attributes with the following values: “Sue”, “Smith”, „F?, 15, 500000.0\u003c\/div\u003e\n\u003cdiv\u003eDisplay the employee information for the third Employee object and verify that the dependents and annual salary values have been set to the maximum values by the properties. If not, make sure you change the parameterized constructor to use the properties to set the attributes.\u003c\/div\u003e\n\u003cdiv\u003eDisplay the number of employees created.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 5: Compile and Test\u003c\/div\u003e\n\u003cdiv\u003eWhen done, compile and execute your code. Debug errors until your code is error-free. Check your output to ensure that you have the desired output, modify your code as necessary, and rebuild. The following shows some sample output, but your output may look different.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 6: Submit Deliverables\u003c\/div\u003e\n\u003cdiv\u003eBefore you post your lab in the dropbox, copy your entire program into a Notepad file and post that. I do not need you to zip the project or give me screen shots of the output.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSubmit your lab to the Dropbox located on the silver tab at the top of this page. For instructions on how to use the Dropbox, read these Step-by-Step Instructions or watch this Dropbox Tutorial.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSCREENSHOTS SOLUTION PAYMENT\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eYou May Also Like:\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 1 iLab Creating a User Interface\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 2 iLab Object Construction and Data Abstraction\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 4 iLab Composition and Class Interfaces\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 5 iLab Composition Inheritance and Polymorphism\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 6 iLab Abstract Classes\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 7 iLab Putting It All Together\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003ch2\u003eCIS247A Week 4 iLab Composition and Class Interfaces\u003c\/h2\u003e\n\u003cdiv\u003e\n\u003cdiv\u003eScenario and Summary\u003c\/div\u003e\n\u003cdiv\u003eThe objective of the lab is to modify the Employee class to demonstrate composition where a containing class (Employee) contains another class (Benefit). An employee typically has benefits, so we will make the following changes:\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eCreate a Benefit class.\u003c\/div\u003e\n\u003cdiv\u003eIntegrate the Benefit class into the Employee class.\u003c\/div\u003e\n\u003cdiv\u003eSeparate the files in the project into Presentation and Logic tier folders Deliverables\u003c\/div\u003e\n\u003cdiv\u003eBefore you post your lab in the dropbox, copy your entire program into a Notepad file and post that. I do not need you to zip the project or give me screen shots of the output.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eiLAB STEPS\u003c\/div\u003e\n\u003cdiv\u003eSTEP 1: Understand the UML Diagram\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eAnalyze and understand the object UML diagram, which models the structure of the program. • There are no design changes to the Presentation Tier from the previous project and InputUtilities and ApplicationsUtilities classes are used without modification (except for changing the Application Information).\u003c\/div\u003e\n\u003cdiv\u003eA new class called Benefits that holds the health insurance company, life insurance amount, and vacation days. There are constant attributes defined for each of the default values and the minimum and maximum values. This composition relationhip is specified in the UML class diagram as a solid diamond connecting to the Emploee class.\u003c\/div\u003e\n\u003cdiv\u003eThe Benefits class shall contain properties that contain get and set methods for each of the attributes in the Benefits class, and each attribute value shall be properly validated in the properties.\u003c\/div\u003e\n\u003cdiv\u003eThe Employee class contains a new attribute called benefit that is of type Benefits. There will be a property in the Employee class that can set and get the benefit attribute.\u003c\/div\u003e\n\u003cdiv\u003eEach constructor of Employee class will need to instansiate the benefit attribute.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 2: Create the Project\u003c\/div\u003e\n\u003cdiv\u003eYou will want to use the Week 3 project as the starting point for the lab. To do this, you will want to create a new project by following these steps:\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eCreate a new project named “CIS247_WK4_Lab_LASTNAME”. An empty project will then be created.\u003c\/div\u003e\n\u003cdiv\u003eDelete the default Program.cs file that is created.\u003c\/div\u003e\n\u003cdiv\u003eNow that we are beginning to add more classes to our projects the Solution Explorer can become difficult to organize so you will create folders to hold the Presentation Tier and Logic Tier Files in order to organize the project. One thing to remember, even though we only have a few files in our project, a professional program will have 100?s if not 1000?s of files in a project, so you will want to get practice in organizing your project files in a logical folder heirarchy and we will use the Tiered Architecture structure shown in the UML Class diagram for the folder structure.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eYou will find that creating folders within MS Visual Studio is very similiar to creating folders in Windows Explorer. Follow these directions to create the folders:\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSelect the project and then right click\u003c\/div\u003e\n\u003cdiv\u003eSelect Add\u003c\/div\u003e\n\u003cdiv\u003eSelect New Folder\u003c\/div\u003e\n\u003cdiv\u003eEnter the name of the folder\u003c\/div\u003e\n\u003cdiv\u003eAdd the following three folders to your project (1) Presentation Tier, (2) Logic Tier, and (3) Utilities.\u003c\/div\u003e\n\u003cdiv\u003eYou are going to add the files from the previous week lab to the project just as you did before, but now you add the existing files to the corresponding folder\u003c\/div\u003e\n\u003cdiv\u003eSelect the Logic Tier folder, right click and select Add then Existing Item, navigate to your previous week?s project and select the InputUtitilies.cs and Program.cs files and click add. These two files will then be added to the Presentation. [Hint: you can also drag and drop the files directly from Windows Explorer directly into the corresponding folder in your project!]\u003c\/div\u003e\n\u003cdiv\u003eAdd the previous week?s Employee.cs file to the Logic Tier folder.\u003c\/div\u003e\n\u003cdiv\u003eAdd the ApplicationUtilities.cs file to the Utilities folder.\u003c\/div\u003e\n\u003cdiv\u003eYour solution explorer should look similiar to the following (note: you can rename any folder by selecting the folder, right click, and then Rename just like you do in Windows).\u003c\/div\u003e\n\u003cdiv\u003eThe namespaces for the classes should all be “Employee”, but you should verify that the namespaces for all the classes are the same.\u003c\/div\u003e\n\u003cdiv\u003eUpdate the program information in the ApplicationUtilities.DisplayApplicationInformation method to reflect your name, current lab, and program description.\u003c\/div\u003e\n\u003cdiv\u003eBuild and execute the project.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 3: Create the Benefits Class\u003c\/div\u003e\n\u003cdiv\u003eUsing the Benefit class diagram as a guide, build the Benefit class.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eCreate a property for each of the listed private attributes and validate the provided value using the following rules:\u003c\/div\u003e\n\u003cdiv\u003eIf the insurance company provided is empty or null then set the healthInsuranceCompany to DEFAULT_HEALTH_INSURANCE\u003c\/div\u003e\n\u003cdiv\u003eIf the provided life insurance value is between the MIN_LIFE_INSURANCE and MAX_LIFE_INSURANCE (inclusive) then set lifeInsuranceAmount to the provided value; if the provided value is less than MIN_LIFE_INSURANCE set the lifeInsuranceAmount to MIN_LIFE_INSURANCE; else if provided value is greater than MAX_LIFE_INSURANCE; set thelifeInsuranceAmount to MAX_LIFE_INSURANCE.\u003c\/div\u003e\n\u003cdiv\u003eIf the provided vacation days value is between the MIN_VACATION and MAX_VACATION (inclusive) the set the vacationDays to the provided value; if the provided value is less than MIN_VACATION set the vacationDays to MIN_VACATION; else if provided value is greater than MAX_VACATION set the vacationDays value to MAX_VACATION.\u003c\/div\u003e\n\u003cdiv\u003eIn the parameterized constructor, set the attributes so that the properties are used, which ensures that attributes are validated prior to be set.\u003c\/div\u003e\n\u003cdiv\u003eCreate an overridden ToString method that collects and formats the attribute information for\u003c\/div\u003e\n\u003cdiv\u003ethe benefit object. Ensure to display life insurance amount in currency format.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 4: Modify the Employee Class\u003c\/div\u003e\n\u003cdiv\u003eUsing the Employee class diagram as a guide, modify the Employee class\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eAdd a private attribute called “benefit” to the employee class of type Benefits\u003c\/div\u003e\n\u003cdiv\u003eCreate a public Benefit property that returns the benefit attribute. In the set method of the property, if the provided value is null then re-instantiate the benefit variable; otherwise, set the provided value to the benefit variable. [Hint: to check if a object is null use the syntax “if (object != null)”]\u003c\/div\u003e\n\u003cdiv\u003eIn the default constructor, instantiate the benefit variable using the Benefits default constructor\u003c\/div\u003e\n\u003cdiv\u003eIn the parameterized constructor, add a benefit argument of type Benefits, and then set the value of this parameter to the Benefit property (using the property will ensure that any null benefit object is correctly instansiated.)\u003c\/div\u003e\n\u003cdiv\u003eModify the ToString method to the Employee class, by adding a call to the Benefits ToString methods at the end of the Employee ToString method.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 5: Modify the Main Method\u003c\/div\u003e\n\u003cdiv\u003eIn the previous labs you learned how to access an object\/class methods and properties using the DOT notation. For example, to access the calculatePay method of an employee object you used a statement similiar to:\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e1\u003c\/div\u003e\n\u003cdiv\u003e2\u003c\/div\u003e\n\u003cdiv\u003e3\u003c\/div\u003e\n\u003cdiv\u003e4\u003c\/div\u003e\n\u003cdiv\u003e5\u003c\/div\u003e\n\u003cdiv\u003e6\u003c\/div\u003e\n\u003cdiv\u003e7\u003c\/div\u003e\n\u003cdiv\u003e8\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003e \u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003eemployee1.CalculateWeeklyPay(modifiedSalary)\u003c\/div\u003e\n\u003cdiv\u003eNotice that the Employee class now has a public Benefit object inside it. This means that you can access the set methods of the Benefit object using the transitive notation: containingObject.containedObject.methodName()\u003c\/div\u003e\n\u003cdiv\u003eor\u003c\/div\u003e\n\u003cdiv\u003econtainingObject.containedObject.PropertyName\u003c\/div\u003e\n\u003cdiv\u003eThat is to access the members of contained object, you start at the containing object, then “transit” to the contained object, then to the contained objects members.\u003c\/div\u003e\n\u003cdiv\u003eAs an example, to set the life insurance amount of an employee object, the statement would look something like:\u003c\/div\u003e\n\u003cdiv\u003eemployee1.Benefit.LifeInsuranceAmount = 100000;\u003c\/div\u003e\n\u003cdiv\u003eNotice, the containing object is “employee1??, the contained object is “Benefit”, and the property of Benefit we are accessing is LifeInsuranceAmount.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eThe code in the previous week?s project performed the following operations\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eDisplay the program information.\u003c\/div\u003e\n\u003cdiv\u003eCreate an Employee object using the default constructor.\u003c\/div\u003e\n\u003cdiv\u003ePrompt for and then set the first name, last name, gender, dependents, and annual salary. Remember to use the appropriate methods in the InputUtilties class to prompt for and retreive the values.\u003c\/div\u003e\n\u003cdiv\u003eDisplay the employee information.\u003c\/div\u003e\n\u003cdiv\u003eAfter the first employee information is provided, display the number of employees created.\u003c\/div\u003e\n\u003cdiv\u003ePrompt the user to provide an updated annual salary for employee1, retrieve the value and invoke the overloaded CalculateWeeklyPay, and then display only the updated weekly pay.\u003c\/div\u003e\n\u003cdiv\u003eCreate a second Employee object using the multi-argument constructor using data of your choosing that is of the correct type for each input.\u003c\/div\u003e\n\u003cdiv\u003eDisplay the Employee information for the second employee object.\u003c\/div\u003e\n\u003cdiv\u003eCreate a third Employee object using the parameterized constructor setting each of the attributes with the following values: “Sue”, “Smith”, „F?, 15, 500000.0\u003c\/div\u003e\n\u003cdiv\u003eDisplay the employee information for the third Employee object and verify that the dependents and annual salary values have been set to the maximum values by the properties. If not, make sure you change the parameterized constructor to use the properties to set the attributes.\u003c\/div\u003e\n\u003cdiv\u003eDisplay the number of employees created.\u003c\/div\u003e\n\u003cdiv\u003eTerminate the application\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eOnce your code is working and implements the previous week?s operations, modify the code to implement the following new requirements (updated code should implement all previous requirements except as noted below).\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eAfter you collect the information for the first employee object, prompt for and collect the Health Insurance Company, the LifeInsuranceAmount, and the number of vacation days.\u003c\/div\u003e\n\u003cdiv\u003eDisplay the updated employee 1 information\u003c\/div\u003e\n\u003cdiv\u003eDisplay the number of employees created.\u003c\/div\u003e\n\u003cdiv\u003eCreate a new, standalone benefits object using the multi-argument constructor using data of your choosing that is of the correct type for each input.\u003c\/div\u003e\n\u003cdiv\u003eModify the second employee object instantiation and add the newly created benefit object to the constructor call.\u003c\/div\u003e\n\u003cdiv\u003eDisplay the updated employee 2 information\u003c\/div\u003e\n\u003cdiv\u003eDisplay the number of employees created.\u003c\/div\u003e\n\u003cdiv\u003eCreate a new, standalone benefits object using the multi-argument constructor using the following invalid data “” (empty string), 10000000, -10\u003c\/div\u003e\n\u003cdiv\u003eModify the third employee object instantiation and add the newly created benefit object to the constructor call.\u003c\/div\u003e\n\u003cdiv\u003eDisplay the updated employee 3 information and verify that the default values for the benefit object have been correctly set.\u003c\/div\u003e\n\u003cdiv\u003eDisplay the number of employees created.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 6: Compile and Test\u003c\/div\u003e\n\u003cdiv\u003eWhen done, compile and execute your code. Debug errors until your code is error-free. Check your output to ensure that you have the desired output, modify your code as necessary, and rebuild. The following shows some sample output, but your output may look different.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSCREENSHOTS SOLUTION PAYMENT\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eYou May Also Like:\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 1 iLab Creating a User Interface\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 2 iLab Object Construction and Data Abstraction\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 5 iLab Composition Inheritance and Polymorphism\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 6 iLab Abstract Classes\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 7 iLab Putting It All Together\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003ch2\u003eCIS247A Week 5 iLab Composition Inheritance and Polymorphism\u003c\/h2\u003e\n\u003cdiv\u003eScenario and Summary\u003c\/div\u003e\n\u003cdiv\u003eThe objective of the lab is to take the UML Class diagram and enhance last week’s Employee class by making the following changes:\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eCreate a derived class called Salaried that is derived from Employee.\u003c\/div\u003e\n\u003cdiv\u003eCreate a derived class called Hourly that is derived from Employee.\u003c\/div\u003e\n\u003cdiv\u003eCreate generalized input methods that accept any type of Employee or derived Employee object\u003c\/div\u003e\n\u003cdiv\u003eCreate generalized output methods that accept any type of Employee or derived Employee object\u003c\/div\u003e\n\u003cdiv\u003eOverride the base class CalculatePay method\u003c\/div\u003e\n\u003cdiv\u003eOverride one of the base class CalculateWeeklyPay methods\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eDeliverables\u003c\/div\u003e\n\u003cdiv\u003eDue this week:\u003c\/div\u003e\n\u003cdiv\u003eBefore you post your lab in the dropbox, copy your entire program into a Notepad file and post that. I do not need you to zip the project or give me screen shots of the output.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eiLAB STEPS\u003c\/div\u003e\n\u003cdiv\u003eSTEP 1: Understand the UML Diagram\u003c\/div\u003e\n\u003cdiv\u003eAnalyze and understand the object UML diagram, which models the structure of the program:\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eThere are two new Employee derived classes (1) Salaried and (2) Hourly that are derived from the Employee class.\u003c\/div\u003e\n\u003cdiv\u003eThe Employee class contains a new attribute employeeType and a new constructor that accepts as an argument the assigned employee type.\u003c\/div\u003e\n\u003cdiv\u003eBoth the Salaried and the Hourly classes override only the CalculateWeeklyPay method of the Employee class (note, this is the method without any parameters.)\u003c\/div\u003e\n\u003cdiv\u003eThe Salaried class has one attribute “managementLevel” that has possible values from MIN_MANAGEMENT_LEVEL to MAX_MANAGEMENT_LEVEL and a BONUS_PERCENT.\u003c\/div\u003e\n\u003cdiv\u003eThe Salaried class has a default constructor and parameterized constructor that accepts all the general employee information plus the management level.\u003c\/div\u003e\n\u003cdiv\u003eThe Hourly has a wage attribute, which respresents the hourly wage that ranges from MIN_WAGE to MAX_WAGE, a hours attributes, which represents the number of hours worked in a week that ranges from MIN_HOURS to MAX_Hours, and a category attributes that accepts string values.\u003c\/div\u003e\n\u003cdiv\u003eThe Hourly class has a default constructor and parameterized constructor that accepts all the general employee information plus the hours and wage value.\u003c\/div\u003e\n\u003cdiv\u003eThe Presentation Tier contains two new classes (1) The EmployeeInput class and the EmployeeOutput class\u003c\/div\u003e\n\u003cdiv\u003eThe EmployeeInput class contains three static methods:\u003c\/div\u003e\n\u003cdiv\u003eCollectEmployeeInformation, which accepts any type of Employee object as a argument.\u003c\/div\u003e\n\u003cdiv\u003eCollectHourlyInformation, which accepts only Hourly objects as an argument.\u003c\/div\u003e\n\u003cdiv\u003eCollectSalariedInformation, which accepts only Salaried objects as an argument.\u003c\/div\u003e\n\u003cdiv\u003eThe EmployeeOutput class contains two methods\u003c\/div\u003e\n\u003cdiv\u003eDisplayEmployeeInformation, which accepts any Employee type as an argument.\u003c\/div\u003e\n\u003cdiv\u003eDisplayNumberObjects method.\u003c\/div\u003e\n\u003cdiv\u003eAll the access specifers for the Employee attributes are changed to protected and are depicted with the “#” symbol.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 2: Create the Project\u003c\/div\u003e\n\u003cdiv\u003eYou will want to use the Week 4 project as the starting point for the lab. Use the directions from the previous weeks labs to create the project and the folders.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eCreate a new project named “CIS247_WK5_Lab_LASTNAME”. An empty project will then be created.\u003c\/div\u003e\n\u003cdiv\u003eDelete the default Program.cs file that is created.\u003c\/div\u003e\n\u003cdiv\u003eAdd the Logic Tier, Presentation Tier, and Utilities folders to your proejct\u003c\/div\u003e\n\u003cdiv\u003eAdd the Week 4 project files to the appropraties folders.\u003c\/div\u003e\n\u003cdiv\u003eUpdate the program information in the ApplicationUtilities.DisplayApplicationInformation method to reflect your name, current lab, and program description\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eNote: as an alternative you can open up the Week 4 project and make modifications to the existing project. Remember, there is a copy of your project in the zip file you submitted for grading.\u003c\/div\u003e\n\u003cdiv\u003eBefore attempting this week’s steps ensure that the Week 4 project is error free.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 3: Modify the Employee Class\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eChange the access specifier for all the private attributes to protected.\u003c\/div\u003e\n\u003cdiv\u003eAdd the new attribute employeeType, along with a “read only” property (that is only a “get” method) to access the employee type value.\u003c\/div\u003e\n\u003cdiv\u003eAdd a new constructor that only accepts the type attribute, which is then used to set the employeeType value. Also, this constructor should initialize all the default values. You can call the default constructor using the syntax:\u003c\/div\u003e\n\u003cdiv\u003e1\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003e \u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003epublic Employee(string employeeType) : this() { }\u003c\/div\u003e\n\u003cdiv\u003eModify the parameterized constructor that accepts the employee information to accept the employee type, and then set the employeeType with this value.\u003c\/div\u003e\n\u003cdiv\u003eModify the ToString Method to include the employee type.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 4: Create the Salaried Class\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eUsing the UML Diagrams, create the Salaried class, ensuring to specify that the Salary class inherits from the Employee class.\u003c\/div\u003e\n\u003cdiv\u003eFor each of the constructors listed in the Salaried class ensure to invoke the appropriate super class constructor and pass the correct arguments to the super class constructor.\u003c\/div\u003e\n\u003cdiv\u003eOverride the CalculateWeeklyPay method to add a 10 percent bonus to the annualSalary depending on the management level. The bonus percent is a fixed 10 percent, and should be implemented as a constant. However, depending on the management level the actual bonus percentage fluctuates\u003c\/div\u003e\n\u003cdiv\u003e1\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003e \u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e(i.e., actualBonusPercentage = managementLevel * BONUS_PERCENT). \u003c\/div\u003e\n\u003cdiv\u003eOverride the ToString method to add the management level to the employee information.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 5: Create the Hourly Class\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eUsing the UML Diagrams, create the Hourly classes, ensuring to specify that the Hourly class inherits from the Employee class.\u003c\/div\u003e\n\u003cdiv\u003eFor each of the constructors listed in the Hourly class ensure to invoke the appropriate super class constructor and pass the correct arguments to the super class constructor. Notice, that the Hourly employee DOES NOT have an annual salary, which we will then have to calculate (see below).\u003c\/div\u003e\n\u003cdiv\u003eCreate a Category property (get\/set) and the valid category types are “temporary”, “part time”, “full time”.\u003c\/div\u003e\n\u003cdiv\u003eCreate a Hours property (get\/set) for the hours attributes and validate the input using the constants shown in the UML diagram, but since an Hourly employee does not have a formal annual salary we will need to calculate this each time the hour (and wage) properties are set. Add the following code after the validation code in the hours property:\u003c\/div\u003e\n\u003cdiv\u003e1\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003e \u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003ebase.AnnualSalary = CalculateWeeklyPay() * 48; (assumes working 48 weeks a year).\u003c\/div\u003e\n\u003cdiv\u003eCreate an Wage property (get\/set) for the wage attributes and validate the input using the constants shown in the UML diagram. Add the following code after the validation code in the wage property:\u003c\/div\u003e\n\u003cdiv\u003e1\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003e \u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003ebase.AnnualSalary = CalculateWeeklyPay() * 48; (assumes working 48 weeks a year)\u003c\/div\u003e\n\u003cdiv\u003eOverride the CalculateWeeklyPay method by multiplying the wages by the number of hours. 7. Update the ToString method to add the category, hours, and wages to the hourly employee information.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 6: Create the EmployeeInput Class\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eCreate a new class in the Presentation Tier folder called “EmployeeInput”\u003c\/div\u003e\n\u003cdiv\u003eCreate a static void method called CollectEmployeeInformation that has a single Employee parameter. The declaration should look something like the following:\u003c\/div\u003e\n\u003cdiv\u003e1\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003e \u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003epublic static void CollectEmployeeInformation(Employee theEmployee)\u003c\/div\u003e\n\u003cdiv\u003eWrite code statements similiar to what you created in the Week 4 project to collect the generic employee information from the user, except instead of using specific employee objects use the “theEmployee” parameters. For example:\u003c\/div\u003e\n\u003cdiv\u003eIn Week 4, you had something like:\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e1\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003e \u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003eemployee1.FirstName = InputUtilities.GetStringInputValue(“First name”);\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eIn the CollectionEmployeeInformation method this can be translated to the following;\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e1\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003e \u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003etheEmployee.FirstName = InputUtilities.GetStringInputValue(“First name”);\u003c\/div\u003e\n\u003cdiv\u003eWrite statements to collect all the generic employee information, including the Benefits information, as you did in the Week 4 project. However, since not all derived types have a AnnualSalary value, DO NOT collect the annual salary data.\u003c\/div\u003e\n\u003cdiv\u003eCreate a new static void method called CollectEmployeeInformation that accepts an Hourly employee object. Using the InputUtilities methods write statements to collect the wage and hours from the user.\u003c\/div\u003e\n\u003cdiv\u003eCreate a new static void method called CollectSalariedInformation that accepts a Salaried employee object. Using the InputUtilties methods write statements to collect the management level and the annual salary.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 7: Create the Main Program\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eCreate an array of type Employee that will hold three employee objects. Create three new objects, one Employee, one Hourly and one Salaried in positions 0, 1 and 2 of the array respectively. Make sure to use the constructors the accept the employee type and provide appropriate values for the employee type (e.g. “Generic”, “Hourly”, “Salaried”).\u003c\/div\u003e\n\u003cdiv\u003eUsing a FOR loop iterate through the array and collect all the generic employee information, using the EmployeeInput.CollectEmployeeInformation method.\u003c\/div\u003e\n\u003cdiv\u003eIf the current item in the array is an Hourly object, then use the EmployeeInput.CollectHourlyInformation method to collect the hourly information.\u003c\/div\u003e\n\u003cdiv\u003eIf the current item in the array is a Salaried object, then use the EmployeeInput.CollectSalariedInformation method to collect the salaried information. Use the following if statement to determine the specific type of object:\u003c\/div\u003e\n\u003cdiv\u003e1\u003c\/div\u003e\n\u003cdiv\u003e2\u003c\/div\u003e\n\u003cdiv\u003e3\u003c\/div\u003e\n\u003cdiv\u003e4\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003e \u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003eif (employeeList[i] is Hourly) \u003c\/div\u003e\n\u003cdiv\u003e    EmployeeInput.CollectHourlyInformation((Hourly)employeeList[i]);\u003c\/div\u003e\n\u003cdiv\u003eelse if (employeeList[i] is Salaried)          \u003c\/div\u003e\n\u003cdiv\u003e    EmployeeInput.CollectSalariedInformation((Salaried)employeeList[i]);\u003c\/div\u003e\n\u003cdiv\u003eAfter the information has been collected display the employee information using the EmployeeOutput.DisplayEmployeeInformation method.\u003c\/div\u003e\n\u003cdiv\u003eBefore terminating the program display the number of employee objects that have been created.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 8: Compile and Test\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eWhen done, compile and run your program.\u003c\/div\u003e\n\u003cdiv\u003eThen debug any errors until your code is error-free.\u003c\/div\u003e\n\u003cdiv\u003eCheck your output to ensure that you have the desired output and modify your code as necessary and rebuild.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSCREENSHOTS SOLUTION PAYMENT\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eYou May Also Like:\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 1 iLab Creating a User Interface\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 2 iLab Object Construction and Data Abstraction\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 3 iLab Overloaded Methods and Static Methods Variables\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 4 iLab Composition and Class Interfaces\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 6 iLab Abstract Classes\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 7 iLab Putting It All Together\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003ch2\u003eCIS247A Week 6 iLab Abstract Classes\u003c\/h2\u003e\n\u003cp\u003eScenario and Summary\u003cbr\u003eThe objective of the lab is to take the UML Class diagram and enhance last week’s Employee class by making the following changes:\u003c\/p\u003e\n\u003cp\u003eConvert the Employee class to an abstract class\u003cbr\u003eAdd an abstract method called CalculateNetPay to the Employee class\u003cbr\u003eIn both the Salaried and Hourly classes implement the CalculateNetPay method\u003c\/p\u003e\n\u003cp\u003eSTEP 1: Understand the UML Diagram\u003cbr\u003eAnalyse and understand the object UML diagram, which models the structure of the program.\u003c\/p\u003e\n\u003cp\u003eThe Employee class has been specified as abstract, which is denoted by the name of the class being initialized Employee\u003cbr\u003eThe Employee class as a new method CalculateNetPay which is an abstract method, denoted by the italized name of the method. Since this method is an abstract method the CalculateNetPay method WILL NOT have an implementation in the Employee class.\u003cbr\u003eThe Salaried and Hourly classes both have a new method CalculateNetPay that is inherited from the abstract Employee class and the Salaried and Hourly class both MUST implement the CalculateNetPay method.\u003c\/p\u003e\n\u003cp\u003eSTEP 2: Create the Project\u003cbr\u003eYou will want to use the Week 5 project as the starting point for the lab. Use the directions from the previous weeks labs to create the project and the folders.\u003c\/p\u003e\n\u003cp\u003eCreate a new project named “CIS247_WK6_Lab_LASTNAME”. An empty project will then be created.\u003cbr\u003eDelete the default Program.cs file that is created.\u003cbr\u003eAdd the Logic Tier, Presentation Tier, and Utilities folders to your project\u003cbr\u003eAdd the Week 5 project files to the appropriates folders.\u003cbr\u003eUpdate the program information in the ApplicationUtilities.DisplayApplicationInformation method to reflect your name, current lab, and program description.\u003c\/p\u003e\n\u003cp\u003eNote: as an alternative you can open up the Week 5 project and make modifications to the existing project. Remember, there is a copy of your project in the zip file you submitted for grading.\u003cbr\u003eBefore attempting this week’s steps ensure that the Week 5 project is error free.\u003c\/p\u003e\n\u003cp\u003eSTEP 3: Modify the Employee Class\u003c\/p\u003e\n\u003cp\u003eModify the class declaration of the Employee class to specify that the Employee class is an abstract class\u003cbr\u003eDeclare an abstract method called CalculateNetPay that returns a double value.\u003cbr\u003eModify the ToString Method to include the weekly net pay in currency format.\u003c\/p\u003e\n\u003cp\u003eSTEP 4: Modify the Salaried Class\u003c\/p\u003e\n\u003cp\u003eAdd a double constant called TAX_RATE and set the value to .73\u003cbr\u003eImplement the CalculateNetPay method by multiplying the weekly pay by the tax rate.\u003c\/p\u003e\n\u003cp\u003eSTEP 5: Modify the Hourly Class\u003c\/p\u003e\n\u003cp\u003eAdd a double constant called TAX_RATE and set the value to .82\u003cbr\u003eImplement the CalculateNetPay method by multiplying the weekly pay by the tax rate.\u003c\/p\u003e\n\u003cp\u003eSTEP 6: Create the Main Program\u003c\/p\u003e\n\u003cp\u003eChange the employeeList array to only hold two objects.\u003cbr\u003eCreate one Hourly employee object and store it in the array.\u003cbr\u003eCreate one Salaried employee object and store it in the array.\u003cbr\u003eAs you did in the Week 5 lab, prompt for and collect the information for each of the objects.\u003c\/p\u003e\n\u003cp\u003eNote: iterating through the array should not require any changes from the previous iteration of the project–but make sure that the loop stays within the bounds of the array.\u003c\/p\u003e\n\u003cp\u003eSTEP 7: Compile and Test\u003cbr\u003eWhen done, compile and run your program.\u003cbr\u003eThen debug any errors until your code is error-free.\u003cbr\u003eCheck your output to ensure that you have the desired output and modify your code as necessary and rebuild.\u003c\/p\u003e\n\u003cp\u003eSCREENSHOTS SOLUTION PAYMENT\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003eYou May Also Like:\u003cbr\u003eCIS247A Week 1 iLab Creating a User Interface\u003cbr\u003eCIS247A Week 2 iLab Object Construction and Data Abstraction\u003cbr\u003eCIS247A Week 3 iLab Overloaded Methods and Static Methods Variables\u003cbr\u003eCIS247A Week 4 iLab Composition and Class Interfaces\u003cbr\u003eCIS247A Week 5 iLab Composition Inheritance and Polymorphism\u003cbr\u003eCIS247A Week 7 iLab Putting It All Together\u003c\/p\u003e\n\u003ch2\u003eCIS247A Week 7 iLab Putting It All Together\u003c\/h2\u003e\n\u003cdiv\u003eScenario and Summary\u003c\/div\u003e\n\u003cdiv\u003eThis week, you will be implementing inheritance by creating a generic Racer base class along\u003c\/div\u003e\n\u003cdiv\u003ewith two derived classes called StreetTuner and HotRod. You will make the Racer class abstract\u003c\/div\u003e\n\u003cdiv\u003eand include the abstract method IsDead() in the Racer class.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eiLAB STEPS\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 1: Understand the UML Diagram\u003c\/div\u003e\n\u003cdiv\u003eThe UML diagram four classes defined (1) Racer, (2) Engine, (3) Hot Rod, and (4) StreetTuner classes.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eThe Racer class is the base parent abstract class of the Hot Rod and Street Tuner classes, which is represented by a directed line from the Hot Rod and Street Tuner classes to the Racer class and the end of the line touching the Racer class is a broad, unfilled arrow head. The racer class contains a engine object, which is represented by a directed line from the engine class to the Racer class, with a filled diamond touching the racer class, this line is labeled as a 1 to 1 relationship meaning that each racer object will contain one engine object and each engine is related to a single racer object.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eThe class’s attributes and methods are defined in separate class diagrams, and each class diagram is represented by a rectangular box subdivided into three vertically separated rectangular sub-sections. The top section contains the class name, the middle section contains the class attributes, and the bottom section contains the class methods.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 2: Build the Inheritance Hierarchy\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eCreate a project called “CIS247_WK7_Lab_LASTNAME”.\u003c\/div\u003e\n\u003cdiv\u003eBuild the class structure shown in the UML diagram. Remember to include properties for each\u003c\/div\u003e\n\u003cdiv\u003eclass attribute.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 3: Implement the Logic for the HotRod Class\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eProvide suitable logic for the ToString method. As always, the ToString method should reveal\u003c\/div\u003e\n\u003cdiv\u003ethe state of an object.\u003c\/div\u003e\n\u003cdiv\u003eFor the IsDead() method in HotRod, use the logic to implement the base class abstract IsDead\u003c\/div\u003e\n\u003cdiv\u003emethod.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eHint: To generate a random number, use the following code, which returns a random number\u003c\/div\u003e\n\u003cdiv\u003efrom 0 to 1:\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e1\u003c\/div\u003e\n\u003cdiv\u003e2\u003c\/div\u003e\n\u003cdiv\u003e3\u003c\/div\u003e\n\u003cdiv\u003e4\u003c\/div\u003e\n\u003cdiv\u003e5\u003c\/div\u003e\n\u003cdiv\u003e6\u003c\/div\u003e\n\u003cdiv\u003e7\u003c\/div\u003e\n\u003cdiv\u003e8\u003c\/div\u003e\n\u003cdiv\u003e9\u003c\/div\u003e\n\u003cdiv\u003e10\u003c\/div\u003e\n\u003cdiv\u003e11\u003c\/div\u003e\n\u003cdiv\u003e12\u003c\/div\u003e\n\u003cdiv\u003e13\u003c\/div\u003e\n\u003cdiv\u003e14\u003c\/div\u003e\n\u003cdiv\u003e15\u003c\/div\u003e\n\u003cdiv\u003e16\u003c\/div\u003e\n\u003cdiv\u003e17\u003c\/div\u003e\n\u003cdiv\u003e18\u003c\/div\u003e\n\u003cdiv\u003e19\u003c\/div\u003e\n\u003cdiv\u003e20\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003e \u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003eRandom rnd = new Random();\u003c\/div\u003e\n\u003cdiv\u003ernd.NextDouble();\u003c\/div\u003e\n\u003cdiv\u003ePseudocode for the IsDead method of HotRod\u003c\/div\u003e\n\u003cdiv\u003eRandom rnd = new Random();\u003c\/div\u003e\n\u003cdiv\u003eboolean dead\u003c\/div\u003e\n\u003cdiv\u003eif (speed \u0026gt; 50 \u0026amp;\u0026amp; rnd.NextDouble() \u0026gt; 0.6)\u003c\/div\u003e\n\u003cdiv\u003e    if (engineHorsePower \u0026lt; 300 \u0026amp;\u0026amp; blower=true)\u003c\/div\u003e\n\u003cdiv\u003e        dead = false\u003c\/div\u003e\n\u003cdiv\u003e    else\u003c\/div\u003e\n\u003cdiv\u003e        dead = true\u003c\/div\u003e\n\u003cdiv\u003e    end if\u003c\/div\u003e\n\u003cdiv\u003eelse if (speed \u0026gt; 100 \u0026amp;\u0026amp; rnd.NextDouble() \u0026gt; 0.4)\u003c\/div\u003e\n\u003cdiv\u003e    if (engineHorsePower \u0026gt;= 300 \u0026amp;\u0026amp; blower = true)\u003c\/div\u003e\n\u003cdiv\u003e        dead = true\u003c\/div\u003e\n\u003cdiv\u003e    else\u003c\/div\u003e\n\u003cdiv\u003e        dead = false\u003c\/div\u003e\n\u003cdiv\u003e    end if\u003c\/div\u003e\n\u003cdiv\u003eelse\u003c\/div\u003e\n\u003cdiv\u003e    dead = false\u003c\/div\u003e\n\u003cdiv\u003eend if\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 4: Implement the logic for the StreetTurner class\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eProvide suitable logic for the ToString method. As always, the ToString method should reveal\u003c\/div\u003e\n\u003cdiv\u003ethe state of an object.\u003c\/div\u003e\n\u003cdiv\u003eFor the IsDead method in StreetTurner, use the logic below to implement the inherited abstract\u003c\/div\u003e\n\u003cdiv\u003ebase class method called IsDead.\u003c\/div\u003e\n\u003cdiv\u003e1\u003c\/div\u003e\n\u003cdiv\u003e2\u003c\/div\u003e\n\u003cdiv\u003e3\u003c\/div\u003e\n\u003cdiv\u003e4\u003c\/div\u003e\n\u003cdiv\u003e5\u003c\/div\u003e\n\u003cdiv\u003e6\u003c\/div\u003e\n\u003cdiv\u003e7\u003c\/div\u003e\n\u003cdiv\u003e8\u003c\/div\u003e\n\u003cdiv\u003e9\u003c\/div\u003e\n\u003cdiv\u003e10\u003c\/div\u003e\n\u003cdiv\u003e11\u003c\/div\u003e\n\u003cdiv\u003e12\u003c\/div\u003e\n\u003cdiv\u003e13\u003c\/div\u003e\n\u003cdiv\u003e14\u003c\/div\u003e\n\u003cdiv\u003e15\u003c\/div\u003e\n\u003cdiv\u003e16\u003c\/div\u003e\n\u003cdiv\u003e17\u003c\/div\u003e\n\u003cdiv\u003e18\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cspan\u003e \u003c\/span\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003ePseudocode for the IsDead method of StreetTuner\u003c\/div\u003e\n\u003cdiv\u003eRandom rnd = new Random();\u003c\/div\u003e\n\u003cdiv\u003eboolean dead\u003c\/div\u003e\n\u003cdiv\u003eif (speed \u0026gt; 50 \u0026amp;\u0026amp; rnd.NextDouble() \u0026gt; 0.6)\u003c\/div\u003e\n\u003cdiv\u003e    if (engineHorsePower \u0026lt; 300 \u0026amp;\u0026amp; nitrous=true)\u003c\/div\u003e\n\u003cdiv\u003e         dead = false\u003c\/div\u003e\n\u003cdiv\u003e    else\u003c\/div\u003e\n\u003cdiv\u003e         dead = true\u003c\/div\u003e\n\u003cdiv\u003e    end if\u003c\/div\u003e\n\u003cdiv\u003eelse if (speed \u0026gt; 100 \u0026amp;\u0026amp; rnd.NextDouble() \u0026gt; 0.4)\u003c\/div\u003e\n\u003cdiv\u003e    if (engineHorsePower \u0026gt;= 300 \u0026amp;\u0026amp; nitrous = true)\u003c\/div\u003e\n\u003cdiv\u003e         dead = true\u003c\/div\u003e\n\u003cdiv\u003e    else\u003c\/div\u003e\n\u003cdiv\u003e         dead = false\u003c\/div\u003e\n\u003cdiv\u003e    end if\u003c\/div\u003e\n\u003cdiv\u003eelse\u003c\/div\u003e\n\u003cdiv\u003e    dead = false\u003c\/div\u003e\n\u003cdiv\u003eend if\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 5: Construct the Main Program\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eCreate an array of Racer objects that will hold two Racer objects.\u003c\/div\u003e\n\u003cdiv\u003eWrite a method called CollectRacerInformation that accepts as an argument a Racer object,\u003c\/div\u003e\n\u003cdiv\u003eand then prompts the user to provide the following information for each racer:\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eRacer name;\u003c\/div\u003e\n\u003cdiv\u003eRacer Speed;\u003c\/div\u003e\n\u003cdiv\u003eNumber of cylinders in the racer’s engine;\u003c\/div\u003e\n\u003cdiv\u003eHorsepower of the racer’s engine; and\u003c\/div\u003e\n\u003cdiv\u003eNitrus or blower option, depending on the type of Racer object.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003e[Hint: In order to be able to collect all information for the derived classes as well, consider\u003c\/div\u003e\n\u003cdiv\u003ecreating a base class method called ReadRacerData in the Racer class, which you will then\u003c\/div\u003e\n\u003cdiv\u003eoverride in the derived classes to capture the required info per class. Call the ReadRacerData\u003c\/div\u003e\n\u003cdiv\u003emethod within the CollectRacerInformation method.]\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eWrite a method called “DisplayRacerInformation” that accepts as an argument a Racer object,\u003c\/div\u003e\n\u003cdiv\u003eand then displays all of the information for the specific racer type.\u003c\/div\u003e\n\u003cdiv\u003eCreate a racer object of each type, and invoke the CollectRacerInformation passing in the\u003c\/div\u003e\n\u003cdiv\u003eRacer object. Then, store each object in the array.\u003c\/div\u003e\n\u003cdiv\u003eIterate through the Racer array list and, for each Racer, display all of the Racer’s attribute\u003c\/div\u003e\n\u003cdiv\u003einformation (call the DisplayRacerInformation method for each object). Don’t forget to indicate\u003c\/div\u003e\n\u003cdiv\u003ewhether or not the Racer is dead!\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 6: Compile and Test\u003c\/div\u003e\n\u003cdiv\u003eWhen done, compile and run your program.\u003c\/div\u003e\n\u003cdiv\u003eThen, debug any errors until your code is error-free.\u003c\/div\u003e\n\u003cdiv\u003eCheck your output to ensure that you have the desired output and modify your code as necessary\u003c\/div\u003e\n\u003cdiv\u003eand rebuild.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eSTEP 7: Submit Deliverables\u003c\/div\u003e\n\u003cdiv\u003eBefore you post your lab in the dropbox, copy your entire program into a Notepad file and post\u003c\/div\u003e\n\u003cdiv\u003ethat. I do not need you to zip the project or give me screen shots of the output.\u003c\/div\u003e\n\u003cdiv\u003eSubmit your lab to the Dropbox located on the silver tab at the top of this page. For instructions\u003c\/div\u003e\n\u003cdiv\u003eon how to use the Dropbox, read these Step-by-Step Instructions or watch this Dropbox Tutorial.\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv\u003eYou May Also Like:\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 1 iLab Creating a User Interface\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 2 iLab Object Construction and Data Abstraction\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 3 iLab Overloaded Methods and Static Methods Variables\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 4 iLab Composition and Class Interfaces\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 5 iLab Composition Inheritance and Polymorphism\u003c\/div\u003e\n\u003cdiv\u003eCIS247A Week 6 iLab Abstract Classes\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003cbr\u003e\u003c\/div\u003e","brand":"Take My Online Class","offers":[{"title":"Default Title","offer_id":53123191832851,"sku":null,"price":112.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0966\/3794\/4083\/files\/CIS274Capture6.png?v=1769126842","url":"https:\/\/takemyonlineclass.store\/products\/new-full-course-guide-cis247a-week-ilab-1-7-projects_id_247ff573qqj","provider":"Take My Online Class","version":"1.0","type":"link"}