#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 , 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 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;
// 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 " << b1.getType ( ) << 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 ( "C++ - The Complete Reference" , "Herbert Schildt" , 2003 , 52.99 , "Hardcover" , 222 ) ;
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 " << b2.getType ( ) << 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
// use constructor again to create and then print information about book 4, your fourth favorite book ... remember to use b4
// use constructor again to create and then print information about book 5, your fifth favorite book ... remember to use b5
return ( 0 ) ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIGNsYXNzIEJvb2sKLy8gd2l0aCB0aHJlZSBwcml2YXRlIGRhdGEgZmllbGRzOiBib29rIHRpdGxlLCBhdXRob3IsIGNvcHlyaWdodCwgYW5kIHByaWNlCi8vIGZvdXIgcHVibGljIG1ldGhvZHMgdG8gcmV0cmlldmUgZmllbGRzIChjYWxsZWQgImdldHRlcnMiKQovLyBhbmQgb25lIHB1YmxpYyBub24tZGVmYXVsdCBjb25zdHJ1Y3RvcgoKY2xhc3MgQm9vayB7CgogIHB1YmxpYzoKICAgICAKICAgICAgLy8gbWVtYmVyIGZ1bmN0aW9uIHByb3RvdHlwZXMKICAgICAgdm9pZCBhc3NpZ24gKHN0cmluZywgc3RyaW5nLCBpbnQsIGZsb2F0LCBzdHJpbmcsIGludCk7ICAgLy8gdGhpcyBpcyB5b3VyIGNvbnN0cnVjdG9yCiAgICAgIHN0cmluZyBnZXRUaXRsZSgpOwogICAgICBzdHJpbmcgZ2V0QXV0aG9yKCk7CiAgICAgIGludCAgICBnZXRDb3B5UmlnaHRZZWFyKCk7CiAgICAgIGZsb2F0ICBnZXRQcmljZSgpOwoJICBzdHJpbmcgZ2V0VHlwZSgpOwoJICBpbnQgZ2V0UGFnZXMoKTsKICAKCiAgcHJpdmF0ZToKCiAgICAgIC8vIGRhdGEgbWVtYmVycwogICAgICBzdHJpbmcgdGl0bGU7CiAgICAgIHN0cmluZyBhdXRob3I7CiAgICAgIGludCAgICBjb3B5UmlnaHRZZWFyOwogICAgICBmbG9hdCAgcHJpY2U7CgkgIHN0cmluZyB0eXBlOwoJICBpbnQgcGFnZXM7Cn07CgoKLy8gdGhlc2UgYXJlIHRoZSBhY3R1YWwgbWVtYmVyIGZ1bmN0aW9ucwoKLy8gdGhpcyBtZW1iZXIgZnVuY3Rpb24gaXMgYSAiY29uc3RydWN0b3IiIHRoYXQgd2lsbCBjcmVhdGUgYSBuZXcgYm9vawp2b2lkIEJvb2s6OmFzc2lnbiAoc3RyaW5nIGJvb2tUaXRsZSwgc3RyaW5nIGJvb2tBdXRob3IsIGludCBib29rRGF0ZSwgZmxvYXQgYm9va1ByaWNlLCBzdHJpbmcgYm9va1R5cGUsIGludCBib29rUGFnZXMpIHsKICAgICAgICAgICAgdGl0bGUgPSBib29rVGl0bGU7CiAgICAgICAgICAgIGF1dGhvciA9IGJvb2tBdXRob3I7CiAgICAgICAgICAgY29weVJpZ2h0WWVhciA9IGJvb2tEYXRlOwogICAgICAgICAgICBwcmljZSA9IGJvb2tQcmljZTsgICAgCgkgICAJdHlwZSA9IGJvb2tUeXBlOwoJCQlwYWdlcyA9IGJvb2tQYWdlczsKfQoKLy8gdGhpcyBtZW1iZXIgZnVuY3Rpb24gaXMgYSAiZ2V0dGVyIiB0aGF0IHdpbGwgcmV0cmlldmUgdGhhdCBib29rIHRpdGxlIHZhbHVlCnN0cmluZyBCb29rOjpnZXRUaXRsZSgpIHsKICAgICAgICAgICAgcmV0dXJuIHRpdGxlOwp9CgovLyB0aGlzIG1lbWJlciBmdW5jdGlvbiBpcyBhICJnZXR0ZXIiIHRoYXQgd2lsbCByZXRyaWV2ZSB0aGUgcHJpbWFyeSBib29rIGF1dGhvciB2YWx1ZQpzdHJpbmcgQm9vazo6Z2V0QXV0aG9yKCkgewogICAgICAgICAgICByZXR1cm4gYXV0aG9yOwp9CgovLyB0aGlzIG1lbWJlciBmdW5jdGlvbiBpcyBhICJnZXR0ZXIiIHRoYXQgd2lsbCByZXRyaWV2ZSB0aGUgeWVhciB0aGUgYm9vayB3YXMgY29weXJpZ2h0ZWQKaW50IEJvb2s6OmdldENvcHlSaWdodFllYXIoKSB7CiAgICAgICAgICAgIHJldHVybiBjb3B5UmlnaHRZZWFyOwp9CgovLyB0aGlzIG1lbWJlciBmdW5jdGlvbiBpcyBhICJnZXR0ZXIiIHRoYXQgd2lsbCByZXRyaWV2ZSB0aGUgbGlzdCBwcmljZSBvZiB0aGUgYm9vawpmbG9hdCBCb29rOjpnZXRQcmljZSgpIHsKICAgICAgICAgICAgICByZXR1cm4gcHJpY2U7Cn0KCi8vIHRoaXMgbWVtYmVyIGZ1bmN0aW9uIGlzIGEgImdldHRlciIgdGhhdCB3aWxsIHJldHJpZXZlIHRoZSB0eXBlIG9mIGJvb2ssIGhhcmRjb3ZlciBvciBzb2Z0CnN0cmluZyBCb29rOjpnZXRUeXBlKCkgewogICAgICAgICAgICAgIHJldHVybiB0eXBlOwp9CgovLyB0aGlzIG1lbWJlciBmdW5jdGlvbiBpcyBhICJnZXR0ZXIiIHRoYXQgd2lsbCByZXRyaWV2ZSB0aGUgbnVtYmVyIG9mIHBhZ2VzIGluIHRoZSBib29rCmludCBCb29rOjpnZXRQYWdlcygpIHsKICAgICAgICAgICAgICByZXR1cm4gcHJpY2U7Cn0KCmludCBtYWluKCkKewoKICAgICAgY291dCA8PCAiSGVyZSBhcmUgc29tZSBvZiBteSBmYXZvcml0ZSBib29rcyAuLi5cbiIgPDwgZW5kbDsKCiAgICAgLy8gU2V0IHVwIHNwYWNlIHRvIGNyZWF0ZSA1IGluc3RhbmNlcyBvZiB0aGUgY2xhc3MgQm9vayB0byB1c2Ugd2l0aCBvdXIgY29uc3RydWN0b3IKICAgICAgQm9vayBiMSwgYjIsIGIzLCBiNCwgYjU7CgogICAgICAvLyBVc2Ugb3VyIGNvbnN0cnVjdG9yIHRvIGNyZWF0ZSB0aGUgZmlyc3QgYm9vaywgcmVwbGFjZSBteSBib29rIGJlbG93IHdpdGggaW5mbyBvbiB5b3VyIGZhdm9yaXRlIGJvb2ssIHVzZSBiMQogICAgIGIxLmFzc2lnbiAoIlRoZSBBcnQgb2YgV2FyIiwgIlN1biBUenUiLCAxOTk4LCAyOS45OSwgIkhhcmRjb3ZlciIsIDIzMik7CgogICAgICBjb3V0IDw8IGIxLmdldFRpdGxlKCkgPDwgIiBhdXRob3JlZCBieSAiIDw8IGIxLmdldEF1dGhvcigpIDw8ICIgaW4gdGhlIHllYXIgIiA8PCBiMS5nZXRDb3B5UmlnaHRZZWFyKCkgPDwgZW5kbDsKICAgICAgY291dCA8PCAiVGhlIHByaWNlIG9mIHRoaXMgYm9vayBpczogICQiIDw8IGIxLmdldFByaWNlKCkgPDwgZW5kbDsKCSAgY291dCA8PCAiVGhlIHR5cGUgb2YgYm9vayBpcyAiICA8PCBiMS5nZXRUeXBlKCkgPDwgZW5kbDsKCSAgY291dCA8PCAiVGhlIGJvb2sgaGFzICIgPDwgYjEuZ2V0UGFnZXMoKSA8PCAiIHBhZ2VzLiIgPDwgZW5kbDsKICAgICAgY291dCA8PCAiXG4iIDw8IGVuZGw7CgogICAgICAvLyBVc2UgdGhlIGNvbnN0cnVjdG9yIGFnYWluIHRvIGNyZWF0ZSBhbm90aGVyIGJvb2ssIGFnYWluLCByZXBsYWNpbmcgbXkgYm9vayBiZWxvdyB3aXRoIG9uZSB5b3VyIGZhdm9yaXRlIGJvb2tzLCB1c2UgYjIKICAgICAgYjIuYXNzaWduICgiQysrIC0gVGhlIENvbXBsZXRlIFJlZmVyZW5jZSIsICJIZXJiZXJ0IFNjaGlsZHQiLCAyMDAzLCA1Mi45OSwgIkhhcmRjb3ZlciIsIDIyMik7CgogICAgICBjb3V0IDw8IGIyLmdldFRpdGxlKCkgPDwgIiBhdXRob3JlZCBieSAiIDw8IGIyLmdldEF1dGhvcigpIDw8ICIgaW4gdGhlIHllYXIgIiA8PCBiMi5nZXRDb3B5UmlnaHRZZWFyKCkgPDwgZW5kbDsKICAgICAgY291dCA8PCAiVGhlIHByaWNlIG9mIHRoaXMgYm9vayBpczogICQiIDw8IGIyLmdldFByaWNlKCkgPDwgZW5kbDsKCSAgY291dCA8PCAiVGhlIHR5cGUgb2YgYm9vayBpcyAiICA8PCBiMi5nZXRUeXBlKCkgPDwgZW5kbDsKCSAgY291dCA8PCAiVGhlIGJvb2sgaGFzICIgPDwgYjIuZ2V0UGFnZXMoKSA8PCAiIHBhZ2VzLiIgPDwgZW5kbDsKICAgICAgY291dCA8PCAiXG4iIDw8IGVuZGw7CgogICAgIC8vIHVzZSBjb25zdHJ1Y3RvciAoaXRzIGNhbGxlZCBhc3NpZ24pIGFnYWluIHRvIGNyZWF0ZSBhbmQgdGhlbiBwcmludCBpbmZvcm1hdGlvbiBhYm91dCBib29rIDMsIGFub3RoZXIgZmF2b3JpdGUgYm9vayBvZiB5b3VycyAuLi4gcmVtZW1iZXIgdG8gdXNlIGIzIAoKICAgICAgLy8gdXNlIGNvbnN0cnVjdG9yIGFnYWluIHRvIGNyZWF0ZSBhbmQgdGhlbiBwcmludCBpbmZvcm1hdGlvbiBhYm91dCBib29rIDQsIHlvdXIgZm91cnRoIGZhdm9yaXRlIGJvb2sgLi4uIHJlbWVtYmVyIHRvIHVzZSBiNAoKICAgICAgLy8gdXNlIGNvbnN0cnVjdG9yIGFnYWluIHRvIGNyZWF0ZSBhbmQgdGhlbiBwcmludCBpbmZvcm1hdGlvbiBhYm91dCBib29rIDUsIHlvdXIgZmlmdGggZmF2b3JpdGUgYm9vayAuLi4gcmVtZW1iZXIgdG8gdXNlIGI1CgogICAgICByZXR1cm4gKDApOwp9Cg==