#include // std::string #include // std::cout #include // std::stringstream #include #include using namespace std; class Relation { string name; public: Relation() { } Relation(string str) { name = str; } void setRelation(string str) { name = str; } string getName() { return name; } }; class Attribute { string name; public: Attribute(string str) { name = str; } void setAttribute(string str) { name = str; } string getAttribute() { return name; } }; class Union { string Un1; string Un2; public: Union (string s1, string s2) { Un1 = s1; Un2 = s2; } string getUnion() { return "Union of " + Un1 + " and " + Un2; } }; class Product { string Pr1; string Pr2; public: Product(string s1, string s2) { Pr1 = s1; Pr2 = s2; } string getProduct() { return "Product of " + Pr1 + " and " + Pr2; } }; class Difference { string D1; string D2; public: Difference(string s1, string s2) { D1 = s1; D2 = s2; } string getDifference() { return "Difference of " + D1 + " and " + D2; } }; class Renaming { string newName; string oldName; public: Renaming(string s1, string s2) { newName = s1; oldName = s2; } string doRename() { return "Renaming " + oldName + " to " + newName; } }; class Projection { string newName; string oldName; public: Projection(string s1, string s2) { newName = s1; oldName = s2; } string doProjection() { return "Projecting " + oldName + " onto " + newName; } }; class Operand { string op; public: Operand() { } Operand(string str) { op = str; } void setOperand(string str) { op = str; } string getOperand() { return op; } }; class Op { string op; public: Op() { } Op(string str) { op = str; } void setOp(string str) { op = str; } string getOp() { return op; } }; class Comparison { Op op; Operand operand1; Operand operand2; public: Comparison(string str1, string str2, string str3) { operand1.setOperand(str1); op.setOp(str2); operand2.setOperand(str3); } void setComparison(string str1, string str2, string str3) { operand1.setOperand(str1); op.setOp(str2); operand2.setOperand(str3); } string getComparison() { return operand1.getOperand() + " " + op.getOp() + " " + operand2.getOperand(); } }; class Conjunction { string conj; public: Conjunction(string str) { conj = str; } void setConjunction(string str) { conj = str; } string getConjunction() { return conj; } }; class Condition { string cond; public: Condition() { } Condition(string str) { cond = str; } void setCondition(string str) { cond = str; } string getCondition() { return cond; } }; class Selection { string select; public: Selection(string str) { select = str; } string getSelection() { return select; } }; class Expression { string exp; public: Expression() { } Expression(string str) { exp = str; } void setExpression(string str) { exp = str; } string getExpression() { return exp; } };