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!
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(self, NewTitle):... | // Change the self.__Title instance variable value |
setType(self, NewType):... | // Change the self.__DVD_TYPE instance variable value |
getTitle(self):... | // Return self.__Title instance variable value |
getCost(self):... | // Return self.__Cost instance variable value |
loadInformation(self)... | // Interactively prompt-for, input, and set all instance variables |
listValidDVDType(self):... | // Support method that displays list of valid DVD types |
The global functions are as follows:
def Display_DVD_Information(DVD1, DVD2, DVD3):...
Pseudocode:
For each DVD object parameter, retrieve and display its instance variable values in a nicely formatted list (or table)
def DisplayTotalAndAverageCosts(DVD1, DVD2, DVD3)...
Pseudocode:
Retrieve and sum the individual costs of the DVD objects and display the total cost and then display the average cost
def ChangeDVD(A_DVD):...
Pseudocode:
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 a variable value.
The main() function call 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.