Что такое ооп в java
Перейти к содержимому

Что такое ооп в java

  • автор:

Как работают принципы ООП в Java: примеры

Принципы и понятия объектно-ориентированного программирования (ООП, или OOPS, Object-Oriented Programming Concepts) очень важны. Не разбираясь в понятиях ООП, вы не сможете проектировать системы в модели объектно-ориентированного программирования.

Модель объектно-ориентированного программирования

Модель объектно-ориентированного программирования построена вокруг понятия объекта. Объект – это экземпляр класса. Он содержит свойства и функции. По сути они похожи на объекты реального мира: как, например, машина, дом, ноутбук и т. д. У них есть свои свойства и определенные методы для выполнения действий. Что такое класс? Класс определяет схему объектов. Он определяет свойства и функции объектов. К примеру, книга — это класс, а конкретно ваша книга — его экземпляр.

Принципы ООП

Основными принципами ООП являются:

  1. Абстракция
  2. Инкапсуляция
  3. Полиморфизм
  4. Наследование
  5. Ассоциация и агрегация
  6. Композиция

Теперь по порядку рассмотрим эти понятия объектно-ориентированного программирования. Чтобы вы лучше поняли, как реализовать концепции ООП, мы будем использовать фрагменты кода на языке программирования Java.

Абстракция

Абстракция — это скрытие внутренних деталей и описание вещей простыми терминами. Возьмем, к примеру, метод, который складывает два целых числа . Внутренняя обработка метода скрыта от внешнего мира. Достичь абстракци в ООП можно несколькими способами, например, через инкапсуляцию и наследование. Отличным примером абстракции является программа на Java: язык программирования сам заботится о преобразовании простых операторов в машинный язык и скрывает детали внутренней реализации от внешнего мира.

Инкапсуляция

Инкапсуляция — это метод, используемый для реализации абстракции в ООП. Она ограничивает доступ к членам и методам класса. Для инкапсуляции в ООП применяются ключи модификаторов доступа. Например, в языке java инкапсуляция достигается с помощью ключевых слов private, protected и public.

Полиморфизм

Полиморфизм указывает, что в разных ситуациях объект ведет себя по-разному. Существует два типа полиморфизма – полиморфизм во время компиляции и во время выполнения. Полиморфизм во время компиляции достигается перегрузкой метода.

Для примера рассмотрим такой класс:

public class Circle public void draw() System.out.println("Drwaing circle with default color Black and diameter 1 cm."); > public void draw(int diameter) System.out.println("Drwaing circle with default color Black and diameter"+diameter+" cm."); > public void draw(int diameter, String color) System.out.println("Drwaing circle with color"+color+" and diameter"+diameter+" cm."); > >

Все методы draw, которые встречаются в этом коде, ведут себя по-разному. Это пример перегрузки метода, потому что имена методов одинаковы, а аргументы разные. Поскольку компилятор сможет определить метод вызова во время компиляции, данный метод называется полиморфизмом во время компиляции. Полиморфизм во времени выполнения реализуется, когда между объектами есть отношения наследования «IS-A». Также этот подход называется переопределением метода, поскольку подкласс должен переопределить метод суперкласса. Фактический класс определяется во время выполнения с точки зрения суперкласса. Компилятор не может решать, какой метод класса будет вызван. Это решение принимается во время выполнения, отсюда и название – «полиморфизм во время выполнения» или «динамическая диспетчеризация методов».

package com.journaldev.test; public interface Shape public void draw(); > package com.journaldev.test; public class Circle implements Shape @Override public void draw() System.out.println("Drwaing circle"); > > package com.journaldev.test; public class Square implements Shape @Override public void draw() System.out.println("Drawing Square"); > >

Тут Shape — это суперкласс, у которого есть два подкласса, Circle и Square. Ниже приведен пример полиморфизма во время выполнения.

Shape sh = new Circle(); sh.draw(); Shape sh1 = getShape(); //some third party logic to determine shape sh1.draw();

В этих примерах компилятор Java не знает фактического класса реализации Shape, который будет использоваться во время выполнения.

Наследование

Наследование — это понятие объектно-ориентированного программирования, которое указывает, что один объект основан на другом объекте, вытекает из него. Проще говоря, наследование — это механизм повторного использования кода. Наследуемый объект называется суперклассом, а объект, который наследует суперкласс, называется подклассом. В java для реализации наследования используется ключевое слово extends. Давайте посмотрим на следующий пример наследования в java.

package com.journaldev.java.examples1; class SuperClassA public void foo() System.out.println("SuperClassA"); > > class SubClassB extends SuperClassA public void bar() System.out.println("SubClassB"); > > public class Test public static void main(String args[]) SubClassB a = new SubClassB(); a.foo(); a.bar(); > >

Ассоциация

Такое поняте ООП, как ассоциация, определяет связи между объектами, а также разнообразие самих объектов. Предположим, что у нас есть объекты “Учитель” и “Ученик”: множество учеников может общаться с одним учителем, и, конечно, один ученик также может общаться с несколькими учителями.

Агрегация

Агрегация – это особый тип ассоциации. Это понятие подразумевает, что все объекты имеют свой собственный жизненный цикл, но со взаимосвязью «HAS-A» – то есть один дочерний объект может принадлежать одному родительскому . Каждый раз, когда вы встречаете взаимосвязь «HAS-A» между объектами, знайте – это называется агрегацией.

Композиция

Композиция – специальная “ограничительная” форма агрегации. В композиции содержащийся в отношении «HAS-A» объект не может существовать сам по себе. Представим, например, комнату, которая находится в доме . Одна комната не может быть частью двух разных домов. Конечно, если вы удалите дом, комната тоже будет удалена.

Больше примеров кода вы найдете в нашем репозитории GitHub .

Что такое ооп в java

Всем привет!! создала группу в телеграмм, где Java — студенты смогут не только обсуждать вопросы по изучению Java и делиться полезностями, но и организовывать живые встречи. Кому интересно, вступайте =) https://t.me/JavaCommunityMoscow

chess.rekrut Уровень 25
18 августа 2023
Nikita Dimitrienko Уровень 28
4 августа 2023

Лёгкая в усваивании лекция. Ее бы сразу всем давали. А то я вообще ещё раньше сидел и гуглил все принципы ООП. Читал столько инфы, что просто не пересчитать. А тут в 3-ёх словах всё объяснили)

Alexander Rozenberg Уровень 32
31 июля 2023
Никита Онучин Уровень 25
28 июля 2023
Хорошая лекция! Дополнила понимание ООП
Сообщество

JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.

Подписывайтесь
Язык интерфейса
«Программистами не рождаются» © 2024 JavaRush
Скачивайте наши приложения
«Программистами не рождаются» © 2024 JavaRush

Этот веб-сайт использует данные cookie, чтобы настроить персонально под вас работу сервиса. Используя веб-сайт, вы даете согласие на применение данных cookie. Больше подробностей — в нашем Пользовательском соглашении.

Что такое ооп в java

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

Принципы ООП в Java
Как упоминалось выше, выделяют четыре основные принципа ООП:

  • Абстракция. Абстракция означает использование простых вещей для описания чего-то сложного. Например, мы все знаем как пользоваться телевизором, но в тоже время нам не нужно обладать знаниями о том, как он работает чтобы смотреть его. В Java под абстракцией подразумеваются такие вещи, как объекты, классы и переменные, которые в свою очередь лежат в основе более сложного кода. Использование данного принципа позволяет избежать сложности при разработке ПО.
  • Инкапсуляция. Под инкапсуляцией подразумевается сокрытие полей внутри объекта с целью защиты данных от внешнего, бесконтрольного изменения со стороны других объектов. Доступ к данным (полям) предоставляется посредством публичных методов (геттеров/сеттеров). Это защитный барьер позволяет хранить информацию в безопасности внутри объекта.
  • Наследование. Это особая функциональность в объектно-ориентированных языках программирования, которая позволяет описывать новые классы на основе уже существующих. При этом поля и методы класса-предка становятся доступны и классам-наследникам. Данная фича делает классы более чистыми и понятным за счет устранения дублирования программного кода.

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

Каким образом концепции ООП работают в Java

Концепции ООП в Java позволяют программистам создавать компоненты, которые можно переиспользовать в различных частях программы не подвергая данные опасности.

Принцип работы абстракции

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

Приготовление кофе с помощью кофемашины является хорошим примером абстракции. Все, что нам надо знать, что бы ей пользоваться: как налить воды, засыпать кофейные зерна, включить и выбрать вид кофе, который хотим получить. А, как машина будет варить кофе — нам знать не нужно.

В данном примере кофемашина представляет собой абстракцию, которая от нас скрывает все подробности варки кофе. Нам лишь остается просто взаимодействовать с простым интерфейсом, который не требует от нас каких-либо знаний о внутренней реализации машины.

Этот же подход можно использовать и в объектно-ориентированных языках программирования, таких как Java.

Принцип работы инкапсуляции

Инкапсуляция позволяет нам пользоваться возможностями класса без создания угрозы безопасности данных за счет ограничения прямого доступа к его полям. Также она позволяет изменять код классов не создавая проблем их пользователям (другим классам). В Java данный принцип достигается за счет использования ключевого слова private .

