• No results found

CSE 240 Fall 2018 Homework 10: C++ Inheritance and Polymorphism (50 points)

N/A
N/A
Protected

Academic year: 2021

Share "CSE 240 Fall 2018 Homework 10: C++ Inheritance and Polymorphism (50 points)"

Copied!
8
0
0

Loading.... (view fulltext now)

Full text

(1)

CSE 240 Fall 2018 Homework 10:

C++ Inheritance and Polymorphism (50 points)

Due Saturday, October 27, 2018 at 11:59PM, plus a 24-Hour grace period

Introduction

The aim of this assignment is to make sure that you understand and are familiar with the concepts covered in the lectures, including C++ inheritance, polymorphism, virtual function, containment, file operations, and exception handling. By the end of the assignment, you should have understood

● Class, data members, function members, virtual function, constructor, and destructor ● Accessing privileges among the classes

● Memory management and deletion of linked list ● Scope Resolution Operators

● Inheritance and containment

● Dynamic binding and polymorphism ● File operations

● Exception handling

Reading​​: Textbook Chapter 3, Sections 3.2 through 3.5. Read Section 3.2.1 on friend access. Read the program example in Section 3.4.2.

Preparation​​: Complete the multiple choice questions in the textbook exercise section. The answer keys can be found in the course Web site. These exercises can help you prepare for your weekly quiz and the exam. You are encouraged to read the other exercise questions and make sure that you understand these questions in the textbook exercise section, which can help you better understand what materials are expected to understand after the lectures and homework on each chapter.

You are expected to do the majority of the assignment outside the class meetings. Should you need assistance, or have questions about the assignment, please contact the instructor or the TA during their office hours.

You are encouraged to ask and answer questions on the course discussion board. However, ​do not share your answers and code​​ in the course discussion board.

(2)

Programming Exercise (50 points)

You are given a partially completed project containing: 4 header files: Container.h student.h undergrad.h grad.h 5 C++ files: Container.cpp student.cpp grad.cpp undergrad.cpp hw10.cpp

The diagram shows the inheritance and relationships between the classes and the linked list formed.

Your job is to follow the instructions given in comments in these files to complete the missing parts of the project so that the program executes properly. Tasks are included below.

(3)

Q1: Create Undergrad and Grad subclasses of Student class (Inheritance) (10

points)

In undergrad.h:

// Q1a: Create Undergrad class (5 points)

// Part 1: Create a child class of the Student class named 'Undergrad'

// Part2: Declare constructor which accepts the same 3 parameters as the parent class Student's constructor. Pass the 3 parameters to the super constructor of the Student class. // Part 3: Re-declare the method displayInfo (virtual method found inside of parent class Student)

In grad.h:

// Q1b: Create Grad class (5 points)

// Part 1: Create a child class of the Student class named 'Grad'

// Part2: Declare constructor which accepts the same 3 parameters as the parent class Student's constructor. Pass the 3 parameters to the super constructor of the Student class. // Part 3: Re-declare the method displayInfo (virtual method found inside of parent class Student)

Q2: Define displayInfo() for child classes (Polymorphism) (10 points)

In undergrad.cpp

// Q2a: Define displayInfo() for Undergrad class (5 points)

// Define the function displayInfo() that you declared within the Undergrad class in the header file. See expected output in question file

In grad.cpp

// Q2b: Define displayInfo() for Grad class (5 points)

// Define the function displayInfo() that you declared within the Grad class in the header file // See expected output in question file.

Q3: Add Friend function changeRollNo() (5 points)

In student.h:

// Q3a: Declare Friend Function changeRollNo() (1 point)

// Declare a friend function named changeRollNo() which has 2 parameters and no return value.

// The first parameter is a pointer to Student class, and the second is an integer which is the new roll number.

// You need to define this function in hw10.cpp and call this function in case 'c' of executeAction() in hw10.cpp file

(4)

In hw10.cpp:

// Q3b: Define Friend Function changeRollNo() (3 points)

// Define the function changeRollNo()that is declared in student.h file.

// This function sets the new roll number of the student. The student and new roll number is to be passed as function arguments.

// Use 'd' display option after using 'c' option to verify whether the new roll number is set. A “friend function” allows you to access the private variables of a class (ex: student->rollNo)

Q4 - Q7

​​

are used to implement a menu-driven program. Its implementation is in hw10.cpp. The menu gives the following options to user:

a) Add a new student to the list. You need not check if the student exists in the list because that is already implemented in executeAction(). You may add the new student to head or tail of the list. (sample solution adds it to the tail)

