Lab-1the goal of this lab is to better familiarize you with

Assignment Help C/C++ Programming
Reference no: EM13347303

Lab-1

The goal of this lab is to better familiarize you with polymorphism and the factory design pattern, two key components in Assignment. To that end, you will construct a simple "Device Maker." The device will be made from a list of widgets in a text file that will be user-specified. You will need to create a widget factory to convert the name of the widget into the actual widget.

UML Diagrams

Let's start with the Widget and its derived classes:

188_Untitled.png

Note that Widget is declared as an interface. This means that all of Widget's class methods are pure virtual. Pure virtual methods do not have method bodies. Instead, we place the keyword "virtual" before the return type and set them to equal zero (yes, this makes little sense, but that's how C++ does it). For example, the getPrice method would look like:

virtual double getPrice() const = 0;

Defining methods as pure virtual tells C++ that the class' children will be responsible for actually implementing any real functionality. Note that Widget's children (Gear, Cog, Actuator, and Spring) add no additional functionality to Widget. Instead, they simply define the functionality as required by Widget. To that end, each getName() should just return the Widget's name (e.g. "Gear"). Prices for each widget are as follows:

  • Gear: $1.25
  • Cog: $1.35
  • Actuator: $3.50
  • Spring: $0.99

Device Class

Let's next look at the Device class:

1531_Untitled2.png

I'm using _component_counter to track the number of valid Widgets inside _components. Also, Device revisits some advanced concepts that you might've forgotten about. Note that _components is a Widget **. This means that _components is an array of pointers to Widgets (hence the double *). You will need to initialize this variable inside your constructor using the following snippet:

_components = new Widget*[100];

This tells C++ to dynamically create _components as an array of 100 Widget pointers. Because we've dynamically created an array of pointers, we finally get to create a useful destructor! In your destructor, you will need to use the delete keyword to delete your array of pointers:

delete[] _components;

Note that we use array syntax "[]" to tell C++ that we want to delete an array of dynamic pointers rather than just a single dynamic pointer.

Widget Factory

Finally, let's examine our Widget Factory:

611_Untitled2.png

Our factory has a single static method that returns a pointer to a dynamically created widget. To do so, you will need to examine the supplied text (it should contain the widget's name) and convert to the appropriate widget. In the case that an unrecognized name was supplied, simply return a NULL pointer.

 

Reference no: EM13347303

Questions Cloud

Question 1a busy landscaping supplies company sells wood : question 1a busy landscaping supplies company sells wood chips for garden mulch. the mulch is sold by the cubic metre
1- explain the statement auditors and clinical coders are : 1- explain the statement auditors and clinical coders are required to be aware of ethical considerations2-why is
Why use threads and explain a complication that concurrent : why use threads? and explain a complication that concurrent processing adds to an operating system.provide support for
A uniform sphere of mass 2kg is kept in a fixed position by : a uniform sphere of mass 2kg is kept in a fixed position by two strings ab and cd. ab is horizontal and cd is inclined
Lab-1the goal of this lab is to better familiarize you with : lab-1the goal of this lab is to better familiarize you with polymorphism and the factory design pattern two key
Ttwo containers are connected by a stopcock gas a is at : ttwo containers are connected by a stopcock. gas a is at pressure 202 kpa while gas b is at pressure 140 kpawhat will
Problem its been a busy weekend for larry five people in : problem its been a busy weekend for larry. five people in his neighborhood left on vacation saturday morning and each
Prepare a decision table to assist you decide what to do : prepare a decision table to assist you decide what to do for the day. if it is a weekday and it is not a holiday then
A motorcycle is used to stunt show to go over a valley if : a. motorcycle is used to stunt show to go over a valley .if the initial speed at a is u ms then evaluate a ?the minimum

Reviews

Write a Review

C/C++ Programming Questions & Answers

  Compute the average of each row

Write a program that prompts the user to enter 15 double numbers from the keyboard and save them into a 3 by 5 array in the main ( ). Then call a user-define function to compute the average of each row and print the original matrix and average of ..

  Program to calculate word ladders where single-character

Write down a program in C++ to calculate word ladders where single-character substitutions have the cost of 1, and single-character additions or deletions.

  Create a program that draws a two-dimensional house

Create a program that draws a two-dimensional house seen from the front, the way a child would see it: with a door, two windows, and a roof with a chimney

  Write a program using vectors and iterators

Create a program that uses at least two functions that will be called from your main. This program is a number game program that asks for parts of your phone and after manipulating it mathematically, eventually outputs your entire phone number. The d..

  Modify the catch block in method2

Modify the catch block in Method2 that catches the TestException so that it displays the original cause of the exception. Compile and run the application to make sure it works.

  Write c program that will input two values from the user

write c program that will input two values from the user with a prompt ? that are a value and a base with which you

  Write c++ program to create a bar chart showing the average

Write a c++ program to create a bar chart showing the average monthly mean temperature for College Station from 2004 to 2013.

  Summarizing your predicted and actual output

Write a statement summarizing your predicted and actual output, and identify and explain any differences. For your conclusions, write at least one nontrivial paragraph that explains, in detail, either a significant problem you had and how you solv..

  Design class for textbook-data field for grade level of book

Design a class named TextBook that is child class of Book. Include new data field for grade level of book. Create a displayTextBookInfo () method so that you can accommodate new grade-level field.

  A run is a sequence of adjacent repeated val

A   run   is   a   sequence   of   adjacent   repeated   values.   Using   an   array,   write   a   program   that   generates   a   sequence   of

  Create a funcion called max

Create a funcion called max().

  Write c++ program that reads in the average monthly rainfall

Write a C++ program that reads in the average monthly rainfall for a city for each month of the year and then reads in the actual monthly rainfall for each of the previous 12 months

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd