Objective

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

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.

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.