Website Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commit2da6050da425aa7238a045abe53331a781c3d9cc (patch)
Author
 Angel Dimitriev <angel_dimitriev@abv.bg>
2022-03-22 20:17:43 +0200
Committer
 GitHub <noreply@github.com>
2022-03-22 20:17:43 +0200
Files62f2ab16d582ea45421759227fa5f12b73d2f388
Object-oriented_programming_FMI-2da6050da425aa7238a045abe53331a781c3d9cc.tar
Object-oriented_programming_FMI-2da6050da425aa7238a045abe53331a781c3d9cc.tar.gz
Object-oriented_programming_FMI-2da6050da425aa7238a045abe53331a781c3d9cc.zip
Parent60d2a40b31393a24e3f4327d182098248b2c6108 (diff)
Create README.md
1 files changed, 101 insertions, 0 deletions
-rw-r--r--Sem. 05/README.md101
diff --git a/Sem. 05/README.md b/Sem. 05/README.md
new file mode 100644
index 0000000..c8233ad
--- /dev/null
+++ b/Sem. 05/README.md
@@ -0,0 +1,101 @@
+ ## Капсулация (encapsulation).
+Понякога искаме потребителите да **нямат достъп до всички член-данни и методи на даден клас**.
+Това е така, защото тяхната промяна може да доведе до **неочаквано поведение** на нашата програма. Принципът за **капсулация** ни помага като позволява да определим кои методи и атрибути може да използват потребителите на нашия клас.
+
+ **Модификатор за достъп**:
+
+| Модификатор за достъп: | Достъп: |
+|------------------------|---------------------------------|
+| private | В текущия клас. |
+| protected | В текущия клас и *наследниците. |
+| public | За всеки |
+
+**Пример за get-ъри и set-ъри**
+
+ ```c++
+
+#include <iostream>
+
+using namespace std;
+
+
+struct Student
+{
+private:
+ int grade;
+ int age;
+public:
+ Student(int grade, int age)
+ {
+ setGrade(grade);
+ setAge(age);
+ }
+ int getGrade()
+ {
+ return grade;
+ }
+ int getAge()
+ {
+ return age;
+ }
+ void setGrade(int grade)
+ {
+ if(grade >= 2 && grade <= 6)
+ this->grade = grade;
+ }
+ int setAge(int age)
+ {
+ if(age >= 0)
+ this->age = age;
+ }
+};
+
+int main()
+{
+ while ()
+ {
+ Test t;// Object is created
+ if ()
+ {
+ Test t2; // Object is created
+
+ }// Object is destroyed (t2)
+
+ }//Object is destroyed (t)
+}
+
+ ```
+
+
+## Задачи
+
+**Задача 1:**
+Реализирайте клас/структура интервал, който представлява интервал [a,b] (задължително а <= b) от реалната права. Нашият интервал ще бъде дискретен - началото и краят му ще бъдат цели числа и ще разглеждаме само точки, които са цели числа. Релизирайте следният интерфейс:
+
+ - Подразбиращ се контруктор, който създава интервала **[0,0]**.
+ - Конструктор, който приема двата параметъра. Ако a<=b, то създава интервала **[a,b]**. В противен случай, създава **[0,0]**.
+ - Член-функция, която връща **дължината на интервала**.
+ - Член-функция, която приема число и проверява **дали е част от интервала**.
+ - Член-функция, която връща **броя на простите числа** в интервала.
+ - Член-функция, която връща **броя на числата в интервала**, които са палиндорми.
+ - Член-функция, която връща **броя на числата, които нямат повтарящи цифри**.
+ - Член-функция, която връща дали началото и края на интервала са **степени на 2-ката**. ([2,16] - истина)
+ - Член-функция, която приема интервал и връща **сечението на текущия интервал с подадения**. (Сечението на [1, 5] [3, 7] e [3, 5]).
+ - Член-функция, която приема интервал и връща дали подадения (като параметър) интервал е **подинтервал на текущия**(обектът, от който се извиква функцията).
+
+ **Пример за работа с класа:**
+ ```c++
+
+int main()
+{
+ Interval t1(3,10); // [3, 10]
+ Interval t2(4,14); // [4, 14]
+ Interval t3; // [0, 0]
+
+ Interval result = t1.intersect(t2); // [4, 10]
+
+ t2.isSuperInterval(result); //true
+
+ result.calcPrimeNumbersInTheInterval() // 2 (only 5 and 7)
+}
+ ```