Implementation of Overloading and Overriding Questions
Problem
Develop a script to demonstrate an understanding of the overload (overwrite) methods of using Python operators. This lesson will focus on the “+” operator and the “__add__” method.
The program must have the following:
Demonstration of an understanding of how to use the + operator for basic addition of two integer numbers
Demonstration of an understanding of how to use the + operator for a concatenation of lists
Demonstration of an understanding of how to use the + operator for a concatenation of strings
Demonstration of an understanding of how to overload the __add__ method
Solving the Problem:
Step 1
Create a basic set of Python commands to demonstrate the addition of two integer numbers, and display the results in the operator interface window in PyCharm.
Step 2
Next, review the first example of an overloaded operator. In Python, the __add__ method that is being used to sum the two integer numbers above can also accept a list of numbers and concatenate them.
Step 3
Now, review the second example of an overloaded operator. In Python, the __add__ method that is being used to sum the two integer numbers above can also accept two strings and concatenate them.
Step 4
Lastly, overload the __add__ method, the method that has been used to sum two numbers, combine lists, and concatenate strings. Overload the method to format the output using the following code: return ‘%s plus %s’ % (self, x).
Step 5
Run the scripts, and verify that the output matches the screenshot below.
Documentation Guidelines:
Use good programming style (e.g., indentation for readability) and document each of your program parts with the following items (the items shown between the '<' and '>' angle brackets are only placeholders. You should replace the placeholders and the comments between them with your specific information). Your cover sheet should have some of the same information, but what follows should be at the top of each program's sheet of source code. Some lines of code should have an explanation of what is to be accomplished, this will allow someone supporting your code years later to comprehend your purpose. Be brief and to the point. Start your design by writing comment lines of pseudocode. Once that is complete, begin adding executable lines. Finally run and test your program.
Deliverable(s):
Your deliverable should be a Word document with screenshots showing the source code and running results, and discuss the issues that you had for this project related to AWS and/or Python IDE and how you solved them for all of the programs listed above as well as the inputs and outputs from running them. Submit a cover sheet with the hardcopy of your work.
part 2
The objective of this project is to give you some experience working with DVD objects created from a user-defined DVD class and passing DVD objects to functions that manipulate them. The objects you will model in this project will be software DVDs. You will create several DVD objects and then load information into their instance variables. All of these DVD objects will then be passed to a global function that displays the instance variable values of each DVD object it receives. All of these DVD objects will then be passed to another global function that computes and displays the total cost as well as the average cost for the DVDs it receives. Finally, a function that receives a single DVD object will be called twice – once for each of the two DVD objects. This function will allow the user to interactively change user-selected data items in the single DVD object passed to this function.
This project represents a hybrid solution which incorporates both objects of a Python class as well as global, free-standing, C-like functions that process object(s) passed to them. Hybrid solutions such as this are actually the most common solutions found in practice since the world typically cannot be ENTIRELY modeled as objects!
Specifications (minimum)
The DVD class contains the following instance variables:
self.__Title;
// The Name of the DVD
self.__DVDType;
// The Type of DVD
self.__Cost;
// The Cost of the DVD
The ONLY recognized (i.e., legal) software DVD types are, “Game”, “Word”, “Compiler”, “Spreadsheet”, “Dbase”, and “Presentation” (AND, no others!).
The DVD class contains (at a minimum) the following methods:
__init__(self, InTitle, InDVDType, InCost): . . .
// Constructor – initialize instance variables
// with (validated) parameter values
setTitle(selfNewTitle): . . .
// Change the self.__Title instance variable value
setType(self NewType): . . .
// Validate and change the self.__DVD_Type instance variable value
getTitle(self): . . .
// Return self.__Title instance variable value
setType(self NewType): . . .
// Validate and change the self.__DVD_Type instance variable value
getCost(self): . . .
// Return the value in the self.__Cost instance variable value
loadInformation(self): . . .
// Interactively prompt-for, input, and set all instance variables
listValidDVDtypes(self): . . .
// Support method that displays list of valid DVD types
The global functions are as follows:
Prototype:
def Display_DVD_Information(DVD1, DVD2, DVD3): . . .
Pseudo code:
For each DVD object parameter, retrieve and display its instance variable values in a nicely-formatted list (or table).
Prototype:
def DisplayTotalAndAverageCosts(DVD1, DVD2, DVD3): . . .
Pseudo code:
Retrieve and sum the individual costs of the DVD objects and display the total cost and then display the average cost
Prototype:
def ChangeDVD(A_DVD): . . .
Pseudo code:
Interactively change the instance variable value of the passed-in DVD object. For the current value of each instance variable be sure to FIRST display this value before asking your user whether he/she wants to change this value. If so, the prompt-for, input, validate(where necessary) and then save the new instance variable value.
The main() function will:
Declare several (at least three) individual DVD objects, e.g.,
DVD1 = DVD(<someTitle>, <someDVDType>, <someCost>) // etc.
Call the global function, Display_DVD_Information(…), to display the contents of each of the DVD objects passed to this function. This will demonstrate that your DVD constructor works as you implemented it. Load each DVD object with information of your choice by calling member function, LoadInformation(), on each DVD object, e.g.,
DVD1.LoadInformation(); // etc.
Call the global function, Display_DVD_Information(…), again to display the contents of each of the DVD objects passed to this function after you have loaded each DVD object with user-selected values.
Next, call the global function, DisplayTotalAndAverageCosts(…) to compute and display, 1) the total cost and then, 2) the average cost of the DVD objects passed to this function.
Call global function, ChangeDVD(…), for each of the first two DVD objects.
Call global function, Display_DVD_Information(…), again to see the changes just made to the first two DVDs.
Call global function, DisplayTotalAndAverageCosts(…), again to see how the total and average costs have changed.