ООП

Ace your homework & exams now with Quizwiz!

Какие преимущества у ООП?

- Быстро пишется - можно быстро создать сущности, с которыми должна работать программа; - Легко читается - не нужно выискивать в коде функции и выяснять, за что они отвечают; - Модульность и повторное использование кода: ООП позволяет разбивать программы на более мелкие, независимые модули (классы), выполняющие свою часть работы, которые можно повторно использовать в различных частях программы или в других проектах, что способствует уменьшению дублирования кода и упрощает его обслуживание; - Возможность создавать расширяемые системы (extensible systems), именно это отличает ООП от традиционных методов программирования; - Удобство для командной разработки.

Какие недостатки у ООП?

- Снижение производительности и увеличение потребления памяти по сравнению с другими (процедурными) языками из-за дополнительных затрат на управление объектами и виртуальные вызовы методов. - Сложность обучения - парадигма ООП сложнее функционального программирования, поэтому на старт новичкам уходит больше времени; - Избыточность: ООП может привести к избыточности кода, когда для решения простых задач используется сложная иерархия классов. Иногда функциональное программирование может быть более простым и компактным. - Сложность отладки (обусловлена инкапсуляцией, сложными взаимосвязями объектов, наследованием и распределением ответственности).

Какие еще принципы можешь назвать?

DRY (Don't Repeat Yourself) - Не повторяйся: избегать дублирования кода и логики, чтобы уменьшить сложность и облегчить поддержку. KISS (Keep It Simple, Stupid) Делай это проще: Удерживайте код простым и понятным. Избегайте излишней сложности и используйте простые решения для решения задач. YAGNI (You Aren't Gonna Need It) Вам это не понадобится: не следует добавлять функциональность, которая пока не требуется. BDUF (Big Design Up Front) — Масштабное проектирование прежде всего: это противоположный предыдущему принцип, который гласит, что перед тем, как приступать к разработке необходимо заранее продумать и спроектировать всю информационную систему вплоть до достаточно мелких деталей, и только после этого приступать к реализации по заранее подготовленному плану.

Что такое SOLID?

SOLID - это принципы разработки программного обеспечения, следуя которым достигается хороший код устойчивый к изменениям, который в дальнейшем будет легко масштабироваться и поддерживаться в рабочем состоянии. S (Single Responsibility Principle) - принцип единственной ответственности - каждый класс выполняет только одну задачу. O (Open/Closed Principle) - принцип открытости/закрытости - классы открыты для расширения и закрыты для изменения. L (Liskov's Substitution Principle) - принцип подстановки Барбары Лисков - должна быть возможность вместо родительского класса подставить его любой класс-наследник без изменения работы программы. I (Interface Segregation Principle) - принцип разделения интерфейсов - много специализированных интерфейсов лучше, чем один общий. D (Dependency Inversion Principle) - принцип инверсии зависимостей - модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба типа модулей должны зависеть от абстракций. Кроме того, абстракции не должны зависеть от деталей, а детали должны зависеть от абстракций.

Что такое абстракция (с примерами)?

Абстракция означает выделение значимой информации и исключение из рассмотрения незначимой. Абстракция позволяет сосредоточиться на том, что объект делает, а не на том, как он это делает.

Что такое ассоциация, агрегация и композиция?

Ассоциация означает, что объекты двух классов могут ссылаться один на другой, имеют связь друг с другом. Один класс включает в себя другой класс в качестве одного из полей. (отношение "имеет") Агрегация является особой формой ассоциации, когда один класс содержит (HAS A) другой класс, но объекты внутреннего класса могут существовать независимо от объектов внешнего класса. Например, класс "команда" может содержать класс "игрок", и игроки могут принадлежать к команде или не принадлежать, но их существование не зависит от команды. Композиция — это особый вид агрегации, где внутренний объект является (IS A) частью внешнего объекта и существует только в рамках этого внешнего объекта. Если внешний объект уничтожается, то и все связанные с ним внутренние объекты также уничтожаются. Это отношение представляет собой "часть целого".

Что такое полиморфизм? (с примером)

Возможность работать с несколькими объектами так, будто это один и тот же объект. При этом поведение объектов будет разным в зависимости от типа объекта, к которому они принадлежат. 1. Переопределение метода (@Override) позволяет взять какой-то метод родительского класса и написать в классе-наследнике свою специфическую реализацию этого метода. Новая реализация «заменит» родительскую в дочернем классе; 2. Перегрузка методов (@Overload): Java разрешает определение внутри одного класса несколько методов с одним именем, но с разными параметрами.

Что такое инкапсуляция? (c примером)

Инкапсуляция — механизм языка, позволяющий объединить данные и методы, работающие с этими данными в единый объект, а также защищает и то, и другое от внешнего вмешательства или неправильного использования скрывая детали реализации от пользователя. (Защитная оболочка)

Что такое класс и объект?

Класс — это описание еще не созданного объекта, как бы общий шаблон, состоящий из полей, методов и конструктора, а объект - экземпляр класса, созданный на основе этого описания с собственным состоянием свойств (полей). Три составляющих каждого объекта: идентичность (identity) - то, что отличает один объект класса от другого (equals); состояние (state) - набор всех полей объекта и их значений; поведение (behaviour) - набор всех методов класса объекта.

1. Что такое ООП?

ООП - подход программирования, основанный на представлении программы в виде совокупности объектов, которые взаимодействуют друг с другом для выполнения задач. Каждый из объектов является экземпляром определенного класса, а классы образуют иерархию наследования.

Назовите основные принципы ООП.

П. А. Н. И. - полиморфизм, абстракция, наследование, инкапсуляция.

Расскажите про позднее связывание.

Позднее динамическое связывание объектов происходит во время выполнения программы. (JVM) Animal animal = new Dog(); Выбор вызываемого метода определяется не типом переменной, а типом объекта, на который ссылается переменная в момент выполнения. (При динамическом связывании для нахождения нужного метода используется конкретный объект.) (То, какой метод вызвать, определяется конкретным объектом, так что в момент компиляции информация недоступна, т.к. объекты создаются во время выполнения (на поздней стадии жизненного цикла программы - late binding).) Используется для абстрактных и переопределённых методов. Необходимо для реализации полиморфизма.

Расскажите про раннее

Раннее статическое связывание объектов происходит во время компиляции программы. (компилятором) Происходит на этапе компиляции, если метод известен компилятору (ранняя стадия жизненного цикла программы - early binding). Применяется для дженериков, перегруженных, private, final и static методов. В этом случае используются не конкретные объекты, а информация о типе переменной, то есть ссылка. Обладает лучшим быстродействием.

Что такое наследование? (c примером)

Это механизм, который̆ позволяет создавать новый класс на основе уже существующего класса (с сохранением всех свойств и методов класса-предка, добавляя при необходимости новые свойства и методы).


Related study sets

Unit 6: Communication Fundamentals

View Set

Chapter 12: Nursing Management During Pregnancy

View Set