#include <iostream>
#include <string>
using namespace std;
// Bill Davern
// June 13, 2025
// Assignment 4, with 5 book objects
// class Book
// with three private data fields: book title, author, copyright, and price
// four public methods to retrieve fields (called "getters")
// and one public non-default constructor
class Book {
public :
// member function prototypes
void assign ( string, string, int , float , string, int ) ; // this is your constructor
string getTitle( ) ;
string getAuthor( ) ;
int getCopyRightYear( ) ;
float getPrice( ) ;
string getType( ) ;
int getPages( ) ;
private :
// data members
string title;
string author;
int copyRightYear;
float price;
string type;
int pages;
} ;
// these are the actual member functions
// this member function is a "constructor" that will create a new book
void Book:: assign ( string bookTitle, string bookAuthor, int bookDate, float bookPrice, string bookType, int bookPages) {
title = bookTitle;
author = bookAuthor;
copyRightYear = bookDate;
price = bookPrice;
type = bookType;
pages = bookPages;
}
// this member function is a "getter" that will retrieve that book title value
string Book:: getTitle ( ) {
return title;
}
// this member function is a "getter" that will retrieve the primary book author value
string Book:: getAuthor ( ) {
return author;
}
// this member function is a "getter" that will retrieve the year the book was copyrighted
int Book:: getCopyRightYear ( ) {
return copyRightYear;
}
// this member function is a "getter" that will retrieve the list price of the book
float Book:: getPrice ( ) {
return price;
}
// this member function is a "getter" that will retrieve the type of book, hardcover or soft
string Book:: getType ( ) {
return type;
}
// this member function is a "getter" that will retrieve the number of pages in the book
int Book:: getPages ( ) {
return pages;
}
int main( )
{
cout << "Here are some of my favorite books ...\n " << endl;
// Set up space to create 5 instances of the class Book to use with our constructor
Book b1, b2, b3, b4, b5;
// Use our constructor to create the first book, replace my book below with info on your favorite book, use b1
b1.assign ( "The Art of War" , "Sun Tzu" , 1998 , 29.99 , "Hardcover" , 232 ) ;
cout << b1.getTitle ( ) << " authored by " << b1.getAuthor ( ) << " in the year " << b1.getCopyRightYear ( ) << endl;
cout << "The price of this book is: $" << b1.getPrice ( ) << endl;
cout << "The type of book is a " << b1.getType ( ) << " book." << endl;
cout << "The book has " << b1.getPages ( ) << " pages." << endl;
cout << "\n " << endl;
// Use the constructor again to create another book, again, replacing my book below with one your favorite books, use b2
b2.assign ( "Basic Economics" , "Thomas Sowell" , 2014 , 25.99 , "Softcover" , 704 ) ;
cout << b2.getTitle ( ) << " authored by " << b2.getAuthor ( ) << " in the year " << b2.getCopyRightYear ( ) << endl;
cout << "The price of this book is: $" << b2.getPrice ( ) << endl;
cout << "The type of book is a " << b2.getType ( ) << " book." << endl;
cout << "The book has " << b2.getPages ( ) << " pages." << endl;
cout << "\n " << endl;
// use constructor (its called assign) again to create and then print information about book 3, another favorite book of yours ... remember to use b3
b3.assign ( "The Outsiders" , "S. E. Hinton" , 1967 , 12.98 , "Softcover" , 192 ) ;
cout << b3.getTitle ( ) << " authored by " << b3.getAuthor ( ) << " in the year " << b3.getCopyRightYear ( ) << endl;
cout << "The price of this book is: $" << b3.getPrice ( ) << " book." << endl;
cout << "The type of book is a " << b3.getType ( ) << " book." << endl;
cout << "The book has " << b3.getPages ( ) << " pages." << endl;
cout << "\n " << endl;
// use constructor again to create and then print information about book 4, your fourth favorite book ... remember to use b4
b4.assign ( "VMware vSAN 8.0 U2" , "Duncon Epping" , 2024 , 45.00 , "Audio" , 632 ) ;
cout << b4.getTitle ( ) << " authored by " << b4.getAuthor ( ) << " in the year " << b4.getCopyRightYear ( ) << endl;
cout << "The price of this book is: $" << b4.getPrice ( ) << endl;
cout << "The type of book is a " << b4.getType ( ) << " book" << endl;
cout << "The book has " << b4.getPages ( ) << " pages." << endl;
cout << "\n " << endl;
// use constructor again to create and then print information about book 5, your fifth favorite book ... remember to use b5
b5.assign ( "Mastering AWS CloudFormation" , "Karen Tovmasyan" , 2023 , 43.13 , "Hardcover" , 310 ) ;
cout << b5.getTitle ( ) << " authored by " << b5.getAuthor ( ) << " in the year " << b5.getCopyRightYear ( ) << endl;
cout << "The price of this book is: $" << b5.getPrice ( ) << endl;
cout << "The type of book is a " << b5.getType ( ) << " book." << endl;
cout << "The book has " << b5.getPages ( ) << " pages." << endl;
cout << "\n " << endl;
return ( 0 ) ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEJpbGwgRGF2ZXJuCi8vIEp1bmUgMTMsIDIwMjUKLy8gQXNzaWdubWVudCA0LCB3aXRoIDUgYm9vayBvYmplY3RzCgoKLy8gY2xhc3MgQm9vawovLyB3aXRoIHRocmVlIHByaXZhdGUgZGF0YSBmaWVsZHM6IGJvb2sgdGl0bGUsIGF1dGhvciwgY29weXJpZ2h0LCBhbmQgcHJpY2UKLy8gZm91ciBwdWJsaWMgbWV0aG9kcyB0byByZXRyaWV2ZSBmaWVsZHMgKGNhbGxlZCAiZ2V0dGVycyIpCi8vIGFuZCBvbmUgcHVibGljIG5vbi1kZWZhdWx0IGNvbnN0cnVjdG9yCgpjbGFzcyBCb29rIHsKCiAgcHVibGljOgogICAgIAogICAgICAvLyBtZW1iZXIgZnVuY3Rpb24gcHJvdG90eXBlcwogICAgICB2b2lkIGFzc2lnbiAoc3RyaW5nLCBzdHJpbmcsIGludCwgZmxvYXQsIHN0cmluZywgaW50KTsgICAvLyB0aGlzIGlzIHlvdXIgY29uc3RydWN0b3IKICAgICAgc3RyaW5nIGdldFRpdGxlKCk7CiAgICAgIHN0cmluZyBnZXRBdXRob3IoKTsKICAgICAgaW50ICAgIGdldENvcHlSaWdodFllYXIoKTsKICAgICAgZmxvYXQgIGdldFByaWNlKCk7CgkgIHN0cmluZyBnZXRUeXBlKCk7CgkgIGludCBnZXRQYWdlcygpOwogIAoKICBwcml2YXRlOgoKICAgICAgLy8gZGF0YSBtZW1iZXJzCiAgICAgIHN0cmluZyB0aXRsZTsKICAgICAgc3RyaW5nIGF1dGhvcjsKICAgICAgaW50ICAgIGNvcHlSaWdodFllYXI7CiAgICAgIGZsb2F0ICBwcmljZTsKCSAgc3RyaW5nIHR5cGU7CgkgIGludCBwYWdlczsKfTsKCgovLyB0aGVzZSBhcmUgdGhlIGFjdHVhbCBtZW1iZXIgZnVuY3Rpb25zCgovLyB0aGlzIG1lbWJlciBmdW5jdGlvbiBpcyBhICJjb25zdHJ1Y3RvciIgdGhhdCB3aWxsIGNyZWF0ZSBhIG5ldyBib29rCnZvaWQgQm9vazo6YXNzaWduIChzdHJpbmcgYm9va1RpdGxlLCBzdHJpbmcgYm9va0F1dGhvciwgaW50IGJvb2tEYXRlLCBmbG9hdCBib29rUHJpY2UsIHN0cmluZyBib29rVHlwZSwgaW50IGJvb2tQYWdlcykgewogICAgICAgICAgICB0aXRsZSA9IGJvb2tUaXRsZTsKICAgICAgICAgICAgYXV0aG9yID0gYm9va0F1dGhvcjsKICAgICAgICAgICAgY29weVJpZ2h0WWVhciA9IGJvb2tEYXRlOwogICAgICAgICAgICBwcmljZSA9IGJvb2tQcmljZTsgICAgCgkgICAJICAgIHR5cGUgPSBib29rVHlwZTsKCQkJcGFnZXMgPSBib29rUGFnZXM7Cn0KCi8vIHRoaXMgbWVtYmVyIGZ1bmN0aW9uIGlzIGEgImdldHRlciIgdGhhdCB3aWxsIHJldHJpZXZlIHRoYXQgYm9vayB0aXRsZSB2YWx1ZQpzdHJpbmcgQm9vazo6Z2V0VGl0bGUoKSB7CiAgICAgICAgICAgIHJldHVybiB0aXRsZTsKfQoKLy8gdGhpcyBtZW1iZXIgZnVuY3Rpb24gaXMgYSAiZ2V0dGVyIiB0aGF0IHdpbGwgcmV0cmlldmUgdGhlIHByaW1hcnkgYm9vayBhdXRob3IgdmFsdWUKc3RyaW5nIEJvb2s6OmdldEF1dGhvcigpIHsKICAgICAgICAgICAgcmV0dXJuIGF1dGhvcjsKfQoKLy8gdGhpcyBtZW1iZXIgZnVuY3Rpb24gaXMgYSAiZ2V0dGVyIiB0aGF0IHdpbGwgcmV0cmlldmUgdGhlIHllYXIgdGhlIGJvb2sgd2FzIGNvcHlyaWdodGVkCmludCBCb29rOjpnZXRDb3B5UmlnaHRZZWFyKCkgewogICAgICAgICAgICByZXR1cm4gY29weVJpZ2h0WWVhcjsKfQoKLy8gdGhpcyBtZW1iZXIgZnVuY3Rpb24gaXMgYSAiZ2V0dGVyIiB0aGF0IHdpbGwgcmV0cmlldmUgdGhlIGxpc3QgcHJpY2Ugb2YgdGhlIGJvb2sKZmxvYXQgQm9vazo6Z2V0UHJpY2UoKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHByaWNlOwp9CgovLyB0aGlzIG1lbWJlciBmdW5jdGlvbiBpcyBhICJnZXR0ZXIiIHRoYXQgd2lsbCByZXRyaWV2ZSB0aGUgdHlwZSBvZiBib29rLCBoYXJkY292ZXIgb3Igc29mdApzdHJpbmcgQm9vazo6Z2V0VHlwZSgpIHsKICAgICAgICAgICAgICByZXR1cm4gdHlwZTsKfQoKLy8gdGhpcyBtZW1iZXIgZnVuY3Rpb24gaXMgYSAiZ2V0dGVyIiB0aGF0IHdpbGwgcmV0cmlldmUgdGhlIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgYm9vawppbnQgQm9vazo6Z2V0UGFnZXMoKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHBhZ2VzOwp9CgppbnQgbWFpbigpCnsKCiAgICAgIGNvdXQgPDwgIkhlcmUgYXJlIHNvbWUgb2YgbXkgZmF2b3JpdGUgYm9va3MgLi4uXG4iIDw8IGVuZGw7CgogICAgIC8vIFNldCB1cCBzcGFjZSB0byBjcmVhdGUgNSBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzIEJvb2sgdG8gdXNlIHdpdGggb3VyIGNvbnN0cnVjdG9yCiAgICAgIEJvb2sgYjEsIGIyLCBiMywgYjQsIGI1OwoKICAgICAgLy8gVXNlIG91ciBjb25zdHJ1Y3RvciB0byBjcmVhdGUgdGhlIGZpcnN0IGJvb2ssIHJlcGxhY2UgbXkgYm9vayBiZWxvdyB3aXRoIGluZm8gb24geW91ciBmYXZvcml0ZSBib29rLCB1c2UgYjEKICAgICBiMS5hc3NpZ24gKCJUaGUgQXJ0IG9mIFdhciIsICJTdW4gVHp1IiwgMTk5OCwgMjkuOTksICJIYXJkY292ZXIiLCAyMzIpOwoKICAgICAgY291dCA8PCBiMS5nZXRUaXRsZSgpIDw8ICIgYXV0aG9yZWQgYnkgIiA8PCBiMS5nZXRBdXRob3IoKSA8PCAiIGluIHRoZSB5ZWFyICIgPDwgYjEuZ2V0Q29weVJpZ2h0WWVhcigpIDw8IGVuZGw7CiAgICAgIGNvdXQgPDwgIlRoZSBwcmljZSBvZiB0aGlzIGJvb2sgaXM6ICAkIiA8PCBiMS5nZXRQcmljZSgpIDw8IGVuZGw7CgkgIGNvdXQgPDwgIlRoZSB0eXBlIG9mIGJvb2sgaXMgYSAiICA8PCBiMS5nZXRUeXBlKCkgPDwgIiBib29rLiIgPDwgZW5kbDsKCSAgY291dCA8PCAiVGhlIGJvb2sgaGFzICIgPDwgYjEuZ2V0UGFnZXMoKSA8PCAiIHBhZ2VzLiIgPDwgZW5kbDsKICAgICAgY291dCA8PCAiXG4iIDw8IGVuZGw7CgogICAgICAvLyBVc2UgdGhlIGNvbnN0cnVjdG9yIGFnYWluIHRvIGNyZWF0ZSBhbm90aGVyIGJvb2ssIGFnYWluLCByZXBsYWNpbmcgbXkgYm9vayBiZWxvdyB3aXRoIG9uZSB5b3VyIGZhdm9yaXRlIGJvb2tzLCB1c2UgYjIKICAgICAgYjIuYXNzaWduICgiQmFzaWMgRWNvbm9taWNzIiwgIlRob21hcyBTb3dlbGwiLCAyMDE0LCAyNS45OSwgIlNvZnRjb3ZlciIsIDcwNCk7CgogICAgICBjb3V0IDw8IGIyLmdldFRpdGxlKCkgPDwgIiBhdXRob3JlZCBieSAiIDw8IGIyLmdldEF1dGhvcigpIDw8ICIgaW4gdGhlIHllYXIgIiA8PCBiMi5nZXRDb3B5UmlnaHRZZWFyKCkgPDwgZW5kbDsKICAgICAgY291dCA8PCAiVGhlIHByaWNlIG9mIHRoaXMgYm9vayBpczogICQiIDw8IGIyLmdldFByaWNlKCkgPDwgZW5kbDsKCSAgY291dCA8PCAiVGhlIHR5cGUgb2YgYm9vayBpcyBhICIgIDw8IGIyLmdldFR5cGUoKSA8PCAiIGJvb2suIiA8PCBlbmRsOwoJICBjb3V0IDw8ICJUaGUgYm9vayBoYXMgIiA8PCBiMi5nZXRQYWdlcygpIDw8ICIgcGFnZXMuIiA8PCBlbmRsOwogICAgICBjb3V0IDw8ICJcbiIgPDwgZW5kbDsKCiAgICAgLy8gdXNlIGNvbnN0cnVjdG9yIChpdHMgY2FsbGVkIGFzc2lnbikgYWdhaW4gdG8gY3JlYXRlIGFuZCB0aGVuIHByaW50IGluZm9ybWF0aW9uIGFib3V0IGJvb2sgMywgYW5vdGhlciBmYXZvcml0ZSBib29rIG9mIHlvdXJzIC4uLiByZW1lbWJlciB0byB1c2UgYjMgCgkgIGIzLmFzc2lnbiAoIlRoZSBPdXRzaWRlcnMiLCAiUy4gRS4gSGludG9uIiwgMTk2NywgMTIuOTgsICJTb2Z0Y292ZXIiLCAxOTIpOwoKICAgICAgY291dCA8PCBiMy5nZXRUaXRsZSgpIDw8ICIgYXV0aG9yZWQgYnkgIiA8PCBiMy5nZXRBdXRob3IoKSA8PCAiIGluIHRoZSB5ZWFyICIgPDwgYjMuZ2V0Q29weVJpZ2h0WWVhcigpIDw8IGVuZGw7CiAgICAgIGNvdXQgPDwgIlRoZSBwcmljZSBvZiB0aGlzIGJvb2sgaXM6ICAkIiA8PCBiMy5nZXRQcmljZSgpIDw8ICIgYm9vay4iIDw8IGVuZGw7CgkgIGNvdXQgPDwgIlRoZSB0eXBlIG9mIGJvb2sgaXMgYSAiICA8PCBiMy5nZXRUeXBlKCkgPDwgIiBib29rLiIgPDwgZW5kbDsgICAgICAKCSAgY291dCA8PCAiVGhlIGJvb2sgaGFzICIgPDwgYjMuZ2V0UGFnZXMoKSA8PCAiIHBhZ2VzLiIgPDwgZW5kbDsKICAgICAgY291dCA8PCAiXG4iIDw8IGVuZGw7CgogICAgICAvLyB1c2UgY29uc3RydWN0b3IgYWdhaW4gdG8gY3JlYXRlIGFuZCB0aGVuIHByaW50IGluZm9ybWF0aW9uIGFib3V0IGJvb2sgNCwgeW91ciBmb3VydGggZmF2b3JpdGUgYm9vayAuLi4gcmVtZW1iZXIgdG8gdXNlIGI0CiAgICAgIGI0LmFzc2lnbiAoIlZNd2FyZSB2U0FOIDguMCBVMiIsICJEdW5jb24gRXBwaW5nIiwgMjAyNCwgNDUuMDAsICJBdWRpbyIsIDYzMik7CgogICAgICBjb3V0IDw8IGI0LmdldFRpdGxlKCkgPDwgIiBhdXRob3JlZCBieSAiIDw8IGI0LmdldEF1dGhvcigpIDw8ICIgaW4gdGhlIHllYXIgIiA8PCBiNC5nZXRDb3B5UmlnaHRZZWFyKCkgPDwgZW5kbDsKICAgICAgY291dCA8PCAiVGhlIHByaWNlIG9mIHRoaXMgYm9vayBpczogICQiIDw8IGI0LmdldFByaWNlKCkgPDwgZW5kbDsKCSAgY291dCA8PCAiVGhlIHR5cGUgb2YgYm9vayBpcyBhICIgIDw8IGI0LmdldFR5cGUoKSA8PCAiIGJvb2siIDw8IGVuZGw7CgkgIGNvdXQgPDwgIlRoZSBib29rIGhhcyAiIDw8IGI0LmdldFBhZ2VzKCkgPDwgIiBwYWdlcy4iIDw8IGVuZGw7CiAgICAgIGNvdXQgPDwgIlxuIiA8PCBlbmRsOwogICAgICAvLyB1c2UgY29uc3RydWN0b3IgYWdhaW4gdG8gY3JlYXRlIGFuZCB0aGVuIHByaW50IGluZm9ybWF0aW9uIGFib3V0IGJvb2sgNSwgeW91ciBmaWZ0aCBmYXZvcml0ZSBib29rIC4uLiByZW1lbWJlciB0byB1c2UgYjUKICAgICAgYjUuYXNzaWduICgiTWFzdGVyaW5nIEFXUyBDbG91ZEZvcm1hdGlvbiIsICJLYXJlbiBUb3ZtYXN5YW4iLCAyMDIzLCA0My4xMywgIkhhcmRjb3ZlciIsIDMxMCk7CiAgICAgIAogICAgICBjb3V0IDw8IGI1LmdldFRpdGxlKCkgPDwgIiBhdXRob3JlZCBieSAiIDw8IGI1LmdldEF1dGhvcigpIDw8ICIgaW4gdGhlIHllYXIgIiA8PCBiNS5nZXRDb3B5UmlnaHRZZWFyKCkgPDwgZW5kbDsKICAgICAgY291dCA8PCAiVGhlIHByaWNlIG9mIHRoaXMgYm9vayBpczogICQiIDw8IGI1LmdldFByaWNlKCkgPDwgZW5kbDsKCSAgY291dCA8PCAiVGhlIHR5cGUgb2YgYm9vayBpcyBhICIgIDw8IGI1LmdldFR5cGUoKSA8PCAiIGJvb2suIiA8PCBlbmRsOwoJICBjb3V0IDw8ICJUaGUgYm9vayBoYXMgIiA8PCBiNS5nZXRQYWdlcygpIDw8ICIgcGFnZXMuIiA8PCBlbmRsOwogICAgICBjb3V0IDw8ICJcbiIgPDwgZW5kbDsKICAgCiAgICAgIHJldHVybiAoMCk7Cn0=