1 Теоретические вопросы
1.1 Переменные класса и константы. Ограничение доступа
1.2 Множества. Иерархия классов
2 Практическая часть
Список использованных источников

1 Теоретические вопросы
1.1 Переменные класса и константы. Ограничение доступа
Для хранения данных в программе предназначены переменные. Переменная представляет именованную область памяти, которая хранит значение определенного типа. Каждая переменная имеет тип, имя и значение. Тип определяет, какую информацию может хранить переменная.
В качестве имени переменной может выступать любое произвольное название, которое удовлетворяет следующим требованиям:
- имя может содержать любые алфавитно-цифровые символы, а также знак подчеркивания, при этом первый символ в имени не должен быть цифрой;
- в имени не должно быть знаков пунктуации и пробелов;
- имя не может быть ключевым словом языка Java.
При объявлении и последующем использовании также нужно учитывать, что Java - регистрозависимый язык.
Кроме переменных, в Java для хранения данных можно использовать константы. В отличие от переменных константам можно присвоить значение только один раз. Константа объявляется также, как и переменная, только вначале идет ключевое слово final.
Язык Java предоставляет несколько уровней защиты, обеспечивающих возможность настройки области видимости данных и методов. Из-за наличия пакетов Java работает с четырьмя категориями видимости между элементами классов:
· по умолчанию – дружественные члены класса доступны классам, находящимся в том же пакете;
· private – члены класса доступны только членам данного класса;
1.2 Множества. Иерархия классов
Множество - это такой же способ хранения данных, как массив или список. Но особенность множества в том, что оно может хранить только уникальные значения.
Есть три основные виды множеств - HashSet, LinkedHashSet и TreeSet.
Среди HashSet, LinkedHashSet и TreeSet чаще всего используется HashSet. HashSet хранит элементы в произвольном порядке, но зато быстро ищет. Подходит, если порядок не важен, но важна скорость. Для оптимизации поиска, HashSet будет хранить элементы так, как ему удобно. LinkedHashSet будет хранить элементы в порядке добавления, но работает медленнее. TreeSet хранит элементы отсортированными.
Наследование является неотъемлемой частью Java. В коде пишется extends, после которого указываете имя базового класса. Тем самым можно получить доступ ко всем полям и методам базового класса. Используя наследование, можно создать общий класс, которые определяет характеристики, общие для набора связанных элементов. Затем можно наследоваться от него и создать новый класс, который будет иметь свои уникальные характеристики. Главный наследуемый класс в Java называют суперклассом.
2 Практическая часть
Пример программы, использующей объекты разработанного класса приведён ниже.
SetOfNumbers set1 = new SetOfNumbers(list1)
Здесь инициализируется первое множество значениями из списка.
SetOfNumbers set2 = new SetOfNumbers(5)
Здесь инициализируется множество без первоначальных значений, но с мощностью множества.
SetOfNumbers set3 = new SetOfNumbers()
В данном случае инициализируется множество без первоначальных значений. То есть это будет объединённое множества.
Далее рассмотрим разработанные методы класса, решающего практическую задачу.
isNumberBelongToSet(checkNumber)
Данный метод принимает на вход число и далее он проверяет принадлежность числа заданному множеству.
getCardinality()
С помощью данного метода возможно получить мощность множества.
toString()
Метод представляет множество в виде строки.
joinSet(SetOfNumbers newSet1, SetOfNumbers newSet2)
Метод объединяет два множества. Результат объединения заносится в третье множество.
calculateCardinality()
1. Переменные и константы [Электронный ресурс]. – Режим доступа: http://metanit.com/java/tutorial/2.1.php
2. Модификаторы доступа [Электронный ресурс]. – Режим доступа: http://metanit.com/sharp/tutorial/3.2.php
3. Множества [Электронный ресурс]. – Режим доступа: https://vertex-academy.com/tutorials/ru/set-v-java-hashset/7. Сотрудник [Электронный ресурс]. – Режим доступа: http://freesoft.ru/employee_v01b
4. Наследование [Электронный ресурс]. – Режим доступа: http://developer.alexanderklimov.ru/android/java/extends.php9. Логическое моделирование [Электронный ресурс]. – Режим доступа: https://www.intuit.ru/studies/courses/3440/682/lecture/14036