Принцип работы наследования

Наследование — еще одна важная концепция ООП, которая позволяет сэкономить время на написании кода. Возможности наследования раскрываются в том, что новому классу передаются свойства и методы уже описанного ранее класса. Класс, который наследуется называется дочерним (или подклассом). Класс, от которого наследуется новый класс — называется родительским, предком и т. д. В языке программирования Java используется ключевое слово extends для того, чтобы указать на класс-предок.

Принцип работы полиморфизма

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

Рассмотрим примеры полиморфизма в Java: переопределение и перегрузка методов.

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

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

Что такое ООП простыми словами?

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

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

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

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

Что такое ООП — объектно ориентированное программирование, простыми словами?

что такое ООП

Если вы задаетесь вопросом, что такое объектно ориентированное программирование, то сейчас мы попробуем простыми словами, но развернуто на него ответить. А для старта в АйТи рекомендуем курсы в нашей Lemon.School.

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

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

ООП в JavaScript часто лучше всего использовать, когда мы имеем дело с производством и проектированием приложений. Он обеспечивает модульность в программировании. Это позволяет нам разбивать программное обеспечение на части небольших задач, которые мы затем можем решать по одному объекту за раз.

История появления ООП

Многие считают, что ООП ― это продукт 1980-х годов и работы, проделанной Бьярне Струструпом по продвижению языка C в объектно-ориентированный мир путем создания языка C++. На самом деле, SIMULA 1 (1962) и Simula 67 (1967) являются двумя самыми ранними объектно-ориентированными языками. Работа над языками Simula была выполнена Оле-Джоном Далем и Кристеном Нигаардом в Норвежском вычислительном центре в Осло, Норвегия. Хотя большинство преимуществ ООП были доступны в ранних языках Simula, только после того, как в 1990-х годах C++ стал укоренившимся языком, ООП начало процветать.

C был родительским языком C++, и часто говорили, что C достаточно мощный, чтобы многократно выстрелить себе в ногу. C++, с другой стороны, был не только достаточно мощным, чтобы выстрелить себе в ногу, но вы могли без особых проблем отстрелить себе всю ногу. Большинство программистов признают, что C++ — очень мощный язык, который широко используется и сегодня. Однако с этой мощью приходит и большая сложность. Разработчикам языка нужен был более простой и, возможно, менее сложный язык для разработки ООП.

Следующий шаг в развитии ООП начался в январе 1991 года, когда Джеймс Гослинг, Билл Джой, Патрик Нотон, Майк Шерадин и некоторые другие встретились в Аспене, штат Колорадо, чтобы обсудить идеи для проекта Stealth. Группа хотела разработать интеллектуальные электронные устройства, способные централизованно управляться и программироваться с портативного устройства.

Что не так с процедурным программированием (ПП)?

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

Плюсы и минусы ООП

плюсы и минусы ООП

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

К плюсам относится то, что данный язык

  • Повышает производительность разработки программного обеспечения. ООП обычно повышает продуктивность команды разработчиков программного обеспечения, поскольку обеспечивает конкретность, расширяемость и возможность повторного использования в процессе разработки.
  • Улучшает обслуживание программного обеспечения. При использовании модели ООП в JS программисты могут централизовать коды, функции, переменные и другие элементы объектов. Обычно легче проводить обслуживание централизованных объектов, так как изменения вряд ли затронут другие объекты и их функции.
  • Позволяет создавать многократно используемые коды. Благодаря концепции наследования в модели ООП, классы могут иметь родительские классы. Когда существует множество классов, которые имеют схожие функции и могут интерпретировать одни и те же методы, это обычно позволяет программистам повторно использовать коды.
  • Снижает затраты на разработку. Большинство концепций ООП способствуют снижению затрат на программирование. Программисты могут повторно использовать код, снижая альтернативные затраты, которые в противном случае программисты могли бы потратить на создание новых кодов. Программы ООП в Java обычно легко масштабировать и поддерживать.
  • Обеспечивает безопасность программы. Концепции абстракции и инкапсуляции объектно-ориентированного программирования обычно повышают общую безопасность программы. Программа скрывает многие объекты, функции и кодирование внутри класса, что помогает защитить класс от несанкционированного доступа и изменений.

