Website Summary Files Commits Branches @commit @diff @stats
path: root / GetAndSet
diff options
context:
space:
mode:
1 files changed, 73 insertions, 0 deletions
-rw-r--r--GetAndSet/Beer.hpp73
diff --git a/GetAndSet/Beer.hpp b/GetAndSet/Beer.hpp
new file mode 100644
index 0000000..9394d14
--- /dev/null
+++ b/GetAndSet/Beer.hpp
@@ -0,0 +1,73 @@
+using namespace std;
+
+const int MAXBEERML = 500;
+const int MINBEERML = 330;
+
+class Beer
+{
+public:
+ Beer(const char* mark, int ml);
+
+ void printAddress();
+
+ void printBeer();
+ void setMl(int ml);
+
+ void setMark(const char* mark);
+
+ int getMl() const; // const сложен тук означава, че метода не променя член-данните на класа.Съответно можем да го викаме от константни обекти
+
+ const char* getMark() const;
+
+private:
+
+ char mark[20]; //Стринг с максимална дължина 19, понеже 1 символ ни трябва за '\0'
+ int ml;
+};
+
+Beer::Beer(const char* mark, int ml)
+{
+ setMark(mark);
+ setMl(ml);
+}
+void Beer::printAddress()
+{
+ cout << this << endl;
+}
+void Beer::printBeer()
+{
+ cout << mark << " " << ml << endl;
+}
+void Beer::setMl(int ml)
+{
+ if (ml < MINBEERML)
+ ml = MINBEERML;
+ else if (ml > MAXBEERML)
+ ml = MAXBEERML;
+ this->ml = ml;
+}
+void Beer::setMark(const char* mark)
+{
+ int len = strlen(mark);
+
+ if (len >= 20 || len == 0) //ако ни дадат невалидна марка на бирата (стринг с дължина >= 20 )
+ this->mark[0] = '\0'; //правим марката да е празния стринг
+ else
+ strcpy(this->mark, mark);
+}
+int Beer::getMl() const
+{
+ return ml;
+}
+const char* Beer::getMark() const
+{
+ return mark;
+}
+
+
+int main()
+{
+ Beer t("Zagorka", 5); // 5 е невалидно количество бира. Но в конструктора извикваме setML, която се грижи в променливата да не попаднат невалидни данни.
+ t.setMl(330);
+ t.PrintBeer();
+}