Skip to content

Repository files navigation

OOP

Задание

Выполнить задание из документа согласно варианту. Вариант распределяется по списку группы.

Теоретическая справка

Объектно-ориентированное программирование (ООП) – это парадигма программирования, которая основывается на концепции объектов. В Java, как и в других объектно-ориентированных языках, ООП позволяет создавать программы, используя объекты, каждый из которых представляет собой экземпляр класса.

Основные принципы ООП:

  • Инкапсуляция - заключается в сокрытии внутренней реализации объекта от внешнего мира. Это достигается за счет использования модификаторов доступа, чтобы ограничить доступ к полям и методам класса.
  • Наследование - позволяет одному классу наследовать свойства и поведение другого класса. Это помогает повторно использовать код и строить иерархию классов. В Java класс может расширять другой класс с помощью ключевого слова extends.
  • Полиморфизм - означает возможность одного интерфейса работать с разными реализациями. В Java это реализуется через переопределение методов в подклассах и использование абстрактных классов/интерфейсов.
  • Абстракция - подразумевает выделение существенных характеристик объекта, скрывая при этом несущественные детали. В Java абстракцию можно реализовать с использованием абстрактных классов и интерфейсов. Абстрактный класс содержит методы без реализации, которые должны быть реализованы в подклассе. Интерфейс же полностью состоит из абстрактных методов, которые также должны быть реализованы в классе, который реализует этот интерфейс.

Модификаторы доступа

Существует 3 вида модификаторов доступа:

  • public - открытый модификатор доступа. При его использовании мы можем получить доступ к методу/объекту/классу из любой точки программы.
  • private - закрытый модификатор доступа. При его использовании мы можем получить доступ к методу/объекту/классу только локально.
  • protected - полуоткрытый модификатор доступа. При его использовании мы можем получить доступ к методу/объекту/классу локально или в наследниках.

Ключевые слова:

  • final - используется для обозначения того, что значение переменной, метода или класса не должно изменяться после инициализации.
  • static - указывает, что элемент принадлежит самому классу, а не конкретному экземпляру этого класса. Его можно применять к переменным, методам и блокам кода.

SOLID

SOLID — это набор принципов объектно-ориентированного проектирования, предложенных Робертом Мартином (также известным как «Дядя Боб»). Эти принципы направлены на улучшение качества кода, повышение его устойчивости к изменениям и облегчение поддержки. Название SOLID является акронимом пяти основных принципов:

  • Single Responsibility Principle (Принцип единственной ответственности). Этот принцип гласит, что у каждого класса должна быть одна единственная ответственность, и эта ответственность должна быть четко определена.
  • Open/Closed Principle (Принцип открытости/закрытости). Согласно этому принципу, классы должны быть открыты для расширения, но закрыты для модификации. То есть вы можете добавлять новую функциональность, не меняя существующий код.
  • Liskov Substitution Principle (Принцип подстановки Барбары Лисков). Этот принцип утверждает, что объекты дочерних классов должны корректно заменять объекты своих родительских классов. Другими словами, если у вас есть базовый класс, то любой его подкласс должен вести себя так, чтобы клиентский код мог использовать его вместо базового класса без проблем.
  • Interface Segregation Principle (Принцип разделения интерфейса). Этот принцип гласит, что программные сущности не должны зависеть от методов, которые они не используют. Этот принцип рекомендует разделять большие интерфейсы на более мелкие и специализированные, чтобы классы использовали только те методы, которые им действительно нужны.
  • Dependency Inversion Principle (Принцип инверсии зависимостей). Этот принцип утверждает, что модули высокого уровня не должны зависеть от модулей низкого уровня. Оба типа модулей должны зависеть от абстракций, а абстракции не должны зависеть от деталей, а детали должны зависеть от абстракций. Этот принцип направлен на уменьшение связности между модулями и увеличение гибкости системы

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors