Выполнить задание из документа согласно варианту. Вариант распределяется по списку группы.
Объектно-ориентированное программирование (ООП) – это парадигма программирования, которая основывается на концепции объектов. В Java, как и в других объектно-ориентированных языках, ООП позволяет создавать программы, используя объекты, каждый из которых представляет собой экземпляр класса.
- Инкапсуляция - заключается в сокрытии внутренней реализации объекта от внешнего мира. Это достигается за счет использования модификаторов доступа, чтобы ограничить доступ к полям и методам класса.
- Наследование - позволяет одному классу наследовать свойства и поведение другого класса. Это помогает повторно использовать код и строить иерархию классов. В Java класс может расширять другой класс с помощью ключевого слова extends.
- Полиморфизм - означает возможность одного интерфейса работать с разными реализациями. В Java это реализуется через переопределение методов в подклассах и использование абстрактных классов/интерфейсов.
- Абстракция - подразумевает выделение существенных характеристик объекта, скрывая при этом несущественные детали. В Java абстракцию можно реализовать с использованием абстрактных классов и интерфейсов. Абстрактный класс содержит методы без реализации, которые должны быть реализованы в подклассе. Интерфейс же полностью состоит из абстрактных методов, которые также должны быть реализованы в классе, который реализует этот интерфейс.
Существует 3 вида модификаторов доступа:
- public - открытый модификатор доступа. При его использовании мы можем получить доступ к методу/объекту/классу из любой точки программы.
- private - закрытый модификатор доступа. При его использовании мы можем получить доступ к методу/объекту/классу только локально.
- protected - полуоткрытый модификатор доступа. При его использовании мы можем получить доступ к методу/объекту/классу локально или в наследниках.
- final - используется для обозначения того, что значение переменной, метода или класса не должно изменяться после инициализации.
- static - указывает, что элемент принадлежит самому классу, а не конкретному экземпляру этого класса. Его можно применять к переменным, методам и блокам кода.
SOLID — это набор принципов объектно-ориентированного проектирования, предложенных Робертом Мартином (также известным как «Дядя Боб»). Эти принципы направлены на улучшение качества кода, повышение его устойчивости к изменениям и облегчение поддержки. Название SOLID является акронимом пяти основных принципов:
- Single Responsibility Principle (Принцип единственной ответственности). Этот принцип гласит, что у каждого класса должна быть одна единственная ответственность, и эта ответственность должна быть четко определена.
- Open/Closed Principle (Принцип открытости/закрытости). Согласно этому принципу, классы должны быть открыты для расширения, но закрыты для модификации. То есть вы можете добавлять новую функциональность, не меняя существующий код.
- Liskov Substitution Principle (Принцип подстановки Барбары Лисков). Этот принцип утверждает, что объекты дочерних классов должны корректно заменять объекты своих родительских классов. Другими словами, если у вас есть базовый класс, то любой его подкласс должен вести себя так, чтобы клиентский код мог использовать его вместо базового класса без проблем.
- Interface Segregation Principle (Принцип разделения интерфейса). Этот принцип гласит, что программные сущности не должны зависеть от методов, которые они не используют. Этот принцип рекомендует разделять большие интерфейсы на более мелкие и специализированные, чтобы классы использовали только те методы, которые им действительно нужны.
- Dependency Inversion Principle (Принцип инверсии зависимостей). Этот принцип утверждает, что модули высокого уровня не должны зависеть от модулей низкого уровня. Оба типа модулей должны зависеть от абстракций, а абстракции не должны зависеть от деталей, а детали должны зависеть от абстракций. Этот принцип направлен на уменьшение связности между модулями и увеличение гибкости системы