Объектно-ориентированное программирование. Базовые понятия. Класс и объект. Языки ООП в образовании

Объектно-ориентированное программирование или ООП (object-oriented programming) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является реализацией определенного типа, использующая механизм пересылки сообщений и классы, организованные в иерархию наследования.

Smalltalk – первый ЯП, в котором всё реализовано в виде объект

ООП – естественный способ разработки сложного ПО с графическим интфейсом пользователя (GUI)

Методы ООП – мощный инструмент позволяющий разрабатывать сложные системы, устойчивые по отношению к ошибкам и допускающие последующие расширения (суть программирования)

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

ООП характеризуется следующими принципами (по Алану Кею):

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

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

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

Инкапсуляция (encapsulation)— техника, при которой несущественная с точки зрения интерфейса объекта информация прячется внутри него.

Наследование (inheritance)— свойство объектов, посредством которого экземпляры класса получают доступ к данным и методам классов-предков без их повторного определения.

Наследование позволяет различным типам данных совместно использовать один и тот же код, приводя к уменьшению его размера и повышению функциональности.

Полиморфизм (polymorphism)— свойство, позволяющее использовать один и тот же интерфейс для различных действий; полиморфной переменной,например, может соответствовать несколько различных методов.

Полиморфизм перекраивает общий код, реализующий некоторый интерфейс, так,чтобы удовлетворить конкретным особенностям отдельных типов данных.

Класс (class)— множество объектов, связанных общностью структуры и поведения; абстрактное описание данных и поведения (методов) для совокупности похожих объектов, представители которой называются экземплярами класса.

Класс определяет общий интфейс с окр.миром, под средством которого можно выполнять взаимодействовать с отдельными объектами.

Все представители данног класса аналогичны друг другу, т.е. имеют одинаковый интфейс, один и тот же набор операций.

Объект (object)— конкретная реализация класса, обладающая характеристиками состояния, поведения и индивидуальности, синоним экземпляра.

Объект используется в 3х значениях:

1. объект относится к логической комбинации данных и методов.

2. объект означает некоторый рабочий экземпляр и специфический «кусок» данных, являющийся представителем определённого класса способным выполнять эти методы.

3. объект – это решение создания экземпляров, т.е. определение класса.

Java — один из объектно-ориентированных языков.

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

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

Язык Java реализует эту возможность с помощью двух механизмов — расширения или наследования классов(ключевое слово extends ) и реализации интерфейсов(ключевое слово implements ).

В языке Java каждый существующий класс неявно наследует класс Object,что превращает последний в суперкласс любого класса. Сам же класс Objectявляется единственным классом, не имеющим суперкласса.Если изобразить иерархию классов графически, то получится дерево с корнем Object.

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