1. UOP GSP 125 Final Exam Guide NEW
Check this A+ tutorial guideline at
http://www.uopassignments.com/gsp-125-
devry/gsp-125-final-exam-guide-recent
For more classes visit
http://www.uopassignments.com/
Question 1. 1. In addition to grouping functions together,
a class also groups (Points : 3)
libraries.
math operations.
print statements.
variables.
Question 2. 2. Hiding data in a class is also called (Points
: 3)
encapsulation.
accessibility inversion.
confusion culling.
redirection.
Question 3. 3. The public members of a class (Points : 3)
can be changed after compiling, even functions.
must be accessed from an object of that class.
need a special interface to accessed from an object.
2. can only be accessed within member functions of
that class.
Question 4. 4. Constructors are called (Points : 3)
whenever an object is created.
whenever a new line of code is typed.
only after math operations.
only after a work contract is defined.
Question 5. 5. Unions are (Points : 3)
defined just like structs, though their memory
behaves differently.
a place to store multiple data types simultaneously.
a concept from the C language that is uncommon in
C++.
All of the above
Question 6. 6. When objects contain other objects, it is
called (Points : 3)
composition.
data blending.
subobjecting.
enclosures.
Question 7. 7. Using the sizeof operator, the compiler
will provide the size in bytes of a (Points : 3)
class or data type.
statically allocated array.
variable instance or object.
All of the above
3. Question 8. 8. When de-allocating arrays dynamically
allocated with new, _____ should be used to ensure
proper de-allocation. (Points : 3)
destructor.
delete.
delete [].
free().
Question 9. 9. A pointer stores a(n) (Points : 3)
address.
variable.
value.
None of the above
Question 10. 10. The most common operator used when
accessing members of an object through a pointer is this.
(Points : 3)
&
->
.
::
Question 11. 11. The following can be used to determine
the number of elements in a statically allocated array in
C or C++. (Points : 3)
sizeof(arrayname)/sizeof(arrayname[0])
elementsof<arrayname>
arrayname.length()
None of the above
4. Question 12. 12. When returning by reference, (Points :
3)
the method can be used as an l-value.
other functions cannot use the result as a parameter.
C-style code must be capitalized, as per standard
convention.
There is no such thing as returning by reference.
Question 13. 13. Overloaded methods in a class must use
(Points : 3)
the exact same argument types, but different return
types.
the exact same name.
default arguments.
None of the above
Question 14. 14. The copy constructor takes (Points : 3)
no arguments.
a single argument by reference.
a single argument by value.
any number of arguments.
Question 15. 15. A shallow copy is dangerous because
(Points : 3)
it has a knife and is very clumsy.
it may cause bad de-allocation in a properly written
destructor in a class that allocates memory.
it prevents recursive methods from being called by
using significant amounts of stack space.
5. None of the above
Question 16. 16. When using inheritance, the class that
is doing the inheriting is called a (Points : 3)
subclass.
child class.
derived class.
All of the above
Question 17. 17. A UML class diagram is commonly used
to (Points : 3)
exactly describe code before writing it.
help programmers explain design to other
programmers.
define code standards (for syntax) for programming
teams.
All of the above
Question 18. 18. Downcasting is considered safe because
(Points : 3)
the compiler is very smart about types.
it is safe to assume a parent can do everything a child
can do.
downcasting can only be done on upcasted objects.
downcasting is not considered safe.
Question 19. 19. If unsure whether to use inheritance or
composition, use (Points : 3)
inheritance, because it saves the most typing.
inheritance, because C++ supports multiple
6. inheritance.
composition, because it gives programmers the most
options.
composition, because it is more efficient than
inheritance.
Question 20. 20. Creating classes in separate .h and .cpp
files is good because (Points : 3)
moving code to separate files is good design
(separation of concerns).
separating declaration from definition allows
decoupling of dependencies.
many smaller files are easier to maintain by teams of
programmers.
All of the above
Question 21. 21. When using the virtual keyword, C++
can detect the type of an object by using (Points : 3)
Compile Time Type Information.
dynamic_cast.
a "constructor inference" pattern.
C++ does not support any kind of reflection.
Question 22. 22. Passing pointers by reference (e.g., "(int
* & arg)") is possible but limited, because (Points : 3)
NULL cannot be passed as a valid pointer by
reference.
a raw address (&variable) cannot be passed as a
valid pointer by reference.
r-values cannot be passed as pointers by reference.
7. All of the above
Question 23. 23. Stack memory is where (Points : 3)
global variables and raw machine code are stored.
local variables and execution of instructions are kept
track of.
dynamic memory is allocated to.
None of the above
Question 24. 24. A compiler will put sentinel values into
memory to (Points : 3)
help detect array out-of-bound errors.
keep track of how many times a function recurses.
stop bad functions from being executed.
prevent memory leaks.
Question 25. 25. Virtual functions have a cost when
compared to normal (statically bound) functions;
specifically, they are (Points : 3)
8. UOP GSP 125 Midterm Exam NEW
Check this A+ tutorial guideline at
http://www.uopassignments.com/gsp-125-
devry/gsp-125-midterm-exam-recent
For more classes visit
http://www.uopassignments.com/
1. Accidentally inheriting from the same class
twice causes terrible ambiguity, and is known as
(Points : 2)
inheritance overload.
the dreaded diamond of death.
Von Neumann bottleneck.
There is nothing wrong with inheriting the
same class more than once.
Question 2. 2. Creating classes in separate .h and
.cpp files is good because (Points : 2)
moving code to separate files is good design
(separation of concerns).
separating declaration from definition allows
9. de-coupling of dependencies.
many smaller files are easier to maintain by
teams of programmers.
All of the above
Question 3. 3. Virtual methods are resolved at
runtime by using a (Points : 2)
dynamic list.
virtual table.
vector.
haystack.
Question 4. 4. Allowing many different types to be
treated in the same way is called (Points : 2)
polymorphism.
multitypecasting.
deep-copy.
virtual.
Question 5. 5. Heap memory is where (Points : 2)
global variables and raw machine code are
stored.
local variables and execution of instructions is
kept track of.
dynamic memory is allocated to.
None of the above
10. Question 6. 6. Memory leaks in a computer
program are (Points : 2)
not a big deal because operating systems clean
up all program memory.
easy to find and debug in C and C++.
difficult and important to manage in C and C++.
a problem in every programming language.
Question 7. 7. Virtual functions have a cost when
compared to normal (statically bound) functions;
specifically, they are (Points : 2)
slower and less optimizable.
less dynamic.
unusable with polymorphism.
more difficult to read than extern or static
functions.
Question 8. 8. The explicit keyword (Points : 2)
labels data as being volatile.
prevents constructors from automatically
being called by implicit typecasting.
marks a method as an override of a
polymorphic base.
identifies a variable that can be referenced but
is defined in another compilation unit.
Question 9. 9. Preprocessor macros (Points : 2)
11. should be avoided if other langauge features
will work just as well.
can easily confuse other progammers not
familiar with your macro.
should be undefined after use to avoid
polluting the global namespace.
All of the above
Question 10.10. Which piece of the C/C++ compile
tool chain arranges compiled code into the final
executable? (Points : 2)
Preprocessor
Compiler
Linker
Debugger
Information
12. UOP GSP 125 Week 1 iLab Simple game NEW
Check this A+ tutorial guideline at
http://www.uopassignments.com/gsp-125-
devry/gsp-125-week-1-ilab-simple-game-
recent
For more classes visit
http://www.uopassignments.com/
//
//
// INSTRUCTIONS
-----------Compile this code. You should see a happy-
face character on a field of
periods. You can move the character with the 'w',
'a', 's', and 'd' keys.
Read through this code! Try to understand it
before starting the assignment.
Comment confusing lines with what you think code
is doing, and experiment
with existing code to test your understanding.
Once you feel comfortable with this code,
accomplish each of the following,
and make sure your code compiles and runs after
13. each step is completed.
1) Object Oriented Refactoring
a) Write a class called Entity to store two public
integers named x and y,
and a char named icon (the player data).
b) Remove x, y, and icon (the player data) from
main(), create an instance
of the Entity class (named whatever you like) in
main(), and use its
members as replacements for the x, y, and icon
variables that were
removed.
c) Write a parameterized constructor for the
Entity class that sets x, y,
and icon, and use it when creating the instance.
d) Make x, y, and icon private variables of Entity,
and create Accessor
and Mutator (or Getter and Setter) functions to use
them in main().
(hint: "player.x++" could be
"player.setX(player.getX()+1);" )
e) Write a struct called Vector2, which has two int
variables, x and y.
f) Write a default constructor for Vector2, which
sets x and y to 0.
g) Write a parameterized constructor for Vector2,
which sets x and y.
14. h) Remove x, and y from Entity, add an instance of
the Vector2 structure
named "pos" to the Entity class, and
use pos's members as replacements
for the x, and y variables that were removed.
i) Remove height and width (in the game data)
from main(), create an
instance of the Vector2 structure named
"size", and use size's x member
as a replacement for width, and size's y member as
a replacement for
height.
j) Write a method in Vector2 with the signature
"bool is(int a_x, int a_y)".
"is" should return true if a_x is equal to
that instance's x, and a_y is equal that instance's y.
k) Instantiate a new object of class Vector2 called
"winPosition", and set
it's x, y value to size.x/2, size.y/2.
2) Add Game Logic
a) Add code to the while-loop so that when the
player reaches
"winPosition", which should be
determined by using the "is" method,
the
"state" variable should be set to WIN,
ending the game.
15. b) Add code to the while-loop so that the state
variable is set to to LOST
if the player leaves the play field (ending the
game).
3) Using enums
a) Create an enum called "GameState"
with the possible values "RUNNING",
"WIN", "LOST", and
"USER_QUIT".
b) Replace the state variable with an isntance of
the GameState enum. // lab1: simplegame_OOP
// <insert your name here>
// read main.cpp, and follow the instructions at
the bottom of main.cpp
#include <iostream> // std::cout using
namespace std;
#include <windows.h>
#include <conio.h> //
SetConsoleCursorPosition(HANDLE,COORD)
// _getch() struct Vector2 {
int x;
int y;
Vector2() :
x(0), y(0) {
}
Vector2(int x, int y) {
x = x;
17. UOP GSP 125 Week 2 ILab Rectangles NEW
Check this A+ tutorial guideline at
http://www.uopassignments.com/gsp-125-
devry/gsp-125-week-2-ilab-rectangles-recent
For more classes visit
http://www.uopassignments.com/
/ lab2: rectangles
// <insert your name here>
// read main.cpp, and follow the instructions at
the bottom of main.cpp
#define NOMINMAX // prevent Windows API from
conflicting with "min" and
"max"
#include <stdio.h> // C-style output.
printf(char*,...), putchar(int)
#include <windows.h> //
SetConsoleCursorPosition(HANDLE,COORD)
#include <conio.h> // _getch()
/**
* moves the console cursor to the given x/y
coordinate
* 0, 0 is the upper-left hand coordinate. Standard
consoles are 80x24.
18. * @param x
* @param y
*/
void moveCursor(int x, int y)
{
COORD c = {x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUT
PUT_HANDLE), c);
}
struct Vec2
{
short x, y;
Vec2() : x(0), y(0) { }
Vec2(int x, int y) : x(x), y(y) { }
void add(Vec2 v)
{
x += v.x;
y += v.y;
}
};
class Rect
{
Vec2 min, max;
public:
Rect(int minx, int miny, int maxx, int maxy)
:min(minx,miny),max(maxx,maxy)
{}
20. Rect rect0(10, 2, 14, 4);
Rect rect1(1, 6, 5, 15);
int userInput;
do
21. UOP GSP 125 Week 3 iLab List of Numbers NEW
Check this A+ tutorial guideline at
http://www.uopassignments.com/gsp-125-
devry/gsp-125-week-3-ilab-list-of-numbers-
recent
For more classes visit
http://www.uopassignments.com/
// lab3: listofnumbers
// <insert your name here>
// read main.cpp, and follow the instructions at
the bottom of main.cpp
#include <iostream>
using namespace std;
int main()
{
int numberOfElements = 0;
float * elements = NULL;
float userInput;
bool addingNumbersToTheList;
cout << "Keep entering numbers. Enter
22. a non-number to stop." << endl;
do
{
cin >> userInput;
addingNumbersToTheList = !std::cin.fail();
if(addingNumbersToTheList) {
// make a bigger array to replace the old one
float * biggerArray = new
float[numberOfElements+1];
if(elements != NULL)
{
// copy the old elements into the biggerArray
for(int i = 0; i < numberOfElements; i++)
{
biggerArray[i] = elements[i];
}
// the old array is not needed anymore, we have a
better copy
delete elements;
}
// point at the new array
elements = biggerArray;
numberOfElements = numberOfElements+1;
// put the new number into the last element of the
array
elements[numberOfElements-1] = userInput; }
}
24. UOP GSP 125 Week 4 iLab Simple Game
inheritance NEW
Check this A+ tutorial guideline at
http://www.uopassignments.com/gsp-125-
devry/gsp-125-week-4-ilab-simple-game-
inheritance-recent
For more classes visit
http://www.uopassignments.com/
GSP 125 Week 4 iLab Simple Game inheritance
NEW
//
//
//
//
//
//
// INSTRUCTIONS
-----------Compile this code. You should see a
rectangular play field of periods, with
25. 3 Entity objects visible on it. The happy-face Entity
moves with the "wasd"
keys, and the club Entity moves with the
"ijkl" keys. If the happy-face
reaches the diamond Entity, the player wins. If the
happy-face reaches the
club, the player loses.
Read through this code! Try to understand it
before starting the assignment.
Comment confusing lines with what you think code
is doing, and experiment
with existing code to test your understanding.
Once you feel comfortable with this code,
accomplish each of the following,
and make sure your code compiles and runs after
each step is completed.
1) Getting comfortable with the game code
a) Implement initialization lists in Vector2, Entity,
and Game (setting
object values after a ':', between the constructor
signature and body).
Have initialization lists set initial values for each
member variable.
b) Add another Entity to the game that isn't the
same location as an
existing Entity. Use a heart icon (ASCII code 3). It
should display in
26. the game.
c) Add logic that makes the club (PLAYER2) win
the game if that player
reaches the heart Entity. You may want to make
new constants, like
GOAL2, and WIN2, to follow the existing code
convention.
d) Make a new private function called "void
Game::handleUserInput()", move
the user input handling logic from Game::update()
into this new
function, and call Game::handleUserInput from
Game::update.
e) Add whitespace to the handleUserInput logic,
and comment each line with
what you understand it is doing. If you don't
understand what the code
is doing, experiment with it until you do! Do things
like printing
variables you are unsure about, and guess what
output will look like.
f) Implement the prototyped overloaded operators
for Vector2. Once they
are finished you should be able to use the
alternate code for setting
up PLAYER2 in Game::Game() in
"game.cpp".
27. 2) A "BlinkEntity" class
a) Create 2 new files in your project:
"blinkentity.h", and
"blinkentity.cpp"
b) Make a BlinkEntity class that extends Entity.
Declare the class in
"blinkentity.h" and define it's methods
in "blinkentity.cpp". Your
"blinkentity.h" file should look
something like:
#pragma once
#include "entity.h"
class BlinkEntity : public Entity {
};
c) Instead of using an Entity for the Entity marked
GOAL1 in the Game
constructor, use a BlinkEntity. You will need to
create a public
BlinkEntity constructor.
d) Give BlinkEntity another member variable
called "alternateIcon". When
BlinkEntity calls it's update function, swap the
values of "icon" and
"alternateIcon". You won't notice a
change during runtime until you add
the virtual modifier to Entity::update().
3) A "WanderingEntity" class
28. a) Create 2 new files in your project:
"wanderingentity.h", and
"wanderingentity.cpp"
b) Make a WanderingEntity class that extends
Entity. Declare the class in
"wanderingentity.h" and define it's
methods in "wanderingentity.cpp". //
Your "wanderingentity.h" file should
look something like:
//
#pragma once
//
//
#include "entity.h"
//
//
class WanderingEntity : public Entity {
//
};
// c) Instead of using an Entity for the Entity
marked PLAYER2 in the Game
//
constructor, use a WanderingEntity. You will need
to create a public
//
WanderingEntity constructor.
// d) Create a new update method for
29. WanderingEntity. Declare it in
//
"wanderingentity.h", and define it in
"wanderingentity.cpp". In the
//
WanderingEntity::update() method, set the
"howToMoveNext" variable
//
to a random number from 0 to 3. You can use
"rand() % 4" to do this in
//
"wanderingentity.cpp" if you #include
<cstdlib> or <stdlib.h>. After
//
setting the "howToMo
30. UOP GSP 125 Week 5 iLab Shapes NEW
Check this A+ tutorial guideline at
http://www.uopassignments.com/gsp-125-
devry/gsp-125-week-5-ilab-shapes-recent
For more classes visit
http://www.uopassignments.com/
// INSTRUCTIONS
// ------------
// Compile this code. After pressing any key to
clear the instructions, You
// should see three rectangles labeled '#', 'b', and
'c'. You should also see
// two triangles, labeled 'd' and 'e'. Pressing '>' and
'<' will change which
// shape is labeled '#'. Pressing 'w', 'a', 's', and 'd'
will move the shape
// labeled '#'. Pressing 'space' will randomize the
selected shape.
//
// Read through this code! Try to understand it
before starting the assignment.
31. // Comment confusing lines with what you think
code is doing, and experiment
// with existing code to test your understanding.
// Once you feel comfortable with this code,
accomplish each of the following,
// and make sure your code compiles and runs
after each step is completed.
//
// 1. Getting comfortable with the code
// a) Create a "makeRandom" method in both the
Rect and Tri classes, based
// on the "makeRandomRect" and
"makeRandomTri" functions in
// "application.cpp". The makeRandom function
should take no parameters,
// and instead make itself random. Removing the
old "makeRandomRect"
// and "makeRandomTri" functions as well. Be
sure to consider what to do
// about "screenMin" and "screenMax".
// b) Create a print method for the Tri class,
similar to the print method
// for the Rect class. This method may come in
very handy when debugging.
// 2. Create Shape base class
// a) Create a header file (without a .cpp file) for a
Shape class.
32. // b) Create the Shape class, which should have no
member variables.
// c) Make the Shape class an interface for the Rect
and Tri classes. Shape
// should have pure-virtual methods for each
method that Rect and Tri have
// in common.
// d) Make sure Shape has a virtual destructor
with an empty body.
// 3. Make Rect and Triangle extend Shape
// 4. Change selected
// a) Change the type of "Application::selected"
from "void *" to "Shape *".
// b) Every piece of code that typecasts "selected"
(and the logic around it)
// can be removed now. Simply call functions using
the "Shape" interface.
// c) Remove the "selectedType" variable from
Application. Logic that needs
// some form of RunTime Type Information should
use dynamic_cast instead.
// 5. Merge all Shape objects into a single array
// a) Create an array of Shape pointers in the
Application called "shapes".
// b) Making a complementary NUM_SHAPES
variable would make sense.
// b) Remove "rectangles" and "triangles" arrays.
33. // c) Put each Tri and Rect object managed by the
Application class into
// the "shapes" array. This will require re-
factoring in multiple files.
// While removing references to "rectangles" and
"triangles" arrays, it
// may make sense to replace pairs of for-loops
using each of the old
// arrays with a single for-loop using just "shapes".
// 6. Make "shapes" dynamic
// a) Give Application::init() 2 parameters: int
numRect, int numTri
// b) Make "shapes" a pointer of type "Shape **",
and allocate it to be
// "numShapes" big, where "numShapes" is an int
member of Application
// equal to (numRect + numTri), defined in
Application::init().
// c) When calling "app.init()" in main, pass valid
arguments for numRect
// and numTri.
// d) De-allocate the "shapes" array in
Application::Release().
// 7. Clean up old variables
34. UOP GSP 125 Week 7 iLab win32game NEW
Check this A+ tutorial guideline at
http://www.uopassignments.com/gsp-125-
devry/gsp-125-week-7-ilab-win32game-
recent
For more classes visit
http://www.uopassignments.com/
Looking for help with C++ lab, please see attached
zip, inside main.cpp are directions:
// 1) Replace Vector2 and Coordinate
// a) Create a new Vec2 class as a replacement for
both Vector2 and
// Coordinate. Vec2 must be a templated class, so
that it stores and
// manipulates X and Y values of a templated type.
It may be helpful to
// start with the Vector2 class, add "template" to
the
// header, and replace (Ctrl+H) each instance of
"float" with "TYPE", and
35. // "Vector2" with "Vec2".
// b) Remember, a templated class must have all
method definitions in the
// same file as the templated class declaration.
Also remember that method
// definitions outside of a templated class'
declaration need a
// "template" header, and a "" appended to the
class
// name with the scope resolution operator (e.g.:
// "void Vec2::limitMagnitude(TYPE max) {/*
method body */}").
// c) Replace the use of Vector2 with Vec2.
// d) Replace the use of Coordinate with Vec2.
// 2) More Game Goals
// a) Instead of having a single goal for the player,
create at least 3
// randomly placed goals for the player. Use a
"std::vector"
// object (from the Standard Template Library)
named "goals" to store the
// goals.
// c) Whenever the user clicks in the game
window, the game should create
// another goal object for the player to get, and
add it to the
// "std::vector goals" object.
36. // d) Each retrieved goal should be removed from
the game after being
// retrieved by the player. A "You Win!" message
should display when the
// player retrieves all goals.