Core-1 Flashcards
Что такое ООП?
Представление программы в виде совокупности
обменивающихся сообщениями объектов, каждый из которых
является экземпляром определенного класса, а классы образуют иерархию наследования.
Объекты могут обладать состоянием, единственный способ изменить состояние объекта – послать ему сообщение, в ответ на которое объект может изменить собственное состояние.
3 требования для ООП Программы
- объектно-ориентированное программирование использует в качестве основных
логических конструктивных элементов объекты, а не алгоритмы; - каждый объект является экземпляром определенного класса;
- классы образуют иерархии.
Какие преимущества у ООП?
Легко читается – не нужно выискивать в коде функции и выяснять, за что они отвечают.
Быстро пишется – можно быстро создать сущности, с которыми должна работать программа.
Простота реализации большого функционала – т. к. на написание кода уходит меньше времени, можно гораздо быстрее создать приложение с множеством возможностей.
Какие недостатки у ООП?
Потребление памяти – объекты потребляют больше оперативной памяти, чем примитивные
типы данных.
Снижается производительность – многие вещи технически реализованы иначе, поэтому
они используют больше ресурсов.
Сложно начать – парадигма ООП сложнее функционального программирования, поэтому на
старт уходит больше времени.
Инкапсуляция
СОКРЫТИЕ РЕАЛИЗАЦИИ:
Объединение данных и работающих с ними методов
в классе с целью скрыть детали реализации от пользователя, открыв только то, что необходимо при использовании этого класса.
=> Всё то, что не входит в интерфейс, инкапсулируется в классе.
Полезна для:
- контроль доступа
- контроль целостности/валидности данных
- возможность изменения реализации
Наследование
Создание нового класса на основе уже существующего с частично или полностью заимствующейся функциональностью.
Полиморфизм
ВОЗМОЖНОСТЬ ИМЕТЬ РАЗНЫЕ ФОРМЫ ДЛЯ ОДНОЙ И ТОЙ ЖЕ СУЩНСТИ:
это свойство системы использовать объекты с одинаковым интерфейсом
без информации о типе и внутренней структуре объекта.
ключевая особенность
полиморфизма
использование объекта производного класса вместо объекта базового:
потомки могут переопределять родительское поведение, даже если обращение к ним будет
производиться по ссылке родительского типа.
Преимущество полиморфизма
он помогает снижать сложность программ, разрешая использование одного и того же интерфейса для задания единого набора действий. Выбор же конкретного действия, в зависимости от ситуации, возлагается на компилятор языка программирования.
2 Типа Полиморфизма
- Динамический: переопределение
- Статический: перегрузка
Полиморфная переменная
Может принимать значение разных типов
Полиморфная функция
хотя бы 1 ее аргумент - полиморфная переменная.
2 типа полиморфных функций
- Ad hoc - Ф. ведет себя по разному для разных типов ( draw() )
- Параметрический: Ф. ведёт себя одинаково для аргументов разных типов (Collections.sort )
Абстракция
Абстрагирование – это способ выделить набор общих характеристик объекта, исключая из рассмотрения частные и незначимые. Соответственно, абстракция – это набор всех таких
характеристик.
Что такое обмен сообщениями?
Сообщение - запрос на выполнения действия, отправка сообщения = вызов метода.
Класс
Класс описывает состояние и зависящее от него поведение сущности, а также правила для взаимодействия с данной сущностью (контракт).
Объект
Объект (экземпляр) – это представитель класса, имеющий конкретное состояние
и поведение, полностью определяемое классом.
Что такое Интерфейс и как он связан с классом?
И. - набор всех публичных методов класса в совокупности с набором
публичных атрибутов.
И. специфицирует класс, четко определяя все
возможные действия над ним.
Ассоциация
означает, что объекты двух классов могут ссылаться один на другой. Композиция и агрегация – частные случаи ассоциации «часть-целое».
«is a» - наследование
«has a» - ассоциаия
Агрегация
Агрегация предполагает, что объекты связаны взаимоотношением «part-of». Student - Course
Композиция
более жесткое отношение , чем агрегация: когда объект не только является частью другого объекта, но и вообще не может принадлежат еще кому-то. Engine - Car.
Связывание метода (binding)
Присоединение вызова метода к телу метода
early binding
статическое или раннее связывание: связывание
проводится компилятором (компоновщиком) перед запуском программы
late binding
позднее связывание (dynamic или runtime binding) - связывание, проводимое непосредственно во время выполнения программы в зависимости от типа объекта.