#include <iostream>
#include <string>
using namespace std;
// 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 ) ; // this is your constructor
string getTitle( ) ;
string getAuthor( ) ;
int getCopyRightYear( ) ;
float getPrice( ) ;
private :
// data members
string title;
string author;
int copyRightYear;
float price;
} ;
// 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) {
title = bookTitle;
author = bookAuthor;
copyRightYear = bookDate;
price = bookPrice;
}
// 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;
}
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, b6, b7;
// Use our constructor to create the first book, replace my book below with info on your favorite book, use b1
b1.assign ( "Harry Potter and the Sorcerers Stone" , "J.K. Rowling" , 1997 , 35.23 ) ;
cout << b1.getTitle ( ) << " authored by " << b1.getAuthor ( ) << " in the year " << b1.getCopyRightYear ( ) << endl;
cout << "The price of this book is: $" << b1.getPrice ( ) << 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 ( "Harry Potter and the Cursed Child" , "J.K. Rowling" , 2016 , 35.99 ) ;
cout << b2.getTitle ( ) << " authored by " << b2.getAuthor ( ) << " in the year " << b2.getCopyRightYear ( ) << endl;
cout << "The price of this book is: $" << b2.getPrice ( ) << 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 ( "Harry Potter and the Chamber of Secrets" , "J.K. Rowling" , 1998 , 37.23 ) ;
cout << b3.getTitle ( ) << " authored by " << b3.getAuthor ( ) << " in the year " << b3.getCopyRightYear ( ) << endl;
cout << "The price of this book is: $" << b3.getPrice ( ) << endl;
// use constructor again to create and then print information about book 4, your fourth favorite book ... remember to use b4
b4.assign ( "Lord of the Rings" , "J.R.R Tolkien" , 1954 , 17.00 ) ;
cout << b4.getTitle ( ) << " authored by " << b4.getAuthor ( ) << " in the year " << b4.getCopyRightYear ( ) << endl;
cout << "The price of this book is: $" << b4.getPrice ( ) << endl;
// use constructor again to create and then print information about book 5, your fifth favorite book ... remember to use b5
b5.assign ( "Harry Potter and the Order of the Pheonix" , "J.K. Rowling" , 2003 , 34.99 ) ;
cout << b5.getTitle ( ) << " authored by " << b5.getAuthor ( ) << " in the year " << b5.getCopyRightYear ( ) << endl;
cout << "The price of this book is: $" << b5.getPrice ( ) << endl;
// Extra Book entires
b6.assign ( "Harry Potter and the Goblet of Fire" , "J.K. Rowling" , 2000 , 31.99 ) ;
cout << b6.getTitle ( ) << " authored by " << b6.getAuthor ( ) << " in the year " << b6.getCopyRightYear ( ) << endl;
cout << "The price of this book is: $" << b6.getPrice ( ) << endl;
return ( 0 ) ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIGNsYXNzIEJvb2sKLy8gd2l0aCB0aHJlZSBwcml2YXRlIGRhdGEgZmllbGRzOiBib29rIHRpdGxlLCBhdXRob3IsIGNvcHlyaWdodCwgYW5kIHByaWNlCi8vIGZvdXIgcHVibGljIG1ldGhvZHMgdG8gcmV0cmlldmUgZmllbGRzIChjYWxsZWQgImdldHRlcnMiKQovLyBhbmQgb25lIHB1YmxpYyBub24tZGVmYXVsdCBjb25zdHJ1Y3RvcgoKY2xhc3MgQm9vayB7CgogIHB1YmxpYzoKICAgICAKICAgICAgLy8gbWVtYmVyIGZ1bmN0aW9uIHByb3RvdHlwZXMKICAgICAgdm9pZCBhc3NpZ24gKHN0cmluZywgc3RyaW5nLCBpbnQsIGZsb2F0KTsgICAvLyB0aGlzIGlzIHlvdXIgY29uc3RydWN0b3IKICAgICAgc3RyaW5nIGdldFRpdGxlKCk7CiAgICAgIHN0cmluZyBnZXRBdXRob3IoKTsKICAgICAgaW50ICAgIGdldENvcHlSaWdodFllYXIoKTsKICAgICAgZmxvYXQgIGdldFByaWNlKCk7CiAgCgogIHByaXZhdGU6CgogICAgICAvLyBkYXRhIG1lbWJlcnMKICAgICAgc3RyaW5nIHRpdGxlOwogICAgICBzdHJpbmcgYXV0aG9yOwogICAgICBpbnQgICAgY29weVJpZ2h0WWVhcjsKICAgICAgZmxvYXQgIHByaWNlOwp9OwoKCi8vIHRoZXNlIGFyZSB0aGUgYWN0dWFsIG1lbWJlciBmdW5jdGlvbnMKCi8vIHRoaXMgbWVtYmVyIGZ1bmN0aW9uIGlzIGEgImNvbnN0cnVjdG9yIiB0aGF0IHdpbGwgY3JlYXRlIGEgbmV3IGJvb2sKdm9pZCBCb29rOjphc3NpZ24gKHN0cmluZyBib29rVGl0bGUsIHN0cmluZyBib29rQXV0aG9yLCBpbnQgYm9va0RhdGUsIGZsb2F0IGJvb2tQcmljZSkgewogICAgICAgICAgICB0aXRsZSA9IGJvb2tUaXRsZTsKICAgICAgICAgICAgYXV0aG9yID0gYm9va0F1dGhvcjsKICAgICAgICAgICBjb3B5UmlnaHRZZWFyID0gYm9va0RhdGU7CiAgICAgICAgICAgIHByaWNlID0gYm9va1ByaWNlOyAgICAKfQoKLy8gdGhpcyBtZW1iZXIgZnVuY3Rpb24gaXMgYSAiZ2V0dGVyIiB0aGF0IHdpbGwgcmV0cmlldmUgdGhhdCBib29rIHRpdGxlIHZhbHVlCnN0cmluZyBCb29rOjpnZXRUaXRsZSgpIHsKICAgICAgICAgICAgcmV0dXJuIHRpdGxlOwp9CgovLyB0aGlzIG1lbWJlciBmdW5jdGlvbiBpcyBhICJnZXR0ZXIiIHRoYXQgd2lsbCByZXRyaWV2ZSB0aGUgcHJpbWFyeSBib29rIGF1dGhvciB2YWx1ZQpzdHJpbmcgQm9vazo6Z2V0QXV0aG9yKCkgewogICAgICAgICAgICByZXR1cm4gYXV0aG9yOwp9CgovLyB0aGlzIG1lbWJlciBmdW5jdGlvbiBpcyBhICJnZXR0ZXIiIHRoYXQgd2lsbCByZXRyaWV2ZSB0aGUgeWVhciB0aGUgYm9vayB3YXMgY29weXJpZ2h0ZWQKaW50IEJvb2s6OmdldENvcHlSaWdodFllYXIoKSB7CiAgICAgICAgICAgIHJldHVybiBjb3B5UmlnaHRZZWFyOwp9CgovLyB0aGlzIG1lbWJlciBmdW5jdGlvbiBpcyBhICJnZXR0ZXIiIHRoYXQgd2lsbCByZXRyaWV2ZSB0aGUgbGlzdCBwcmljZSBvZiB0aGUgYm9vawpmbG9hdCBCb29rOjpnZXRQcmljZSgpIHsKICAgICAgICAgICAgICByZXR1cm4gcHJpY2U7Cn0KCgoKaW50IG1haW4oKQp7CgogICAgICBjb3V0IDw8ICJIZXJlIGFyZSBzb21lIG9mIG15IGZhdm9yaXRlIGJvb2tzIC4uLlxuIiA8PCBlbmRsOwoKICAgICAvLyBTZXQgdXAgc3BhY2UgdG8gY3JlYXRlIDUgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcyBCb29rIHRvIHVzZSB3aXRoIG91ciBjb25zdHJ1Y3RvcgogICAgICBCb29rIGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3OwoKICAgICAgLy8gVXNlIG91ciBjb25zdHJ1Y3RvciB0byBjcmVhdGUgdGhlIGZpcnN0IGJvb2ssIHJlcGxhY2UgbXkgYm9vayBiZWxvdyB3aXRoIGluZm8gb24geW91ciBmYXZvcml0ZSBib29rLCB1c2UgYjEKICAgICAgYjEuYXNzaWduICgiSGFycnkgUG90dGVyIGFuZCB0aGUgU29yY2VyZXJzIFN0b25lIiwgIkouSy4gUm93bGluZyIsIDE5OTcsIDM1LjIzKTsKCiAgICAgIGNvdXQgPDwgYjEuZ2V0VGl0bGUoKSA8PCAiIGF1dGhvcmVkIGJ5ICIgPDwgYjEuZ2V0QXV0aG9yKCkgPDwgIiBpbiB0aGUgeWVhciAiIDw8IGIxLmdldENvcHlSaWdodFllYXIoKSA8PCBlbmRsOwogICAgICBjb3V0IDw8ICJUaGUgcHJpY2Ugb2YgdGhpcyBib29rIGlzOiAgJCIgPDwgYjEuZ2V0UHJpY2UoKSA8PCBlbmRsOwogICAgICBjb3V0IDw8ICJcbiIgPDwgZW5kbDsKCiAgICAgIC8vIFVzZSB0aGUgY29uc3RydWN0b3IgYWdhaW4gdG8gY3JlYXRlIGFub3RoZXIgYm9vaywgYWdhaW4sIHJlcGxhY2luZyBteSBib29rIGJlbG93IHdpdGggb25lIHlvdXIgZmF2b3JpdGUgYm9va3MsIHVzZSBiMgogICAgICBiMi5hc3NpZ24gKCJIYXJyeSBQb3R0ZXIgYW5kIHRoZSBDdXJzZWQgQ2hpbGQiLCAiSi5LLiBSb3dsaW5nIiwgMjAxNiwgMzUuOTkpOwoKICAgICAgY291dCA8PCBiMi5nZXRUaXRsZSgpIDw8ICIgYXV0aG9yZWQgYnkgIiA8PCBiMi5nZXRBdXRob3IoKSA8PCAiIGluIHRoZSB5ZWFyICIgPDwgYjIuZ2V0Q29weVJpZ2h0WWVhcigpIDw8IGVuZGw7CiAgICAgIGNvdXQgPDwgIlRoZSBwcmljZSBvZiB0aGlzIGJvb2sgaXM6ICAkIiA8PCBiMi5nZXRQcmljZSgpIDw8IGVuZGw7CiAgICAgIGNvdXQgPDwgIlxuIiA8PCBlbmRsOwoKICAgICAvLyB1c2UgY29uc3RydWN0b3IgKGl0cyBjYWxsZWQgYXNzaWduKSBhZ2FpbiB0byBjcmVhdGUgYW5kIHRoZW4gcHJpbnQgaW5mb3JtYXRpb24gYWJvdXQgYm9vayAzLCBhbm90aGVyIGZhdm9yaXRlIGJvb2sgb2YgeW91cnMgLi4uIHJlbWVtYmVyIHRvIHVzZSBiMwogICAgIAogICAgIGIzLmFzc2lnbiAoIkhhcnJ5IFBvdHRlciBhbmQgdGhlIENoYW1iZXIgb2YgU2VjcmV0cyIsICJKLksuIFJvd2xpbmciLCAxOTk4LCAzNy4yMyk7Cgpjb3V0IDw8IGIzLmdldFRpdGxlKCkgPDwgIiBhdXRob3JlZCBieSAiIDw8IGIzLmdldEF1dGhvcigpIDw8ICIgaW4gdGhlIHllYXIgIiA8PCBiMy5nZXRDb3B5UmlnaHRZZWFyKCkgPDwgZW5kbDsKY291dCA8PCAiVGhlIHByaWNlIG9mIHRoaXMgYm9vayBpczogICQiIDw8IGIzLmdldFByaWNlKCkgPDwgZW5kbDsKCiAgICAgIC8vIHVzZSBjb25zdHJ1Y3RvciBhZ2FpbiB0byBjcmVhdGUgYW5kIHRoZW4gcHJpbnQgaW5mb3JtYXRpb24gYWJvdXQgYm9vayA0LCB5b3VyIGZvdXJ0aCBmYXZvcml0ZSBib29rIC4uLiByZW1lbWJlciB0byB1c2UgYjQKICAgICAgCiAgICAgIGI0LmFzc2lnbiAoIkxvcmQgb2YgdGhlIFJpbmdzIiwgIkouUi5SIFRvbGtpZW4iLCAxOTU0LCAxNy4wMCk7Cgpjb3V0IDw8IGI0LmdldFRpdGxlKCkgPDwgIiBhdXRob3JlZCBieSAiIDw8IGI0LmdldEF1dGhvcigpIDw8ICIgaW4gdGhlIHllYXIgIiA8PCBiNC5nZXRDb3B5UmlnaHRZZWFyKCkgPDwgZW5kbDsKY291dCA8PCAiVGhlIHByaWNlIG9mIHRoaXMgYm9vayBpczogICQiIDw8IGI0LmdldFByaWNlKCkgPDwgZW5kbDsKCiAgICAgIC8vIHVzZSBjb25zdHJ1Y3RvciBhZ2FpbiB0byBjcmVhdGUgYW5kIHRoZW4gcHJpbnQgaW5mb3JtYXRpb24gYWJvdXQgYm9vayA1LCB5b3VyIGZpZnRoIGZhdm9yaXRlIGJvb2sgLi4uIHJlbWVtYmVyIHRvIHVzZSBiNQoKCSAgYjUuYXNzaWduICgiSGFycnkgUG90dGVyIGFuZCB0aGUgT3JkZXIgb2YgdGhlIFBoZW9uaXgiLCAiSi5LLiBSb3dsaW5nIiwgMjAwMywgMzQuOTkpOwoKY291dCA8PCBiNS5nZXRUaXRsZSgpIDw8ICIgYXV0aG9yZWQgYnkgIiA8PCBiNS5nZXRBdXRob3IoKSA8PCAiIGluIHRoZSB5ZWFyICIgPDwgYjUuZ2V0Q29weVJpZ2h0WWVhcigpIDw8IGVuZGw7CmNvdXQgPDwgIlRoZSBwcmljZSBvZiB0aGlzIGJvb2sgaXM6ICAkIiA8PCBiNS5nZXRQcmljZSgpIDw8IGVuZGw7CgoJIC8vIEV4dHJhIEJvb2sgZW50aXJlcwoKCSAgYjYuYXNzaWduICgiSGFycnkgUG90dGVyIGFuZCB0aGUgR29ibGV0IG9mIEZpcmUiLCAiSi5LLiBSb3dsaW5nIiwgMjAwMCwgMzEuOTkpOwoKY291dCA8PCBiNi5nZXRUaXRsZSgpIDw8ICIgYXV0aG9yZWQgYnkgIiA8PCBiNi5nZXRBdXRob3IoKSA8PCAiIGluIHRoZSB5ZWFyICIgPDwgYjYuZ2V0Q29weVJpZ2h0WWVhcigpIDw8IGVuZGw7CmNvdXQgPDwgIlRoZSBwcmljZSBvZiB0aGlzIGJvb2sgaXM6ICAkIiA8PCBiNi5nZXRQcmljZSgpIDw8IGVuZGw7CgoKICAgICAgcmV0dXJuICgwKTsKfQo=