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

Что такое Объект? (What Is an Object?)
В языке программирования Java все является объектом.
Объект в объектно ориентированном программировании (ООП) - это программная модель объекта реального мира или абстрактного понятия, представляющая собой совокупность переменных, задающих состояние объекта и связанных с ними методов, определяющих его поведение. Каждый объект имеет состояние, обладает четко определенным поведением и уникальной идентичностью.
Объект (экземпляр класса) структура данных, созданная в памяти по соответсвующему описанию.
Гради Буч охарактиризовал Объект как воображаемую или реальную сущность, обладающую характерным поведением и отличительными характеристиками, которая является важной в данной предметной области).
Объект - понятие, абстракция или любой предмет с четко очерченными границами, имеющий смысл в контексте рассматриваемой прикладной задачи.

Что такое Класс? (What Is a Class?)
Класс - это структурированное описание реальной или абстрактной сущности объекта (прототип, описывающий переменные и методы, определяющие характеристики объектов данного класса). Все экземпляры одного класса (объекты) имеют одинаковый набор свойств и общее поведение, то есть одинаково реагируют на одинаковые сообщения.

Что такое Метод? Метод (функция) это именованный участок кода, который может быть вызван по имени.

Что такое Интерфейс? What Is an Interface?
Интерфейс - абстрактное описание набора методов и констант, необходимых для реализации определенной функции. Интерфейс представляет собой механизм взаимодействия между классом и внешним миром. Когда класс реализует интерфейс, она гарантирует поведение объявленное в этом интерфейсе.

Что такое Пакет? What Is a Package?
Пакет представляет собой пространство имен для организации классов и интерфейсов в логическом порядке. Размещение кода в пакетах позволяет легче управлять большими программными проектами.

Что такое Агрегация (Aggregation)?
Агрегация - отношение между классами типа “содержит” (ontain) или “состоит из”, изображается линией с ромбиком на стороне того класса, который выступает в качестве владельца, или контейнера.

Что такое Ассоциация (Association)?
Ассоциация - отношение между классами, когда один объект объеденяет несколько объектов другого класса, но ни в ту, ни в другую сторону отношение между объектами не носит характера “владения”, или контейнеризации.

Что такое Абстракция?
Абстракция - упрощенное представление объекта реального мира, выделение его основных свойств.

Что такое Наследование? What Is Inheritance?
Наследование - это конструирование нового класса на основе существующего.
Наследование - это отношение между классами, при котором класс использует структуру или поведение другого класса (одиночное наследование), или других (множественное наследование) классов.
Наследование - мощный и естественный механизм для организации и структурирования программного обеспечения.
Принцип подстановки Барбары Лисков (Liskov Substitution Principle, LSP) используется при построении иерархии наследования: Наследующий класс должен дополнять, а не замещать поведение базового класса. Таким образом, если объектно-ориентированная модель спроектирована в соответствии с LSP, замена в коде объектов класса-предка на объекты класса-потомка не приведёт к изменениям в работе программы.

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

Что такое Полиморфизм (polymorphism)?
Полиморфизм - способность объекта принимать различные формы, что позволяет использовать один и тот же интерфейс для общего класса действий.
Плиморфизм - это позволяет обращаться с классом-наследником как с предком и способность класса-наследника изменять поведение класса предка.

Что такое Модификаторы доступа?
Модификаторы доступа - это ключевые слова указывающие из каких частей программы можно получить доступ к переменным или методам.
public - публичный, видимый отовсюду;
protected - защищенный, видимый только потомкам;
private - приватный, видимый только внутри класса;
default, package-private - по умолчанию, видимый внутри всех классов одного пакета.