#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
// Updated assign function to accept 7 arguments
void assign ( string, string, int , float , string, string, string) ; // this is your constructor
string getTitle( ) ;
string getAuthor( ) ;
int getCopyRightYear( ) ;
float getPrice( ) ;
string getISBN( ) ;
string getPublisher( ) ;
string getGenre( ) ;
private :
// core data members
string title;
string author;
int copyRightYear;
float price;
// additional data members
string isbn;
string publisher;
string genre;
} ;
// 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 bookISBN, string bookPublisher, string bookGenre) {
title = bookTitle;
author = bookAuthor;
copyRightYear = bookDate;
price = bookPrice;
isbn = bookISBN;
publisher = bookPublisher;
genre = bookGenre;
}
// 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 ISBN of the book
string Book:: getISBN ( ) {
return isbn;
}
// this member function is a "getter" that will retrieve the publisher of the book
string Book:: getPublisher ( ) {
return publisher;
}
// this member function is a "getter" that will retrieve the genre of the book
string Book:: getGenre ( ) {
return genre;
}
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 ( "Atomic Habits" , "James Clear" , 2018 , 21.99 , "9780735211292" , "Avery" , "Self-help" ) ;
b2.assign ( "Deep Work" , "Cal Newport" , 2016 , 18.50 , "9781455586691" , "Grand Central" , "Productivity" ) ;
b3.assign ( "The Alchemist" , "Paulo Coelho" , 1988 , 15.00 , "9780061122415" , "HarperOne" , "Fiction" ) ;
b4.assign ( "Educated" , "Tara Westover" , 2018 , 16.00 , "9780399590504" , "Random House" , "Memoir" ) ;
b5.assign ( "The Pragmatic Programmer" , "Andy Hunt" , 1999 , 42.00 , "9780201616224" , "Addison-Wesley" , "Technology" ) ;
// Function to print all book details
Book books[ ] = { b1, b2, b3, b4, b5} ;
for ( int i = 0 ; i < 5 ; i++ ) {
cout << books[ i] .getTitle ( ) << " authored by " << books[ i] .getAuthor ( )
<< " in the year " << books[ i] .getCopyRightYear ( ) << endl;
cout << "Price: $" << books[ i] .getPrice ( ) << endl;
cout << "ISBN: " << books[ i] .getISBN ( ) << endl;
cout << "Publisher: " << books[ i] .getPublisher ( ) << endl;
cout << "Genre: " << books[ i] .getGenre ( ) << endl;
cout << "\n " ;
}
return ( 0 ) ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIGNsYXNzIEJvb2sKLy8gd2l0aCB0aHJlZSBwcml2YXRlIGRhdGEgZmllbGRzOiBib29rIHRpdGxlLCBhdXRob3IsIGNvcHlyaWdodCwgYW5kIHByaWNlCi8vIGZvdXIgcHVibGljIG1ldGhvZHMgdG8gcmV0cmlldmUgZmllbGRzIChjYWxsZWQgImdldHRlcnMiKQovLyBhbmQgb25lIHB1YmxpYyBub24tZGVmYXVsdCBjb25zdHJ1Y3RvcgoKY2xhc3MgQm9vayB7CgogIHB1YmxpYzoKICAgICAKICAgICAgLy8gbWVtYmVyIGZ1bmN0aW9uIHByb3RvdHlwZXMKICAgICAgLy8gVXBkYXRlZCBhc3NpZ24gZnVuY3Rpb24gdG8gYWNjZXB0IDcgYXJndW1lbnRzCiAgICAgIHZvaWQgYXNzaWduIChzdHJpbmcsIHN0cmluZywgaW50LCBmbG9hdCwgc3RyaW5nLCBzdHJpbmcsIHN0cmluZyk7ICAgLy8gdGhpcyBpcyB5b3VyIGNvbnN0cnVjdG9yCiAgICAgIHN0cmluZyBnZXRUaXRsZSgpOwogICAgICBzdHJpbmcgZ2V0QXV0aG9yKCk7CiAgICAgIGludCAgICBnZXRDb3B5UmlnaHRZZWFyKCk7CiAgICAgIGZsb2F0ICBnZXRQcmljZSgpOwogICAgICBzdHJpbmcgZ2V0SVNCTigpOwogICAgICBzdHJpbmcgZ2V0UHVibGlzaGVyKCk7CiAgICAgIHN0cmluZyBnZXRHZW5yZSgpOwogIAoKICBwcml2YXRlOgoKICAgICAgLy8gY29yZSBkYXRhIG1lbWJlcnMKICAgICAgc3RyaW5nIHRpdGxlOwogICAgICBzdHJpbmcgYXV0aG9yOwogICAgICBpbnQgICAgY29weVJpZ2h0WWVhcjsKICAgICAgZmxvYXQgIHByaWNlOwogICAgICAKICAgICAgLy8gYWRkaXRpb25hbCBkYXRhIG1lbWJlcnMKICAgICAgc3RyaW5nIGlzYm47CiAgICAgIHN0cmluZyBwdWJsaXNoZXI7CiAgICAgIHN0cmluZyBnZW5yZTsKfTsKCgovLyB0aGVzZSBhcmUgdGhlIGFjdHVhbCBtZW1iZXIgZnVuY3Rpb25zCgovLyB0aGlzIG1lbWJlciBmdW5jdGlvbiBpcyBhICJjb25zdHJ1Y3RvciIgdGhhdCB3aWxsIGNyZWF0ZSBhIG5ldyBib29rCnZvaWQgQm9vazo6YXNzaWduIChzdHJpbmcgYm9va1RpdGxlLCBzdHJpbmcgYm9va0F1dGhvciwgaW50IGJvb2tEYXRlLCBmbG9hdCBib29rUHJpY2UsCiAgICAgICAgICAgICAgICAgICBzdHJpbmcgYm9va0lTQk4sIHN0cmluZyBib29rUHVibGlzaGVyLCBzdHJpbmcgYm9va0dlbnJlKSB7CiAgICAgICAgICAgIHRpdGxlID0gYm9va1RpdGxlOwogICAgICAgICAgICBhdXRob3IgPSBib29rQXV0aG9yOwogICAgICAgICAgICBjb3B5UmlnaHRZZWFyID0gYm9va0RhdGU7CiAgICAgICAgICAgIHByaWNlID0gYm9va1ByaWNlOwogICAgICAgICAgICBpc2JuID0gYm9va0lTQk47CiAgICAgICAgICAgIHB1Ymxpc2hlciA9IGJvb2tQdWJsaXNoZXI7CiAgICAgICAgICAgIGdlbnJlID0gYm9va0dlbnJlOwp9CgovLyB0aGlzIG1lbWJlciBmdW5jdGlvbiBpcyBhICJnZXR0ZXIiIHRoYXQgd2lsbCByZXRyaWV2ZSB0aGF0IGJvb2sgdGl0bGUgdmFsdWUKc3RyaW5nIEJvb2s6OmdldFRpdGxlKCkgewogICAgICAgICAgICByZXR1cm4gdGl0bGU7Cn0KCi8vIHRoaXMgbWVtYmVyIGZ1bmN0aW9uIGlzIGEgImdldHRlciIgdGhhdCB3aWxsIHJldHJpZXZlIHRoZSBwcmltYXJ5IGJvb2sgYXV0aG9yIHZhbHVlCnN0cmluZyBCb29rOjpnZXRBdXRob3IoKSB7CiAgICAgICAgICAgIHJldHVybiBhdXRob3I7Cn0KCi8vIHRoaXMgbWVtYmVyIGZ1bmN0aW9uIGlzIGEgImdldHRlciIgdGhhdCB3aWxsIHJldHJpZXZlIHRoZSB5ZWFyIHRoZSBib29rIHdhcyBjb3B5cmlnaHRlZAppbnQgQm9vazo6Z2V0Q29weVJpZ2h0WWVhcigpIHsKICAgICAgICAgICAgcmV0dXJuIGNvcHlSaWdodFllYXI7Cn0KCi8vIHRoaXMgbWVtYmVyIGZ1bmN0aW9uIGlzIGEgImdldHRlciIgdGhhdCB3aWxsIHJldHJpZXZlIHRoZSBsaXN0IHByaWNlIG9mIHRoZSBib29rCmZsb2F0IEJvb2s6OmdldFByaWNlKCkgewogICAgICAgICAgICAgIHJldHVybiBwcmljZTsKfQoKLy8gdGhpcyBtZW1iZXIgZnVuY3Rpb24gaXMgYSAiZ2V0dGVyIiB0aGF0IHdpbGwgcmV0cmlldmUgdGhlIElTQk4gb2YgdGhlIGJvb2sKc3RyaW5nIEJvb2s6OmdldElTQk4oKSB7CglyZXR1cm4gaXNibjsgCn0KCi8vIHRoaXMgbWVtYmVyIGZ1bmN0aW9uIGlzIGEgImdldHRlciIgdGhhdCB3aWxsIHJldHJpZXZlIHRoZSBwdWJsaXNoZXIgb2YgdGhlIGJvb2sKc3RyaW5nIEJvb2s6OmdldFB1Ymxpc2hlcigpIHsKCXJldHVybiBwdWJsaXNoZXI7IAp9CgovLyB0aGlzIG1lbWJlciBmdW5jdGlvbiBpcyBhICJnZXR0ZXIiIHRoYXQgd2lsbCByZXRyaWV2ZSB0aGUgZ2VucmUgb2YgdGhlIGJvb2sKc3RyaW5nIEJvb2s6OmdldEdlbnJlKCkgewoJcmV0dXJuIGdlbnJlOyAKfQoKaW50IG1haW4oKQp7CgogICAgICBjb3V0IDw8ICJIZXJlIGFyZSBzb21lIG9mIG15IGZhdm9yaXRlIGJvb2tzIC4uLlxuIiA8PCBlbmRsOwoKICAgICAvLyBTZXQgdXAgc3BhY2UgdG8gY3JlYXRlIDUgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcyBCb29rIHRvIHVzZSB3aXRoIG91ciBjb25zdHJ1Y3RvcgogICAgICBCb29rIGIxLCBiMiwgYjMsIGI0LCBiNTsKCiAgICAgIC8vIFVzZSBvdXIgY29uc3RydWN0b3IgdG8gY3JlYXRlIHRoZSBmaXJzdCBib29rLCByZXBsYWNlIG15IGJvb2sgYmVsb3cgd2l0aCBpbmZvIG9uIHlvdXIgZmF2b3JpdGUgYm9vaywgdXNlIGIxCiAgICAgIGIxLmFzc2lnbigiQXRvbWljIEhhYml0cyIsICJKYW1lcyBDbGVhciIsIDIwMTgsIDIxLjk5LCAiOTc4MDczNTIxMTI5MiIsICJBdmVyeSIsICJTZWxmLWhlbHAiKTsKICAgICAgYjIuYXNzaWduKCJEZWVwIFdvcmsiLCAiQ2FsIE5ld3BvcnQiLCAyMDE2LCAxOC41MCwgIjk3ODE0NTU1ODY2OTEiLCAiR3JhbmQgQ2VudHJhbCIsICJQcm9kdWN0aXZpdHkiKTsKICAgICAgYjMuYXNzaWduKCJUaGUgQWxjaGVtaXN0IiwgIlBhdWxvIENvZWxobyIsIDE5ODgsIDE1LjAwLCAiOTc4MDA2MTEyMjQxNSIsICJIYXJwZXJPbmUiLCAiRmljdGlvbiIpOwogICAgICBiNC5hc3NpZ24oIkVkdWNhdGVkIiwgIlRhcmEgV2VzdG92ZXIiLCAyMDE4LCAxNi4wMCwgIjk3ODAzOTk1OTA1MDQiLCAiUmFuZG9tIEhvdXNlIiwgIk1lbW9pciIpOwogICAgICBiNS5hc3NpZ24oIlRoZSBQcmFnbWF0aWMgUHJvZ3JhbW1lciIsICJBbmR5IEh1bnQiLCAxOTk5LCA0Mi4wMCwgIjk3ODAyMDE2MTYyMjQiLCAiQWRkaXNvbi1XZXNsZXkiLCAiVGVjaG5vbG9neSIpOwoKICAgIC8vIEZ1bmN0aW9uIHRvIHByaW50IGFsbCBib29rIGRldGFpbHMKICAgIEJvb2sgYm9va3NbXSA9IHtiMSwgYjIsIGIzLCBiNCwgYjV9OwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKICAgICAgICBjb3V0IDw8IGJvb2tzW2ldLmdldFRpdGxlKCkgPDwgIiBhdXRob3JlZCBieSAiIDw8IGJvb2tzW2ldLmdldEF1dGhvcigpCiAgICAgICAgICAgICA8PCAiIGluIHRoZSB5ZWFyICIgPDwgYm9va3NbaV0uZ2V0Q29weVJpZ2h0WWVhcigpIDw8IGVuZGw7CiAgICAgICAgY291dCA8PCAiUHJpY2U6ICQiIDw8IGJvb2tzW2ldLmdldFByaWNlKCkgPDwgZW5kbDsKICAgICAgICBjb3V0IDw8ICJJU0JOOiAiIDw8IGJvb2tzW2ldLmdldElTQk4oKSA8PCBlbmRsOwogICAgICAgIGNvdXQgPDwgIlB1Ymxpc2hlcjogIiA8PCBib29rc1tpXS5nZXRQdWJsaXNoZXIoKSA8PCBlbmRsOwogICAgICAgIGNvdXQgPDwgIkdlbnJlOiAiIDw8IGJvb2tzW2ldLmdldEdlbnJlKCkgPDwgZW5kbDsKICAgICAgICBjb3V0IDw8ICJcbiI7CiAgICB9CiAgICAgCgogICAgICByZXR1cm4gKDApOwp9Cg==