b) Display the list of students along with their details (roll number, type (grad/undergrad)). c) Change the roll number of a student. This options uses the friend function

changeRollNo() to access private data member ‘rollNo’ of the student and change it to the one entered by the user.

You need to implement save() that writes the list of students to a file ‘list.txt’ while exiting the program and load() that reads the file to form the list at the beginning of the program. During first execution of the program, there will be no ‘list.txt’, so load() would not form a list. Once list.txt is saved, load() can read it. You may remove the list.txt from your project directory if you do not want to load that list (maybe while testing your code).

The following is one way to store the list in list.txt file. The format here is: student name

student roll number

student type (0 for undergrad, 1 for grad)

You may store it in another format if you wish. Notice that the ‘3’ at the beginning is the number of students stored in the file.

(5)

Expected output: addStudent:

(6)

changeRollNo:

(Tony’s roll number was 1 previously. Using ‘c’ option it was changed to 10. Use ‘d’ option to verify that the roll number is really changed)

Grading of Programming Assignment

The TA will grade your program following these steps:

(1) Compile the code. If it does not compile, 20% of the points given will be deducted. For example, if there are 20 points possible, you will earn 16 points if the program fails to compile.

(2) The TA will read your program and give points based on the points allocated to each component, the readability of your code (organization of the code and comments), logic, inclusion of the required functions, and correctness of the implementations of each function.

(7)

What to Submit

​?

You are required to submit your solutions in a compressed format (.zip). Zip all files into a single zip file. Make sure your compressed file is labeled correctly - lastname_firstname10.zip.

The compressed file MUST contain the following: 4 header files:

Container.h (unchanged) student.h (completed code) undergrad.h (completed code) grad.h (completed code) 5 C++ files:

Container.cpp (unchanged) student.cpp (unchanged) grad.cpp (completed code) undergrad.cpp (completed code) hw10.cpp (completed code) No other files should be in the compressed folder.

​After submitting, download your own submission to verify if the files are correct.

If multiple submissions are made, the most recent submission will be graded, even if the assignment is submitted late.

Where to Submit?

All submissions must be electronically submitted to the respected homework link in the course web page where you downloaded the assignment.

Late submission deduction policy

● No penalty for late submissions that are received within 24 hours after the deadline; ● 10% grade deduction for every day it is late after the grace period;

● No late submission after Tuesday at 11:59PM.

Academic Integrity and Honor Code.

You are encouraged to cooperate in study group on learning the course materials. However, you may not cooperate on preparing the individual assignments. Anything that you turn in must be your own work: You must write up your own solution with your own understanding. If you use an idea that is found in a book or from other sources, or that was developed by someone else or jointly with some group, make sure you acknowledge the source and/or the names of the persons in the write-up for each problem. When you help your peers, you should never show your work to them. All assignment questions must be asked in the course discussion

(8)

board. Asking assignment questions or making your assignment available in the public websites before the assignment due will be considered cheating.

The instructor and the TA will CAREFULLY check any possible proliferation or plagiarism. We will use the document/program comparison tools like MOSS (Measure Of Software Similarity: http://moss.stanford.edu/) to check any assignment that you submitted for grading. The Ira A. Fulton Schools of Engineering expect all students to adhere to ASU's policy on Academic Dishonesty. These policies can be found in the Code of Student Conduct:

http://www.asu.edu/studentaffairs/studentlife/judicial/academic_integrity.htm

ALL cases of cheating or plagiarism will be handed to the Dean's office. Penalties include a failing grade in the class, a note on your official transcript that shows you were punished for cheating, suspension, expulsion and revocation of already awarded degrees.​

References

Related documents

It is also possible to define new File Group by using the Add button in the Input Files or Output Files tab in the controller for the activity (see Figure 3.29).. Note that the

(2) objects defined at namespace scope, (3) objects declared static inside classes (4) object declared static inside function scope (5) object declared static at file

• Verbal Reported Treatment (VRT): Exactly the same as WRT, but now the student did not have to fill out the report sheet (only report gender) and had to inform the experimenter

In this file in the class template declaration errors, with name in function declaration so that depend on the header files should be inconvenient for.. All we can forego this way

Inside the program main function, two file pointers need to be declared: Input database file pointer line 19 and Output text file pointer line 20.. Declare

Due to the exceptional situation caused by the health crisis of the COVID-19 and taking into account the security measures related to the development of the

An entry for each function defini- tion contains the function name, the name of <the file it was defined in, whether or not the function was declared static, whether it was a

Printf is used to display certain output and scanf is used to hover the inputs printf and scanf functions are declared in stdio h header file in C library All syntax in C