Общими ключевыми понятиями, с которыми работает любой объектно-ориентированный язык являются:
- Объект - основной строительный элемент любого объектно-ориентированного приложения;
- Класс - это элемент программного обеспечения, описывающий абстрактный тип данных и его частичную или полную реализацию;
- Метод - функция класса;
- Свойство - переменная, определяемые в классе;
- Сигнатура метода - это имя метода, его параметры (причем порядок параметров имеет значение), а также ключевые слова, которые идут перед именем метода. В сигнатуру метода не входит возвращаемое значение, а также бросаемые им исключения;
- Модификаторы (спецификаторы) доступа: public, private, protected - определение доступа к методам или свойствам класса;
- Абстрактный класс - класс, от которого нельзя создать объект, предназначен только для дальнейшего наследования;
- Финальный класс - класс, от которого нельзя наследоваться, предназначен только для создания объектов, но не для дальнейшего наследования;
- Магические методы - это методы присутствующие в любом классе, поставляемые либо языком программирования, либо библиотеками;
- Конструктор - метод вызываемый в момент создания объекта;
- Деструктор - метод вызываемый в момент уничтожения объекта;
- Константа - неизменное или статическое свойства класса;
- Статический метод - метод, который может быть вызыван без создания объекта;
- Интерфейс - это класс, в котором все методы являются абстрактными и открытыми и задаются только имена методов и их параметры, а реализованы они должны быть позже, в создаваемых на основе их имплементах;
- Имплемент - это класс реализующий методы интерфейса.
К ключевым понятиям взаимодействия классов относятся следующие механизмы:
- Инкапсуляция - это механизм, объединяющий атрибуты и методы (которые составляют объект) и охраняющий их от внешнего вмешательства;
- Наследование - это механизм расширения классов;
- Полиморфизм- это механизм, регулирующий поведение программного кода, разный программный код связан с одним и тем же именем;
Абстракция – более общий принцип, и на прямую с ООП он не связан. Под абстракцией понимается упрощённая до нужной для решения задачи модель реальной жизни, т.е. выделение значимой информации и исключение из рассмотрения незначимой. Абстракция только частично описывает реальную сущность объекта.
Не данные, а реальные сущности преобразовываются в объекты. И во время такого преобразования объект остается без тех характеристик, которые являются несущественными деталями (на некотором уровне) с точки зрения составленной информационной модели, то есть мы абстрагируемся от ниx.
Описывая поведение какого-либо объекта, нужно выбрать подходящий для решения конкретной задачи уровень абстракции. Объекты реального света могут быть достаточно сложны, чтобы описать все их характеристики, более того, решение конкретных задач потребует лишь наличие некоторых из них. Таким образом, мы должны абстрагироваться от некоторых конкретных деталей объекта. Но также важно, чтобы абстракция не была слишком обобщенной и позволила правильно моделировать поведение объекта.По сути, любое программное решение является абстракцией.