К минусом ООП можно отнести:

  • Привлекает крутую кривую обучения. В зависимости от опыта и навыков команды программистов, они могут быть не знакомы с моделями ООП. Для понимания ООП может потребоваться обширное обучение и опыт. Это может привести к непродуктивному или неэффективному программированию на ранних этапах внедрения этой модели. Однако при эффективном обучении и развитии команды могут стать опытными в ее использовании.
  • Требует большего количества строк кода. Хотя Java ООП помогает организовать огромные объемы кода, оно также может генерировать значительное количество кода. Если ООП-программы не получают должного управления, может появиться чрезмерное количество кода, который не нужен для работы программы.
  • Приводит к более медленной скорости работы приложений. Программы ООП могут работать медленнее, чем программы других типов. Это связано с тем, что они могут включать в себя множество кодов и инструкций. Для выполнения программой своих функций требуется большее количество обработки кодов по сравнению с другими моделями программ, например, процедурным программированием.

4 концепции объектно-ориентированного программирования

Ниже вы можете изучить четыре типичные принципа ООП в JS:

  1. Инкапсуляция. Процесс инкапсуляции ― это, по сути, заключение объектов в класс вместе с функциями и методами объекта. Этот процесс служит защитным барьером для класса, защищая объекты внутри него. Когда программист инкапсулирует класс, он не позволяет другим объектам и внешним кодам получать доступ к объектам класса или изменять их. Видны только назначенные функции, методы и переменные инкапсулированных объектов.
  2. Абстракция. Процесс абстрагирования означает отделение или сокрытие реализации класса от его интерфейса. Например, стереосистема может представлять собой объект, а кнопки управления на внешней стороне системы — интерфейс. Чтобы изменить громкость, пользователь может взаимодействовать с интерфейсом громкости, но ему не требуется знание функций и методов, которые делают это действие возможным.
  3. Наследование. Согласно концепции наследования, классы могут иметь родительские и дочерние классы. Это означает, что дочерний класс наследует многие из тех же функций, которые родительский класс включает в свои объекты. Это может быть отличной концепцией для повторного использования кода, поскольку дочерние классы используют многие функции родительского класса.
  4. Полиморфизм. Это понятие относится к способности программы интерпретировать один метод и применять его к уникальным объектам. Обычно это возможно, поскольку объекты содержат уникальные входные параметры, но могут иметь общий родительский класс. Например, если рассматривать человека как родительский класс, то у этого человека могут быть дочерние классы, представляющие его как работника, родителя и партнера. Если вы примените к человеку метод, например Behave, он будет вести себя, но как родитель, сотрудник и партнер они будут вести себя по-разному.

Что такое объект?

Объекты ООП JS ― это экземпляры класса, созданные с помощью специально определенных данных. Объекты могут соответствовать реальным объектам или абстрактным сущностям. Когда класс определен изначально, описание является единственным определенным объектом.

Что такое класс?

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

Языки объектно-ориентированного программирования

языки ООП

К популярным языкам чистого ООП относятся:

Языки программирования, разработанные в основном для ООП, включают:

Другие языки программирования, которые работают в паре с ООП, включают:

  • Visual Basic .NET
  • PHP
  • JavaScript

Рекомендуем изучить по теме

Книги

  1. «Объектно-ориентированный анализ и проектирование с примерами приложений на C++» — книга Гради Буча, один из лучших руководителей в области объектно-ориентированного программирования.
  2. «Thinking in Java» — книга Брюса Эккеля, которая предоставляет введение в ООП с использованием языка программирования Java.
  3. «Design Patterns: Elements of Reusable Object-Oriented Software» — книга Гаммы, Хелма, Джонсона и Влиссидеса, которая представляет собой сборник популярных шаблонов проектирования, используемых в ООП.
  4. «Clean Code: A Handbook of Agile Software Craftsmanship» — книга Роберта Мартина, которая помогает программистам писать более чистый, читабельный и поддерживаемый код в контексте ООП.

Как углубить свои знания в области ООП

Вот несколько рекомендаций по тому, что стоит изучить, если вы хотите углубить свои знания в области ООП:

  1. Паттерны проектирования — изучение паттернов проектирования может помочь в разработке более гибких и масштабируемых приложений, которые легко поддерживать и расширять.
  2. Языки программирования, поддерживающие ООП — если вы уже работаете с языком программирования, поддерживающим ООП, то рекомендуется изучить более продвинутые возможности языка, такие как наследование, полиморфизм, абстракцию и инкапсуляцию.
  3. Принципы SOLID — эти принципы, включающие единство ответственности, открытость/закрытость, подстановку Лисков, разделение интерфейсов и инверсию зависимостей, помогут в разработке более гибких и масштабируемых приложений.
  4. Фреймворки и библиотеки, основанные на ООП — изучение фреймворков и библиотек, которые основаны на ООП, таких как Django (Python), Ruby on Rails (Ruby) или .NET Framework (C#), может помочь в разработке более эффективных и масштабируемых приложений.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *