// Attached: Lab_9
// ===========================================================
// File: Lab9_Combined.cpp
// ===========================================================
// Programmer: Elaine Torrez
// Class: CMPR 121
// ===========================================================
#include <iostream>
#include <string>
using namespace std;
// ===========================================================
// Abstract Base Class: Art
// ===========================================================
class Art
{
protected:
string id;
string title;
string artist;
string genre;
int year;
double price;
public:
Art(string i, string t, string a, string g, int y, double p)
{
id = i;
title = t;
artist = a;
genre = g;
year = y;
price = p;
}
virtual ~Art()
{
}
virtual void showArt() = 0;
};
// ===========================================================
// Derived Class: Painting
// ===========================================================
class Painting : public Art
{
private:
string paintMedium;
public:
Painting(string i, string t, string a, string g, int y, double p, string pm)
: Art(i, t, a, g, y, p)
{
paintMedium = pm;
}
~Painting()
{
}
void showArt()
{
cout << "ID: " << id << endl;
cout << "Title: " << title << endl;
cout << "Artist: " << artist << endl;
cout << "Paint Medium: " << paintMedium << endl;
cout << "Genre: " << genre << endl;
cout << "Year: " << year << endl;
cout << "Price: $" << price << endl;
}
};
// ===========================================================
// Derived Class: Sculpture
// ===========================================================
class Sculpture : public Art
{
private:
string material;
public:
Sculpture(string i, string t, string a, string g, int y, double p, string m)
: Art(i, t, a, g, y, p)
{
material = m;
}
~Sculpture()
{
}
void showArt()
{
cout << "ID: " << id << endl;
cout << "Title: " << title << endl;
cout << "Artist: " << artist << endl;
cout << "Material: " << material << endl;
cout << "Genre: " << genre << endl;
cout << "Year: " << year << endl;
cout << "Price: $" << price << endl;
}
};
// ===========================================================
// Function Prototype
// ===========================================================
void displayArt(Art &art);
// ===========================================================
// displayArt Function
// ===========================================================
void displayArt(Art &art)
{
art.showArt();
}
// ===========================================================
// main
// ===========================================================
int main()
{
Painting a1("12345", "The Kiss", "Gustav Klimt", "Symbolist", 1908, 2500, "Oil");
Sculpture a2("54321", "The Thinker", "Rodin", "Impressionism", 1880, 2000, "Bronze");
cout << "==========================" << endl;
displayArt(a1);
displayArt(a2);
cout << "=====================================" << endl;
return 0;
}
Ly8gQXR0YWNoZWQ6IExhYl85Ci8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIEZpbGU6IExhYjlfQ29tYmluZWQuY3BwCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIFByb2dyYW1tZXI6IEVsYWluZSBUb3JyZXoKLy8gQ2xhc3M6IENNUFIgMTIxCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxzdHJpbmc+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBBYnN0cmFjdCBCYXNlIENsYXNzOiBBcnQKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KY2xhc3MgQXJ0CnsKcHJvdGVjdGVkOgogICAgc3RyaW5nIGlkOwogICAgc3RyaW5nIHRpdGxlOwogICAgc3RyaW5nIGFydGlzdDsKICAgIHN0cmluZyBnZW5yZTsKICAgIGludCB5ZWFyOwogICAgZG91YmxlIHByaWNlOwoKcHVibGljOgogICAgQXJ0KHN0cmluZyBpLCBzdHJpbmcgdCwgc3RyaW5nIGEsIHN0cmluZyBnLCBpbnQgeSwgZG91YmxlIHApCiAgICB7CiAgICAgICAgaWQgPSBpOwogICAgICAgIHRpdGxlID0gdDsKICAgICAgICBhcnRpc3QgPSBhOwogICAgICAgIGdlbnJlID0gZzsKICAgICAgICB5ZWFyID0geTsKICAgICAgICBwcmljZSA9IHA7CiAgICB9CgogICAgdmlydHVhbCB+QXJ0KCkKICAgIHsKICAgIH0KCiAgICB2aXJ0dWFsIHZvaWQgc2hvd0FydCgpID0gMDsKfTsKCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIERlcml2ZWQgQ2xhc3M6IFBhaW50aW5nCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmNsYXNzIFBhaW50aW5nIDogcHVibGljIEFydAp7CnByaXZhdGU6CiAgICBzdHJpbmcgcGFpbnRNZWRpdW07CgpwdWJsaWM6CiAgICBQYWludGluZyhzdHJpbmcgaSwgc3RyaW5nIHQsIHN0cmluZyBhLCBzdHJpbmcgZywgaW50IHksIGRvdWJsZSBwLCBzdHJpbmcgcG0pCiAgICAgICAgOiBBcnQoaSwgdCwgYSwgZywgeSwgcCkKICAgIHsKICAgICAgICBwYWludE1lZGl1bSA9IHBtOwogICAgfQoKICAgIH5QYWludGluZygpCiAgICB7CiAgICB9CgogICAgdm9pZCBzaG93QXJ0KCkKICAgIHsKICAgICAgICBjb3V0IDw8ICJJRDogIiA8PCBpZCA8PCBlbmRsOwogICAgICAgIGNvdXQgPDwgIlRpdGxlOiAiIDw8IHRpdGxlIDw8IGVuZGw7CiAgICAgICAgY291dCA8PCAiQXJ0aXN0OiAiIDw8IGFydGlzdCA8PCBlbmRsOwogICAgICAgIGNvdXQgPDwgIlBhaW50IE1lZGl1bTogIiA8PCBwYWludE1lZGl1bSA8PCBlbmRsOwogICAgICAgIGNvdXQgPDwgIkdlbnJlOiAiIDw8IGdlbnJlIDw8IGVuZGw7CiAgICAgICAgY291dCA8PCAiWWVhcjogIiA8PCB5ZWFyIDw8IGVuZGw7CiAgICAgICAgY291dCA8PCAiUHJpY2U6ICQiIDw8IHByaWNlIDw8IGVuZGw7CiAgICB9Cn07CgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBEZXJpdmVkIENsYXNzOiBTY3VscHR1cmUKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KY2xhc3MgU2N1bHB0dXJlIDogcHVibGljIEFydAp7CnByaXZhdGU6CiAgICBzdHJpbmcgbWF0ZXJpYWw7CgpwdWJsaWM6CiAgICBTY3VscHR1cmUoc3RyaW5nIGksIHN0cmluZyB0LCBzdHJpbmcgYSwgc3RyaW5nIGcsIGludCB5LCBkb3VibGUgcCwgc3RyaW5nIG0pCiAgICAgICAgOiBBcnQoaSwgdCwgYSwgZywgeSwgcCkKICAgIHsKICAgICAgICBtYXRlcmlhbCA9IG07CiAgICB9CgogICAgflNjdWxwdHVyZSgpCiAgICB7CiAgICB9CgogICAgdm9pZCBzaG93QXJ0KCkKICAgIHsKICAgICAgICBjb3V0IDw8ICJJRDogIiA8PCBpZCA8PCBlbmRsOwogICAgICAgIGNvdXQgPDwgIlRpdGxlOiAiIDw8IHRpdGxlIDw8IGVuZGw7CiAgICAgICAgY291dCA8PCAiQXJ0aXN0OiAiIDw8IGFydGlzdCA8PCBlbmRsOwogICAgICAgIGNvdXQgPDwgIk1hdGVyaWFsOiAiIDw8IG1hdGVyaWFsIDw8IGVuZGw7CiAgICAgICAgY291dCA8PCAiR2VucmU6ICIgPDwgZ2VucmUgPDwgZW5kbDsKICAgICAgICBjb3V0IDw8ICJZZWFyOiAiIDw8IHllYXIgPDwgZW5kbDsKICAgICAgICBjb3V0IDw8ICJQcmljZTogJCIgPDwgcHJpY2UgPDwgZW5kbDsKICAgIH0KfTsKCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIEZ1bmN0aW9uIFByb3RvdHlwZQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQp2b2lkIGRpc3BsYXlBcnQoQXJ0ICZhcnQpOwoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gZGlzcGxheUFydCBGdW5jdGlvbgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQp2b2lkIGRpc3BsYXlBcnQoQXJ0ICZhcnQpCnsKICAgIGFydC5zaG93QXJ0KCk7Cn0KCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIG1haW4KLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KaW50IG1haW4oKQp7CiAgICBQYWludGluZyBhMSgiMTIzNDUiLCAiVGhlIEtpc3MiLCAiR3VzdGF2IEtsaW10IiwgIlN5bWJvbGlzdCIsIDE5MDgsIDI1MDAsICJPaWwiKTsKICAgIFNjdWxwdHVyZSBhMigiNTQzMjEiLCAiVGhlIFRoaW5rZXIiLCAiUm9kaW4iLCAiSW1wcmVzc2lvbmlzbSIsIDE4ODAsIDIwMDAsICJCcm9uemUiKTsKCiAgICBjb3V0IDw8ICI9PT09PT09PT09PT09PT09PT09PT09PT09PSIgPDwgZW5kbDsKICAgIGRpc3BsYXlBcnQoYTEpOwogICAgZGlzcGxheUFydChhMik7CiAgICBjb3V0IDw8ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IiA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9