Процедурное и объектно-ориентированное программирование — Java программирование
Выделяют две основные методики программирования: процедурное и объектно-ориентированное программирование.
Процедурное программирование — это тип программирования, в котором инструкции для решения задачи выполняются одна за другой, сверху вниз, иногда возникают изменения в их последовательности. Когда программа становится более сложной на помощь приходят методы. Но современные программы настолько сложны, что даже разделение на методы не делают программу проще. И здесь на помощь приходит объектно-ориентированное программирование. Все программы, которые мы рассматривали до сих пор, написаны в процедурном стиле. Даже несмотря на то, что весь код прописан в классе.
Объектно-ориентированное программирование (ООП) — методика программирования, в которой основными концепциями являются понятия объектов и классов. Прежде чем начать писать инструкции для решения задачи, в задаче выделяются объекты и описываются с помощью классов. В классе прописывается поведение объектов с помощью методов и характеристики или свойства объекта с помощью переменных класса. Одной из ключевых особенностей языка Java является ООП.
Процедурное программирование можно сравнить с постройкой маленького домика — нет необходимости тратить время и ресурсы на продумывание архитектуры. ООП же похоже на постройку сложного архитектурного сооружения, где очень важно продумать все детали, и только потом приступать к программированию (постройке).
Несмотря на явное преимущество ООП, не следует им злоупотреблять. Если вам нужно написать маленькую программку, например, вычисление факториала, процедурное программирование вполне подойдет.
Курс «Объектно-ориентированное программирование на языке Java»
Актуальность | Приостановлено |
---|---|
Стоимость | 20000 руб |
Продолжительность | 72 часа |
Группа | от 8 до 10 человек |
Начало занятий | По мере формирования группы |
Основной задачей курса является приобретение слушателями знаний об объектно-ориентированном подходе в программировании, освоение возможностей языка Java с концентрацией на решении объектно-ориентированных проблем.
Обращаем внимание, что ввиду специфики обучения по данному курсу сборные группы не обучаются. Слушатели курса должны быть работниками одной организации или одной отрасли.
Осуществляется знакомство слушателей с технологией программирования, понятием программного обеспечения, знакомство с отдельными видами программного обеспечения, прикладного программного обеспечения, с системным программным обеспечением. Вводится понятие жизненного цикла программы.
Разработка программного обеспечения. Характеристики программ. Определение требований. Проблемы проектирования сложных программных средств. Этапы проектирования. Слои конечного продукта. Параллельная разработка. Итерации при проектировании. Детализация требований. Уровни проектирования. Документирование проектирования. Понятие технологии проектирования. Структурное проектирование программных средств. Верификация и тестирование. Документирование проекта.
Назначение курса – Этот курс предназначен для разработчиков различных приложений любой сложности на языке Java.
Категория слушателей – высшее образование, САПР, программирование
Форма обучения – без отрыва от производства
Учебный план
№ п/п | Наименование разделов | Всего часов | В том числе | |||
---|---|---|---|---|---|---|
Лекции | Практические и лабораторные занятия | Самостоятельное изучение | Проверка знаний | |||
1 |
Раздел 1. Java объектно-ориентированный язык. Абстрактные классы и методы. Хранение и обработка объектов. |
12 |
3 |
9 |
|
|
|
|
2 |
|
|
|
2 |
2 |
Раздел 2. Файлы, потоки ввода/вывода. Обработка исключительных ситуаций |
21 |
6 |
15 |
|
|
|
|
2 |
|
|
|
2 |
3 |
Раздел 3. События и их реализация. Компоненты пользовательского интерфейса |
10 |
2 |
8 |
|
|
4 |
Раздел 4. Потоки и многопоточность |
12 |
4 |
8 |
|
|
|
|
2 |
|
|
|
2 |
5 |
Раздел 5. Технология разработки WEB-приложений |
10 |
2 |
8 |
|
|
|
|
2 |
|
|
|
2 |
|
Итого: |
72 |
17 |
47 |
|
8 |
|
Итоговая аттестация |
зачет |
Контактная информация
Запись на курс
Иллюстрированный самоучитель по Java › Объектно-ориентированное программирование в Java [страница — 44] | Самоучители по программированию
Вся полувековая история программирования компьютеров, а может быть, и история всей науки – это попытка совладать со сложностью окружающего мира. Задачи, встающие перед программистами, становятся все более громоздкими, информация, которую надо обработать, растет как снежный ком.
Объектно-ориентированное программирование развивается уже более двадцати лет. Имеется несколько школ, каждая из которых предлагает свой набор принципов работы с объектами и по-своему излагает эти принципы. Но есть несколько общепринятых понятий. Перечислим их.
Иерархия объектов давно используете для их классификации. Особенно детально она проработана в биологии. Все знакомы с семействами, родами и видами. Мы можем сделать описание своих домашних животных (pets): кошек (cats), собак (dogs), коров (cows) и прочих следующим образом: | class Pet{ // Здесь описываем общие свойства всех домашних любимцев | Master person;
В нашем примере рассматривается только взаимодействие в процессе кормления, описываемое методом eat(). В этом методе животное обращается к хозяину, умоляя его применить метод getFood(). | В англоязычной литературе подобное обращение описывается словом message.
Этот принцип утверждает – каждый класс должен составлять отдельный модуль. Члены класса, к которым не планируется обращение извне, должны быть инкапсулированы. | В языке Java инкапсуляция достигается добавлением модификатора private к описанию члена класса. Например: | private int mouseCatched;
Итак, описание класса начинается со слова class, после которого записывается имя класса. Соглашения «Code Conventions» рекомендуют начинать имя класса с заглавной буквы. | Перед словом class можно записать модификаторы класса (class modifiers). Это одно из слов public, abstract, final, strictfp.
При описании класса Pet мы не можем задать в методе voice () никакой полезный алгоритм, поскольку у всех животных совершенно разные голоса. | В таких случаях мы записываем только заголовок метода и ставим после закрывающей список параметров скобки точку с запятой.
Пометив метод модификатором final, можно запретить его переопределение в подклассах. Это удобно в целях безопасности. Вы можете быть уверены, что метод выполняет те действия, которые вы задали. Именно так определены математические функции sin(), cos() и прочие в классе Math.
Если при описании класса мы не указываем никакое расширение, т. е. не пишем слово extends и имя класса за ним, как при описании класса Pet, то Java считает этот класс расширением класса object, и компилятор дописывает это за нас: | class Pet extends Object{… } | Можно записать это расширение и явно.
Вы уже обратили внимание на то, что в операции new, определяющей экземпляры класса, повторяется имя класса со скобками. Это похоже на обращение к методу, но что за «метод», имя которого полностью совпадает с именем класса? | Такой «метод» называется конструктором класса (class constructor).
Пора подробнее описать операцию с одним операндом, обозначаемую словом new. Она применяется для выделения памяти массивам и объектам. | В первом случае в качестве операнда указывается тип элементов массива и количество его элементов в квадратных скобках, например: | double a[] = new double[100];
Разные экземпляры одного класса имеют совершенно независимые друг от друга поля-, принимающие разные значения. Изменение поля в одном экземпляре никак не влияет на то же поле в другом экземпляре. В каждом экземпляре для таких полей выделяется своя ячейка памяти.
Комплексные числа широко используются не только в математике. Они часто применяются в графических преобразованиях, в построении фракталов, не говоря уже о физике и технических дисциплинах. Но класс, описывающий комплексные числа, почему-то не включен в стандартную библиотеку Java.
Всякая программа, оформленная как приложение (application), должна содержать метод с именем main. Он может быть один на все приложение или содержаться в некоторых классах этого приложения, а может находиться и в каждом классе.
В языке Java нестатические переменные можно объявлять в любом месте кода между операторами. Статические переменные могут быть только полями класса, а значит, не могут объявляться внутри методов и блоков. Какова же область видимости (scope) переменных?
В этой главе уже несколько раз упоминалось, что в теле класса можно сделать описание другого, вложенного (nested) класса. А во вложенном классе можно снова описать вложенный, внутренний (inner) класс и т. д.
Теперь у нас появились две различные иерархии классов. Одну иерархию образует наследование классов, другую – вложенность классов. | Определив, какие классы будут написаны в вашей программе, и сколько их будет, подумайте, как спроектировать взаимодействие классов?
Объектно-ориентированное программирование | Flexberry PLATFORM Documentation
Краткое описание
Объектно-ориентированное программирование (ООП) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
Основные понятия
- Абстракция данных — Абстрагирование означает выделение значимой информации и исключение из рассмотрения незначимой. В ООП рассматривают лишь абстракцию данных (нередко называя её просто «абстракцией»), подразумевая набор значимых характеристик объекта, доступный остальной программе.
- Инкапсуляция — свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе. Одни языки (например, С++, Java или Ruby) отождествляют инкапсуляцию с сокрытием, но другие (Smalltalk, Eiffel, OCaml) различают эти понятия.
- Наследование — свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником, дочерним или производным классом.
- Полиморфизм подтипов (полиморфизм) — свойство системы, позволяющее использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта. Другой вид полиморфизма — параметрический — в ООП называют обобщённым программированием.
- Класс — универсальный, комплексный тип данных, состоящий из тематически единого набора «полей» (переменных более элементарных типов) и «методов» (функций для работы с этими полями), то есть он является моделью информационной сущности с внутренним и внешним интерфейсами для оперирования своим содержимым (значениями полей). В частности, в классах широко используются специальные блоки из одного или чаще двух спаренных методов, отвечающих за элементарные операции с определенным полем (интерфейс присваивания и считывания значения), которые имитируют непосредственный доступ к полю.
- Объект — сущность в адресном пространстве вычислительной системы, появляющаяся при создании экземпляра класса (например, после запуска результатов компиляции и связывания исходного кода на выполнение).
Пример использования
Схема принципов ООП
Ресурсы
Перейти
Please enable JavaScript to view the comments powered by Disqus.Просто о сложном: что такое объектно-ориентированное программирование (ООП)?
Теги: ооп, наследование, программирование, методы, объектно-ориентированное программирование, классы, инкапсуляция, полиморфизм
Объектно-ориентированное программирование — это шаблон проектирования ПО, позволяющий решать задачи разработчика с точки зрения взаимодействия объектов. При этом большая часть объектно-ориентированных языков, например, Ruby, Python, Java, C++ наследуют на основе классов. Если говорить о JavaScript, то в нём ООП реализуется через прототипное наследование.
Наиболее удачное и популярное определение ООП звучит следующим образом — это методология программирования, которая основана на представлении программы в виде совокупности ряда объектов, причём каждый из этих объектов — это экземпляр определённого класса.
На сегодняшний день ООП — наиболее распространённый метод разработки ПО. Но использование этого метода предполагает понимание ряда принципов. О них и поговорим.
Сущность, определения и принципы ООП
Для освоения этих методов разработки вы должны знать четыре главные особенности. Вместе они образуют сущность данного программирования. А понимание сущности ООП, как известно, не что иное, как ключ к становлению профессионального и успешного разработчика. Давайте рассмотрим эти определения подробнее.
Наследование
Это механизм, позволяющий описать новый класс на основании родительского (существующего). Причём функциональность и свойства родительского класса заимствуются новым.
Иными словами, когда вы применяете наследование в программировании, отпадает необходимость реализовывать общий базовый функционал прочих классов, так как вполне достаточно применить наследование, благодаря которому ваш класс сразу будет обладать нужными родительскими знаниями.
Для чего нужно наследование в ООП, и какие преимущества оно даёт программированию? Главный плюс — повторное использование кода. Как правило, методы и поля, описанные в родительских классах, можно переиспользовать в классах-потомках. В результате: — приходится писать меньше кода; — повышается качество кода, он упрощается.
При этом сам механизм довольно гибок, поэтому недостающую в потомках функциональность всегда можно дописать отдельно.
Абстракция
Тут всё предельно просто. При абстракции выделяются главные и наиболее значимые характеристики предмета, одновременно с этим отбрасываются второстепенные и незначительные.
Простой пример: представьте, что мы создаём картотеку сотрудников компании. Естественно, мы вносим их основные характеристики: дату рождения, ИНН, ФИО, номер социального страхования. Разумеется, нас не интересуют ни рост, ни цвет глаз, ни длина волос. То есть мы абстрагируемся от ненужной информации.
А что если нужно создать картотеку модельного агентства? Согласитесь, что здесь ситуация кардинально меняется и вряд ли нам понадобится индивидуальный номер налогоплательщика, а вот данные о внешности будут очень кстати.
Инкапсуляция
Этот термин для объектно-ориентированного программирования означает ограничение доступа к каким-либо данным, то есть ограничивается возможность изменения этих самых данных. Проще говоря, есть «капсула», в которую мы «прячем» важные параметры, когда не хотим, чтобы кто-либо их менял.
Поясним термин на примере вашего имени. Его знают друзья, коллеги, родственники. Но они не могут изменить ваше имя, т. к., согласно методу ООП, у них нет к этому доступа. Всё потому, что изменения «инкапсулированы» в паспортном столе и только вы сами можете что-либо подправить. Пример инкапсуляции в объектно-ориентированном программировании — модификаторы доступа, геттеры-сеттеры и т. д.
Полиморфизм
Полиморфизм позволяет работать с несколькими типами таким образом, как будто это один и тот же тип. И поведение объектов в данном случае будет разным и зависит от того, к какому типу они принадлежат. В общем, полиморфизм указывает, какую версию метода текущего объекта необходимо запустить. Также полиморфизмом называют способность функции обрабатывать данные разных типов. Пример — автомат на вокзале, принимающий для оплаты как наличные, так и банковские карты.
Причины появления объектно-ориентированного программирования
Некоторые задаются вопросом, а почему вообще возник метод ООП? Вроде бы и работающие инструменты у программистов были, и процедурные языки, и методов реализации хватало.
Тем не менее пришло время, когда без ООП стало невозможно быстро и качественно решать поставленные задачи. Во многом это связано с усложнением этих самых задач. Усложнились типы данных, возникла необходимость делить задачу на части. В итоге программы стали представлять собой древа с кучей ветвлений и вариантов работы. Реализовать всё это, используя лишь процедурное программирование, стало весьма сложным и малореалистичным.
7) Концепция ООП — CoderLessons.com
Что такое OOPS?
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ (ООП) — это концепция программирования, которая работает на принципах абстракции, инкапсуляции, наследования и полиморфизма. Это позволяет пользователям создавать объекты, которые они хотят, а затем создавать методы для обработки этих объектов. Основная концепция ООП заключается в создании объектов, их повторном использовании в программе и манипулировании этими объектами для получения результатов.
Объектно-ориентированное программирование, широко известное как ООП, используется в современном языке программирования, таком как Java
Основные концепции OOPS
1) Класс
Класс представляет собой группу похожих объектов. Это только логический компонент, а не физический объект. Например, если у вас есть класс под названием «Дорогие автомобили», у него могут быть такие объекты, как Mercedes, BMW, Toyota и т. Д. Его свойства (данные) могут быть ценой или скоростью этих автомобилей. В то время как методы могут быть выполнены с этими автомобилями, вождение, задний ход, торможение и т. Д.
2) Объект
Объект может быть определен как экземпляр класса, и в программе может быть несколько экземпляров класса. Объект содержит как данные, так и функцию, которая работает с данными. Например — стул, велосипед, маркер, ручка, стол, машина и т. Д.
3) Наследование
Наследование — это концепция OOPS, в которой один объект приобретает свойства и поведение родительского объекта. Это создает родительско-дочерние отношения между двумя классами. Он предлагает надежный и естественный механизм для организации и структуры любого программного обеспечения.
4) Полиморфизм
Полиморфизм относится к способности переменной, объекта или функции принимать несколько форм. Например, в английском языке бег глагола имеет другое значение, если вы используете его с ноутбуком , пешеходом и бизнесом . Здесь мы понимаем значение бега, основываясь на других словах, используемых вместе с ним. То же самое относится и к полиморфизму.
5) Абстракция
Абстракция является актом представления основных функций без включения деталей фона. Это метод создания нового типа данных, который подходит для конкретного приложения. Например, во время вождения автомобиля вам не нужно беспокоиться о его внутренней работе. Здесь вам просто нужно заботиться о таких деталях, как руль, шестерни, акселератор и т. Д.
6) Инкапсуляция
Инкапсуляция — это ООП метод упаковки данных и кода. В этой концепции OOPS переменные класса всегда скрыты от других классов. Доступ к нему возможен только с использованием методов их текущего класса. Например — в школе ученик не может существовать без класса.
7) Ассоциация
Ассоциация — это связь между двумя объектами. Это определяет разнообразие между объектами. В этой концепции ООП все объекты имеют отдельный жизненный цикл, и у них нет владельца. Например, многие ученики могут общаться с одним учителем, а один ученик также может общаться с несколькими учителями.
8) Агрегация
В этой технике все объекты имеют отдельный жизненный цикл. Тем не менее, существует владение, так что дочерний объект не может принадлежать другому родительскому объекту. Например, рассмотрим класс / предметный отдел и преподавателя. Здесь, один учитель не может принадлежать нескольким отделам, но даже если мы удалим отдел, объект учителя никогда не будет уничтожен.
9) Композиция
Композиция — это специализированная форма агрегации. Это также называется «смертью» отношений. Дочерние объекты не имеют своего жизненного цикла, поэтому при удалении родительского объекта все дочерние объекты также удаляются автоматически. Для этого давайте возьмем пример дома и комнаты. Любой дом может иметь несколько комнат. Одна комната не может стать частью двух разных домов. Так что, если вы удалите дом, номер также будет удален.
Преимущества OOPS:
- ООП предлагает простую для понимания и четкую модульную структуру для программ.
- Объекты, созданные для объектно-ориентированных программ, можно повторно использовать в других программах. Таким образом, это экономит значительную стоимость разработки.
- Большие программы сложно писать, но если команда разработчиков и проектировщиков следует концепции OOPS, они могут лучше проектировать с минимальными недостатками.
- Это также повышает модульность программы, потому что каждый объект существует независимо.
Сравнение OOPS с другими стилями программирования с помощью Примера
Давайте разберемся с примером, как ООП отличается от других подходов программирования.
Языки программирования можно разделить на 3 основных типа
- Неструктурированные языки программирования: самый примитивный из всех языков программирования с последовательным потоком управления. Код повторяется во всей программе
- Языки структурированного программирования: имеет последовательный поток управления. Использование функций позволяет повторно использовать код.
- Объектно-ориентированное программирование : объединяет данные и действия вместе.
Нажмите здесь, если видео не доступно
Давайте разберем эти 3 типа на примере.
Предположим, вы хотите создать банковское программное обеспечение с такими функциями, как
- депозит
- Изымать
- Показать баланс
Неструктурированные языки программирования
Самым ранним из всех языков программирования был неструктурированный язык программирования. Очень простой код банковского приложения на неструктурированном языке программирования будет иметь две переменные: один номер счета и другую для баланса счета.
int account_number=20; int account_balance=100;
Предположим, внесен депозит в размере 100 долларов.
account_balance=account_balance+100
Далее вам нужно отобразить баланс аккаунта.
printf(“Account Number=%d,account_number) printf(“Account Balance=%d,account_balance)
Сейчас сумма в 50 долларов снимается.
account_balance=account_balance-50
Опять же, вам нужно отобразить баланс счета.
printf(“Account Number=%d,account_number) printf(“Account Balance=%d,account_balance)
Для любой последующей операции ввода или вывода — вы будете повторять код снова и снова.
Структурированное программирование
С появлением структурированного программирования повторяющиеся строки кода были помещены в структуры, такие как функции или методы. Когда это необходимо, выполняется простой вызов функции.
Объектно-ориентированного программирования
В нашей программе мы имеем дело с данными или выполняем определенные операции с данными.
На самом деле, наличие данных и выполнение определенной операции над этими данными является основной характеристикой любой программы.
Эксперты в области программирования программного обеспечения думали о сочетании данных и операций. Следовательно, рождение объектно-ориентированного программирования, которое обычно называют OOPS.
Один и тот же код в OOPS будет иметь те же данные и некоторые действия, выполняемые с этими данными.
Class Account{ int account_number; int account_balance; public void showdata(){ system.out.println(“Account Number”+account_number) system.outprintln(“Account Balance”+ account_balance) } }
Объединяя данные и действия, мы получим много преимуществ по сравнению со структурным программированием, а именно:
- абстракция
- Инкапсуляция
- наследование
- Полиморфизм
Они обсуждаются более подробно в последующих уроках
|
Концепции объектно-ориентированного программирования (Руководства по Java ™> Изучение языка Java)
Учебники Java были написаны для JDK 8. Примеры и практики, описанные на этой странице, не используют преимущества улучшений, представленных в более поздних выпусках, и могут использовать технологии, которые больше не доступны.
Обзор обновленных языковых функций в Java SE 9 и последующих выпусках см. В разделе «Изменения языка Java».
См. Примечания к выпуску JDK для получения информации о новых функциях, улучшениях, а также удаленных или устаревших параметрах для всех выпусков JDK.
Если вы никогда раньше не использовали объектно-ориентированный язык программирования, вам необходимо изучить несколько основных концепций, прежде чем вы сможете начать писать какой-либо код. Этот урок познакомит вас с объектами, классами, наследованием, интерфейсами и пакетами. Каждое обсуждение фокусируется на том, как эти концепции соотносятся с реальным миром, одновременно предоставляя введение в синтаксис языка программирования Java.
Объект — это программный пакет, связанный с состоянием и поведением. Программные объекты часто используются для моделирования объектов реального мира, которые вы найдете в повседневной жизни. В этом уроке объясняется, как состояние и поведение представлены в объекте, вводится концепция инкапсуляции данных и объясняются преимущества разработки программного обеспечения таким образом.
Класс — это план или прототип, из которого создаются объекты. В этом разделе определяется класс, который моделирует состояние и поведение объекта реального мира. Он намеренно фокусируется на основах, показывая, как даже простой класс может чисто моделировать состояние и поведение.
Inheritance предоставляет мощный и естественный механизм для организации и структурирования вашего программного обеспечения. В этом разделе объясняется, как классы наследуют состояние и поведение от своих суперклассов, и объясняется, как наследовать один класс от другого, используя простой синтаксис, предоставляемый языком программирования Java.
Интерфейс — это контракт между классом и внешним миром. Когда класс реализует интерфейс, он обещает предоставить поведение, опубликованное этим интерфейсом.В этом разделе определяется простой интерфейс и объясняются необходимые изменения для любого класса, который его реализует.
Пакет — это пространство имен для логической организации классов и интерфейсов. Размещение кода в пакетах упрощает управление большими программными проектами. Этот раздел объясняет, почему это полезно, и знакомит вас с интерфейсом прикладного программирования (API), предоставляемым платформой Java.
Используйте вопросы и упражнения, представленные в этом разделе, чтобы проверить свое понимание объектов, классов, наследования, интерфейсов и пакетов.
Объектно-ориентированное программирование на Java
Добро пожаловать на наш курс по объектно-ориентированному программированию на Java с использованием визуализации данных. Люди приходят на этот курс с разными целями — и мы очень рады работать со всеми вами! Некоторые из вас хотят быть профессиональными разработчиками программного обеспечения, другие хотят улучшить свои навыки программирования, чтобы реализовать этот крутой личный проект, о котором вы думали, в то время как другие из вас могут еще не знать, почему вы здесь, и пытаются понять о чем этот курс.
Концепции Java OOP — Javatpoint
На этой странице мы узнаем об основах ООП.Объектно-ориентированное программирование — это парадигма, которая предоставляет множество концепций, таких как наследование , привязка данных , полиморфизм и т. Д.
Simula считается первым объектно-ориентированным языком программирования. Парадигма программирования, в которой все представлено как объект, известна как действительно объектно-ориентированный язык программирования.
Smalltalk считается первым действительно объектно-ориентированным языком программирования.
Популярными объектно-ориентированными языками являются Java, C #, PHP, Python, C ++ и т. Д.
Основная цель объектно-ориентированного программирования — реализовать сущности реального мира, например объект, классы, абстракцию, наследование, полиморфизм и т. Д.
ООП (объектно-ориентированная система программирования)
Объект означает реальный объект, такой как ручка, стул, стол, компьютер, часы и т. Д. Объектно-ориентированное программирование — это методология или парадигма для разработки программы с использованием классов и объектов. Он упрощает разработку и сопровождение программного обеспечения, предлагая некоторые концепции:
Помимо этих понятий, в объектно-ориентированном проектировании используются и другие термины:
- Муфта
- Сплоченность
- Ассоциация
- Агрегация
- Композиция
Объект
Любая сущность, у которой есть состояние и поведение, называется объектом. Например, стул, ручка, стол, клавиатура, велосипед и т. Д. Это может быть физическое или логическое.
Объект можно определить как экземпляр класса. Объект содержит адрес и занимает некоторое место в памяти. Объекты могут общаться, не зная деталей данных или кода друг друга. Единственная необходимая вещь — это тип принятого сообщения и тип ответа, возвращаемого объектами.
Пример: Собака — это объект, потому что у нее есть такие состояния, как цвет, имя, порода и т. Д.а также поведение, такое как виляние хвостом, лай, еда и т. д.
Класс
Коллекция объектов называется классом. Это логическая сущность.
Класс также можно определить как схему, из которой можно создать отдельный объект. Класс не занимает места.
Наследование
Когда один объект получает все свойства и поведение родительского объекта , это называется наследованием. Это обеспечивает возможность повторного использования кода. Он используется для достижения полиморфизма во время выполнения.
Полиморфизм
Если одна задача выполняется по-разному , это называется полиморфизмом. Например: убедить заказчика в другом, нарисовать что-нибудь, например фигуру, треугольник, прямоугольник и т. Д.
В Java мы используем перегрузку методов и переопределение методов для достижения полиморфизма.
Другой пример: что-то сказать; например, кошка издает мяуканье, собака лает гав и т. д.
Абстракция
Скрытие внутренних деталей и отображение функциональности называется абстракцией.Например, телефонный звонок, мы не знаем внутренней обработки.
В Java мы используем абстрактный класс и интерфейс для достижения абстракции.
Инкапсуляция
Связывание (или упаковка) кода и данных вместе в единый блок называется инкапсуляцией . Например, капсула, она обернута разными лекарствами.
Класс java является примером инкапсуляции. Java-компонент — это полностью инкапсулированный класс, потому что здесь все члены данных являются частными.
Муфта
Связь относится к знаниям, информации или зависимости другого класса. Он возникает, когда классы знают друг друга. Если у класса есть подробная информация о другом классе, существует сильная связь. В Java мы используем модификаторы private, protected и public для отображения уровня видимости класса, метода и поля. Вы можете использовать интерфейсы для более слабой связи, потому что нет конкретной реализации.
Сплоченность
Сплоченность относится к уровню компонента, который выполняет одну четко определенную задачу.Одна четко сформулированная задача решается с помощью очень связного метода. Слабосвязный метод разбивает задачу на отдельные части. Пакет java.io представляет собой очень сплоченный пакет, поскольку он имеет классы и интерфейс, связанные с вводом-выводом. Однако пакет java.util является слабо связным пакетом, поскольку у него нет связанных классов и интерфейсов.
Ассоциация
Ассоциация представляет собой взаимосвязь между объектами. Здесь один объект может быть связан с одним объектом или несколькими объектами.Между объектами может быть четыре типа ассоциации:
- Один к одному
- Один ко многим
- Многие к одному и
- Многие ко многим
Давайте разберемся во взаимосвязи на примерах в реальном времени. Например, в одной стране может быть один премьер-министр (один к одному), а у премьер-министра может быть много министров (один ко многим). Кроме того, у многих депутатов может быть один премьер-министр (от многих к одному), а у многих министров может быть много департаментов (от многих к многим).
Связь может быть ненаправленной или двунаправленной.
Агрегация
Агрегация — это способ достижения ассоциации. Агрегация представляет собой отношение, при котором один объект содержит другие объекты как часть своего состояния. Он представляет собой слабую связь между объектами. Это также называется отношением имеет- в Java. Мол, наследование представляет отношение — это . Это еще один способ повторного использования объектов.
Композиция
Композиция — это тоже способ добиться ассоциации.Композиция представляет собой отношение, в котором один объект содержит другие объекты как часть своего состояния. Между содержащим объектом и зависимым объектом существует сильная связь. Это состояние, в котором содержащие объекты не имеют независимого существования. Если вы удалите родительский объект, все дочерние объекты будут удалены автоматически.
Преимущество ООП перед процедурно-ориентированным языком программирования
1) ООП упрощает разработку и сопровождение, тогда как в языке программирования, ориентированном на процедуры, нелегко управлять, если код растет по мере увеличения размера проекта.
2) ООП обеспечивает сокрытие данных, тогда как в процедурно-ориентированном языке программирования доступ к глобальным данным можно получить откуда угодно.
Рисунок: Представление данных в процедурно-ориентированном программировании
Рисунок: Представление данных в объектно-ориентированном программировании
3) ООП позволяют более эффективно моделировать события реального мира. Мы можем предоставить решение реальной проблемы со словом, если мы используем язык объектно-ориентированного программирования.
В чем разница между объектно-ориентированным языком программирования и объектно-ориентированным языком программирования?
Объектно-ориентированный язык программирования следует всем функциям ООП, кроме наследования. JavaScript и VBScript являются примерами объектно-ориентированных языков программирования.
Вы знаете?- Можем ли мы перегрузить основной метод?
- Конструктор Java возвращает значение, но что?
- Можно ли создать программу без основного метода?
- Каковы шесть способов использования этого ключевого слова?
- Почему множественное наследование не поддерживается в Java?
- Зачем использовать агрегирование?
- Можем ли мы переопределить статический метод?
- Что такое ковариантный возвращаемый тип?
- Каковы три использования ключевого слова Java super?
- Зачем использовать блок инициализации экземпляра?
- Как используется пустая конечная переменная?
- Что такое маркер или интерфейс с тегами?
- Что такое полиморфизм времени выполнения или диспетчеризация динамических методов?
- В чем разница между статической и динамической привязкой?
- Как в Java возможно понижающее преобразование?
- Для чего нужен частный конструктор?
- Что такое клонирование объекта?
- Преимущество ООП
- Соглашение об именах
- Объект и класс
- Перегрузка метода
- Конструктор
- статическое ключевое слово
- это ключевое слово с шестью использованием
- Наследование
- Агрегация
- Переопределение метода
- Ковариантный возвращаемый тип
- супер ключевое слово
- Блок инициализатора экземпляра
- последнее ключевое слово
- Абстрактный класс
- Интерфейс
- Полиморфизм времени выполнения
- Статическая и динамическая привязка
- Понижение с помощью оператора instanceof
- Пакет
- Модификаторы доступа
- Инкапсуляция
- Клонирование объекта
Четыре столпа объектно-ориентированного программирования
В этой статье я попытаюсь объяснить четыре основных принципа объектно-ориентированного программирования (ООП). Объектно-ориентированное программирование позволяет программистам думать о разработке программного обеспечения, как если бы они работали с реальными объектами. В повседневной жизни люди обладают знаниями и могут выполнять различные работы / задачи. В ООП объекты имеют поля для хранения знаний / состояния / данных и могут выполнять различные методы.
Перед тем, как углубиться в четыре столпа ООП, я хотел бы остановиться на некоторых основных терминологиях.
Объект : экземпляр класса / рабочий объект класса
Класс : это модель или стандарт, описывающий возможности того, что объект может делать
Метод: Может изменять состояние класса, которое будет применяться ко всем экземплярам класса
Экземпляр : они похожи на объекты, однако давайте подумаем об этом в следующих терминах: чертеж конструкции автомобиля — это описание класса, все автомобили, изготовленные из этого чертежа, являются объектами этого класса. Ваша машина, созданная по этому чертежу, является экземпляром этого класса.
Теперь, когда мы рассмотрели эти ключевые слова, давайте перейдем к четырем принципам объектно-ориентированного программирования: инкапсуляция, абстракция, наследование и полиморфизм.
Четыре принципа объектно-ориентированного программирования (ООП):
ИнкапсуляцияИнкапсуляция выполняется, когда каждый объект поддерживает частное состояние внутри класса. Другие объекты не могут напрямую обращаться к этому состоянию, вместо этого они могут вызывать только список общедоступных функций.Объект управляет своим собственным состоянием с помощью этих функций, и никакой другой класс не может изменить его, если явно не разрешено. Чтобы общаться с объектом, вам нужно будет использовать предоставленные методы. Мне нравится думать об инкапсуляции на примере людей и их собак. Если мы хотим применить инкапсуляцию, мы делаем это, инкапсулируя всю «собачью» логику в класс Dog. «Состояние» собаки находится в частных переменных: игривость, голод и энергия, и каждая из этих переменных имеет свои соответствующие поля.
Существует также частный метод: bark (). Класс собак может вызывать это, когда захочет, а другие классы не могут сказать собаке, когда лаять. Существуют также общедоступные методы, такие как sleep (), play () и eat (), которые доступны другим классам. Каждая из этих функций изменяет внутреннее состояние класса Dog и может вызывать bark (), когда это происходит, частное состояние и общедоступные методы связываются.
АбстракцияАбстракция — это расширение инкапсуляции.Это процесс выбора данных из большего пула, чтобы показать объекту только релевантные детали. Предположим, вы хотите создать приложение для знакомств, и вас просят собрать всю информацию о ваших пользователях. Вы можете получить от своего пользователя следующие данные: полное имя, адрес, номер телефона, любимую еду, любимый фильм, хобби, налоговую информацию, номер социального страхования, кредитный рейтинг. Этот объем данных велик, но не все они необходимы для создания профиля знакомств. Вам нужно только выбрать из этого пула информацию, имеющую отношение к вашему приложению для знакомств.Такие данные, как полное имя, любимая еда, любимый фильм и хобби, имеют смысл для приложения для знакомств. Процесс выборки / удаления / выбора информации о пользователе из большего пула называется абстракцией. Одним из преимуществ Abstraction является возможность применять ту же информацию, которую вы использовали для приложения для знакомств, к другим приложениям с небольшими изменениями или без них.
НаследованиеНаследование — это способность одного объекта приобретать некоторые / все свойства другого объекта.Например, ребенок наследует черты своих родителей. При наследовании возможность многократного использования является большим преимуществом. Вы можете повторно использовать поля и методы существующего класса. В Java существуют различные типы наследования: одиночное, множественное, многоуровневое, иерархическое и гибридное. Например, Apple — это фрукт, поэтому предположим, что у нас есть класс Fruit и его подкласс с именем Apple. Наше яблоко приобретает свойства класса Fruit. Другими классификациями могут быть виноград, груша, манго и т. Д. Фрукты определяют класс продуктов, которые представляют собой зрелые завязи растения, мясистые, содержащие большое семя внутри или множество крошечных семян.Подкласс Apple приобретает эти свойства от Fruit и обладает некоторыми уникальными свойствами, которые отличаются от других подклассов Fruit, таких как красный, круглый, углубление наверху.
ПолиморфизмПолиморфизм дает нам возможность использовать класс точно так же, как его родительский, поэтому не возникает путаницы со смешением типов. При этом каждый дочерний подкласс сохраняет свои собственные функции / методы такими, какие они есть. Если бы у нас был суперкласс Mammal, у которого есть метод mammalSound ().Подклассами млекопитающих могут быть собаки, киты, слоны и лошади. У каждого из них будет своя собственная итерация звука млекопитающего (лай собаки, щелчок кита).
ПРОЧИТАЙТЕ БОЛЬШЕ: Основы между GraphQL и REST API, Прототипирование и исследование UX, Диаграммы сходства и кластеризация, Создание пользовательского интерфейса материала: Создание цветовой схемы
Настройте среду разработки Java и изучите основные принципы объектно-ориентированного программирования — IBM Developer
Прежде чем начать
Это руководство является частью серии Введение в программирование на Java ™ серии .
Хотя концепции, обсуждаемые в отдельных руководствах, являются автономными по своей природе, практический компонент строится по мере продвижения по серии. Я рекомендую вам ознакомиться с предварительными условиями, настройкой и сведениями о серии, прежде чем продолжить.
Цели
В этом руководстве:
- Понимать функции каждого из составляющих компонентов платформы Java
- Узнайте, как устроен язык Java
- Ознакомьтесь с навигацией по документации Java API
- Загрузите и установите JDK и Eclipse IDE
- Настройте среду разработки Eclipse
- Понимание основных компонентов Eclipse и их использования для разработки на Java
- Создайте новый проект Java в Eclipse
- Поймите, чем объектно-ориентированная парадигма отличается от парадигмы структурного программирования
- Знать основные характеристики объекта
- Понять преимущества, вытекающие из определяющих принципов объектно-ориентированного программирования (ООП).
Обзор платформы Java
Технология Java используется для разработки приложений для широкого спектра сред, от потребительских устройств до гетерогенных корпоративных систем.В этом разделе вы получите общее представление о платформе Java и ее компонентах.
Язык Java
Как и любой язык программирования, язык Java имеет свою собственную структуру, синтаксические правила и парадигму программирования. Парадигма программирования языка Java основана на концепции объектно-ориентированного программирования (ООП), которую поддерживают функции языка.
Язык Java является производным от языка Си, поэтому его синтаксические правила очень похожи на Си. Например, блоки кода разделены на методы и разделены фигурными скобками ( {
и }
), а переменные объявляются до их использования.
Структурно язык Java начинается с пакетов . Пакет — это механизм пространства имен языка Java. Внутри пакетов есть классы, а внутри классов — методы, переменные, константы и многое другое. Узнайте больше о частях языка Java в учебнике «Основы языка Java».
Компилятор Java
Когда вы программируете для платформы Java, вы пишете исходный код в файлах .java, а затем компилируете их. Компилятор проверяет ваш код на соответствие правилам синтаксиса языка, а затем записывает байт-код в.файлы классов. Байт-код — это набор инструкций, предназначенных для запуска на виртуальной машине Java (JVM). Добавляя этот уровень абстракции, компилятор Java отличается от компиляторов других языков, которые записывают инструкции на языке ассемблера, подходящие для набора микросхем ЦП, на котором будет работать программа.
JVM
Во время выполнения JVM читает и интерпретирует файлы .class и выполняет инструкции программы на собственной аппаратной платформе, для которой была написана JVM. JVM интерпретирует байт-код так же, как процессор интерпретирует инструкции на языке ассемблера.Разница в том, что JVM — это программа, написанная специально для определенной платформы. JVM — это основа принципа языка Java «один раз записывай, запускай везде». Ваш код может работать на любом наборе микросхем, для которого доступна подходящая реализация JVM. JVM доступны для основных платформ, таких как Linux ™ и Windows®, а подмножества языка Java были реализованы в JVM для мобильных телефонов и микросхем для любителей.
Сборщик мусора
Вместо того, чтобы заставлять вас следить за распределением памяти (или использовать для этого стороннюю библиотеку), платформа Java обеспечивает управление памятью из коробки.Когда ваше приложение Java создает экземпляр объекта во время выполнения, JVM автоматически выделяет пространство памяти для этого объекта из кучи — пула памяти, отведенного для использования вашей программой. Сборщик мусора Java работает в фоновом режиме, отслеживая, какие объекты больше не нужны приложению, и освобождая от них память. Такой подход к обработке памяти называется неявным управлением памятью , потому что он не требует от вас написания какого-либо кода обработки памяти. Сборка мусора — одна из важнейших функций производительности платформы Java.
Комплект для разработки Java
Когда вы загружаете Java Development Kit (JDK), вы получаете — в дополнение к компилятору и другим инструментам — полную библиотеку классов готовых утилит, которые помогут вам выполнять наиболее распространенные задачи разработки приложений. Лучший способ получить представление об объеме пакетов и библиотек JDK — это ознакомиться с официальной онлайн-документацией по Java API, также называемой Javadoc.Посмотрите следующую короткую демонстрацию, чтобы узнать, как работать с Javadoc.
Среда выполнения Java
Среда выполнения Java (JRE; также известная как среда выполнения Java) включает JVM, библиотеки кода и компоненты, необходимые для выполнения программ, написанных на языке Java. JRE доступен для нескольких платформ. Вы можете свободно распространять JRE вместе со своими приложениями в соответствии с условиями лицензии JRE, чтобы предоставить пользователям приложения платформу для запуска вашего программного обеспечения. JRE включен в JDK.
Настройка среды разработки Java
В этом разделе вы загрузите и установите JDK и текущий выпуск Eclipse IDE, а также настроите среду разработки Eclipse.
Ваша среда разработки
JDK включает набор инструментов командной строки для компиляции и выполнения вашего кода Java, включая полную копию JRE. Хотя вы можете использовать эти инструменты для разработки своих приложений, IDE предоставляет вам дополнительные функции, а также управление задачами и визуальный интерфейс.
В этой серии статей вы используете Eclipse, популярную IDE с открытым исходным кодом. Eclipse выполняет основные задачи, такие как компиляция и отладка кода, поэтому вы можете сосредоточиться на написании и тестировании кода. Кроме того, вы можете использовать Eclipse для организации файлов исходного кода в проекты, компиляции и тестирования этих проектов, а также для хранения файлов проекта в любом количестве исходных репозиториев. Для использования Eclipse для разработки Java необходим установленный JDK.
Установите JDK
Выполните следующие действия, чтобы загрузить и установить AdoptOpenJDK:
- Перейдите на сайт AdoptOpenJDK.
- Выберите OpenJDK 11 (LTS) в качестве версии.
- Выберите OpenJ9 в качестве JVM.
Нажмите кнопку загрузки Последняя версия , чтобы загрузить пакет.
Если вам нужно выбрать другую платформу, нажмите кнопку Другие платформы , затем перейдите на свою платформу и загрузите связанный пакет.
Следуйте инструкциям для своей платформы (они будут немного отличаться для каждой платформы).
Теперь на вашем компьютере есть среда Java. Затем вы установите Eclipse IDE и создадите проект Java в Eclipse.
Установить и настроить Eclipse
Следуйте этой видеодемоверсии, чтобы загрузить и установить Eclipse в своей системе, просмотрите краткий обзор Eclipse и создайте проект Java.
Резюме: Среда разработки Eclipse
Eclipse — это больше, чем IDE; это целая экосистема разработки. Этот раздел представляет собой краткое практическое введение в использование Eclipse для разработки на Java.
Среда разработки Eclipse состоит из четырех основных компонентов:
- Рабочее пространство
- Проектов
- Перспективы
- Просмотры
Основной структурной единицей в Eclipse является рабочее пространство . Рабочее пространство содержит все ваши проекты . Перспектива — это способ взглянуть на каждый проект (отсюда и название), а в перспективе — один или несколько видов .
На следующем рисунке показана перспектива Java, которая является перспективой по умолчанию для Eclipse.Вы видите эту перспективу, когда запускаете Eclipse.
Перспектива Java содержит инструменты, необходимые для начала написания приложений Java. Каждое окно с вкладками, показанное на Рисунке 1, представляет собой перспективу Java. Два особенно полезных представления — Package Explorer и Outline.
Среда Eclipse легко настраивается. Каждое представление можно закрепить, поэтому вы можете перемещать его в перспективе Java и размещать там, где хотите. А пока придерживайтесь настроек перспективы и вида по умолчанию.
Теперь, когда вы создали новый проект Eclipse Java и исходную папку, ваша среда разработки готова к работе. Однако понимание парадигмы ООП, о которой идет речь в следующем разделе, необходимо до того, как вы начнете кодировать на Java.
Концепции и принципы объектно-ориентированного программирования
Язык Java (в основном) объектно-ориентированный. Этот раздел представляет собой введение в концепции языка объектно-ориентированного программирования (ООП), в котором структурное программирование используется в качестве контраста.
Что такое объект?
Объектно-ориентированные языки следуют шаблону программирования, отличному от структурных языков программирования, таких как C и COBOL. Парадигма структурного программирования сильно ориентирована на данные: у вас есть структуры данных, а затем программные инструкции действуют с этими данными. Объектно-ориентированные языки, такие как язык Java, объединяют данные и программные инструкции в объектов .
Объект — это автономная сущность, которая содержит атрибуты и поведение, и ничего более.Вместо того, чтобы иметь структуру данных с полями (атрибутами) и передавать эту структуру всей логике программы, которая воздействует на нее (поведение), в объектно-ориентированном языке данные и логика программы объединяются. Эта комбинация может происходить на самых разных уровнях детализации, от мелкозернистых объектов, таких как Number
, до крупнозернистых объектов, таких как служба FundsTransfer
в большом банковском приложении.
Родительские и дочерние объекты
Родительский объект — это объект, который служит структурной основой для получения более сложных дочерних объектов . Дочерний объект похож на своего родителя, но более специализирован. В объектно-ориентированной парадигме вы можете повторно использовать общие атрибуты и поведение родительского объекта, добавляя к его дочерним объектам атрибуты и поведение, которые отличаются.
Связь и координация объектов
Объекты общаются с другими объектами, отправляя сообщения ( вызывает метод на языке Java). Кроме того, в объектно-ориентированном приложении программный код координирует действия между объектами для выполнения задач в контексте конкретной области приложения.
Обзор объекта
Хорошо написанный объект:
- Имеет четко определенные границы
- Выполняет ограниченный набор действий
- Знает только о своих данных и любых других объектах, которые необходимы ему для выполнения своей деятельности
По сути, объект — это дискретная сущность, которая имеет только необходимые зависимости от других объектов для выполнения своих задач.
Пришло время посмотреть, как выглядит объект Java.
Пример: объект «Человек»
Мой первый пример основан на общем сценарии разработки приложений: индивидуум представлен объектом Person
.
Из определения объекта вы знаете, что объект имеет два основных элемента: атрибуты и поведение. Вот как эти элементы применяются к объекту Person
.
Как правило, атрибуты объекта можно представить как существительных , а поведение — как глаголов .
Атрибуты (существительные)
Какие качества могут быть у человека? Вот некоторые общие:
- Имя
- Возраст
- Высота
- Вес
- Цвет глаз
- Пол
Вероятно, вы можете придумать больше (и вы всегда можете добавить больше атрибутов позже), но этот список — хорошее начало.
Поведение (глаголы)
Реальный человек может делать все, что угодно, но поведение объектов обычно связано с тем или иным контекстом приложения. Например, в контексте бизнес-приложения вы можете спросить свой объект Person
: «Каков ваш индекс массы тела (ИМТ)?» В ответ Человек
будет использовать значения своих атрибутов роста и веса для расчета ИМТ.
Более сложная логика может быть скрыта внутри объекта Person
, но пока предположим, что Person
имеет следующее поведение:
- Рассчитать ИМТ
- Распечатать все атрибуты
Состояние и строка
Состояние — важное понятие в ООП.Состояние объекта представлено в любой момент времени значениями его атрибутов.
В случае Person
его состояние определяется такими атрибутами, как имя, возраст, рост и вес. Если вы хотите представить список из нескольких из этих атрибутов, вы можете сделать это с помощью класса String
, о котором вы узнаете больше позже.
Используя вместе концепции состояния и строки, вы можете сказать Человеку
: «Расскажите мне все о себе, предоставив мне список (или String
) ваших атрибутов. ”
Принципы ООП
Если вы имеете опыт структурного программирования, то ценностное предложение ООП может быть еще неясным. В конце концов, атрибуты человека и любая логика для извлечения (и преобразования) этих значений могут быть записаны на C или COBOL. Преимущества парадигмы ООП станут яснее, если вы поймете ее определяющие принципы: инкапсуляция , наследование и полиморфизм .
Инкапсуляция
Напомним, что объект прежде всего дискретен или самодостаточен.Эта характеристика — принцип работы инкапсуляции . Скрытие — это еще один термин, который иногда используется для обозначения изолированной, защищенной природы объектов.
Независимо от терминологии, важно то, что объект поддерживает границу между своим состоянием и поведением и внешним миром. Как и объекты в реальном мире, объекты, используемые в компьютерном программировании, имеют различные типы отношений с различными категориями объектов в приложениях, которые их используют.
На платформе Java вы можете использовать модификаторы доступа (о которых вы узнаете позже), чтобы изменять характер отношений между объектами от общедоступных до частных . Открытый доступ широко открыт, тогда как частный доступ означает, что атрибуты объекта доступны только внутри самого объекта.
Граница публичного / частного доступа обеспечивает объектно-ориентированный принцип инкапсуляции. На платформе Java вы можете варьировать силу этой границы для каждого объекта.Инкапсуляция — это мощная функция языка Java.
Наследование
В структурированном программировании принято копировать структуру, давать ей новое имя и добавлять или изменять атрибуты, которые делают новую сущность (например, запись Учетной записи
) отличной от ее исходного источника. Со временем такой подход приводит к возникновению большого количества дублированного кода, что может создать проблемы с обслуживанием.
ООП вводит концепцию наследования , посредством которой специализированные классы — без дополнительного кода — могут «копировать» атрибуты и поведение исходных классов, на которых они специализируются. Если некоторые из этих атрибутов или поведения нужно изменить, вы их отменяете. Единственный исходный код, который вы изменяете, — это код, необходимый для создания специализированных классов. Исходный объект называется родительским , а новая специализация называется дочерним — термины, с которыми вы уже познакомились.
Предположим, вы пишете приложение для управления персоналом и хотите использовать класс Person
в качестве основы (также называемый суперклассом ) для нового класса с именем Employee
.Будучи дочерним по отношению к классу Person
, Employee
будет иметь все атрибуты класса Person
вместе с дополнительными, например:
- Идентификационный номер налогоплательщика
- Рабочий номер
- Заработная плата
Наследование позволяет легко создать новый класс Employee
без необходимости вручную копировать весь код Person
.
Полиморфизм
Полиморфизм — более сложное понятие для понимания, чем инкапсуляция и наследование.По сути, полиморфизм означает, что объекты, принадлежащие к одной ветви иерархии, при отправке одного и того же сообщения (т. Е. Когда им приказывают сделать одно и то же) могут проявлять это поведение по-разному.
Чтобы понять, как полиморфизм применяется к контексту бизнес-приложения, вернитесь к примеру Person
. Помните, как Person
отформатировал свои атрибуты в строку String
? Полиморфизм позволяет объекту Person
представлять свои атрибуты различными способами в зависимости от типа объекта Person
.
Полиморфизм, одна из наиболее сложных концепций, с которыми вы столкнетесь в ООП на платформе Java, выходит за рамки этого вводного курса. Вы изучите инкапсуляцию и наследование более подробно в последующих руководствах.
Не чисто объектно-ориентированный язык
Два качества отличают язык Java от чисто объектно-ориентированных языков, таких как Smalltalk. Во-первых, язык Java представляет собой смесь объектов и примитивных типов. Примитивные типы — это самые основные типы данных языка — строительные блоки для манипулирования данными.Во-вторых, с помощью Java вы можете написать код, который раскрывает внутреннюю работу одного объекта любому другому объекту, который его использует.
Язык Java дает вам инструменты, необходимые для следования здравым принципам ООП и создания надежного объектно-ориентированного кода. Поскольку Java не является чисто объектно-ориентированной, вы должны соблюдать дисциплину при написании кода — язык не заставляет вас поступать правильно, поэтому вы должны делать это самостоятельно. Вы можете найти советы в учебнике «Написание хорошего кода Java».
Заключение
В этом руководстве вы узнали об объектно-ориентированном программировании и познакомились с IDE, которая помогает вам контролировать среду разработки.
Что дальше
Следующий учебник из этой серии посвящен основам языка, предоставляя вам достаточно знаний и практики для написания простых программ.
Каковы четыре основы объектно-ориентированного программирования?
Знания о компьютерном программировании очень востребованы в современном технологическом обществе. Знания об объектно-ориентированном программировании (ООП) могут быть полезны при разработке и сопровождении программ.В этой статье мы обсуждаем основные принципы ООП и объясняем их на простых для понимания примерах.
Связано: 15 хорошо оплачиваемых вакансий в области компьютерных наук
Что такое объектно-ориентированное программирование?
Объектно-ориентированное программирование объединяет группу переменных (свойств) и функций (методов) в единицу, называемую «объектом». Эти объекты организованы в классы, в которых отдельные объекты могут быть сгруппированы вместе. ООП может помочь вам рассмотреть объекты в коде программы и различные действия, которые могут произойти по отношению к объектам.
Этот стиль программирования широко используется в широко используемых языках программирования, таких как Java, C ++ и PHP. Эти языки помогают упростить структуру и организацию программного обеспечения. Программисты часто используют ООП, когда им нужно создавать сложные программы.
Связано: Написание технического резюме: советы и примеры
Каковы четыре основы объектно-ориентированного программирования?
Объектно-ориентированное программирование включает четыре основных понятия: инкапсуляция, абстракция, наследование и полиморфизм.Даже если эти концепции кажутся невероятно сложными, понимание общих принципов их работы поможет вам понять основы компьютерной программы. Вот четыре основных теории и то, что они влекут за собой:
- Инкапсуляция
- Абстракция
- Наследование
- Полиморфизм
Инкапсуляция
Различные объекты внутри каждой программы будут пытаться взаимодействовать друг с другом автоматически. Если программист хочет, чтобы объекты не взаимодействовали друг с другом, их нужно инкапсулировать в отдельные классы. В процессе инкапсуляции классы не могут изменять или взаимодействовать с конкретными переменными и функциями объекта.
Так же, как таблетка «инкапсулирует» или содержит лекарство внутри своего покрытия, принцип инкапсуляции работает в цифровом виде, образуя защитный барьер вокруг информации, который отделяет ее от остальной части кода. Программисты могут реплицировать этот объект в различных частях программы или других программах.
Абстракция
Абстракция похожа на расширение инкапсуляции, потому что она скрывает определенные свойства и методы от внешнего кода, чтобы упростить интерфейс объектов.Программисты используют абстракцию по нескольким причинам. В целом абстракция помогает изолировать влияние изменений, внесенных в код, так что если что-то пойдет не так, изменение затронет только показанные переменные, а не внешний код.
Наследование
Используя эту концепцию, программисты могут расширить функциональность существующих классов кода, чтобы исключить повторяющийся код. Например, элементы HTML-кода, которые включают текстовое поле, поле выбора и флажок, имеют определенные свойства, общие с определенными методами.
Вместо переопределения свойств и методов для каждого типа элемента HTML вы можете определить их один раз в универсальном объекте. Называя этот объект чем-то вроде «HTMLElement», другие объекты унаследуют его свойства и методы, так что вы сможете сократить ненужный код.
Главный объект — это суперкласс, а все объекты, следующие за ним, являются подклассами. Подклассы могут иметь отдельные элементы при добавлении того, что им нужно от суперкласса.
Полиморфизм
Этот метод, означающий «множество форм или фигур», позволяет программистам отображать несколько элементов HTML в зависимости от типа объекта.Эта концепция позволяет программистам переопределить способ работы чего-либо, изменив способ выполнения или изменив части, в которых это выполняется. Термины полиморфизма называются переопределением и перегрузкой.
Связано: Компьютерные навыки: определения и примеры
Примеры объектно-ориентированного программирования
Использование реальных примеров ООП помогает упростить эти сложные концепции для лучшего понимания. Вот несколько способов визуализировать принципы, лежащие в основе ООП:
- Пример инкапсуляции
- Пример абстракции
- Пример наследования
- Пример полиморфизма
Пример инкапсуляции
Начинающие программисты могут лучше понять эту концепцию в отношении того, как работает браузер.В браузерах есть объекты локального хранилища, которые позволяют хранить данные локально. У этих объектов есть свойства, такие как длина, которая превращает количество объектов в хранилище, а также такие методы, как (удалить элемент) и (установить элемент).
Другой способ рассмотреть инкапсуляцию — это оплата сотрудника. Свойства сотрудника могут включать базовый оклад, сверхурочную работу и ставку с помощью метода, называемого факторной заработной платой. Код, написанный инкапсулированным, объектно-ориентированным способом, функционирует с меньшим и меньшим количеством параметров.Чем меньше параметров, тем проще использовать и поддерживать эту функцию.
Пример абстракции
Представьте стереосистему как объект со сложной логической платой внутри. Снаружи у него есть кнопки, позволяющие взаимодействовать с объектом. Когда вы нажимаете любую из кнопок, вы не думаете о том, что происходит внутри, потому что вы этого не видите. Даже если вы не видите, что логическая плата выполняет функции в результате нажатия кнопки, она все равно выполняет действия.Это абстракция, которую можно использовать для понимания концепции программирования.
Другой способ понять это — рассмотреть человеческое тело. Кожа действует как абстракция, скрывая внутренние части тела, отвечающие за такие функции организма, как пищеварение и ходьбу.
Пример наследования
Рассмотрим два класса. Один из них — суперкласс (родительский), в то время как подкласс (дочерний) наследует свойства родительского класса и изменяет его поведение. Программисты, применяющие технику наследования, выстраивают эти классы в иерархию отношений типа «это тип».
Например, в животном мире насекомое будет суперклассом. Все насекомые обладают схожими свойствами, такими как шесть ног и экзоскелет. Кузнечики и муравьи — насекомые, унаследовавшие схожие свойства.
Пример полиморфизма
Чтобы лучше понять два термина полиморфизма, называемые перегрузкой и переопределением, помогает визуализировать процесс ходьбы. Младенцы сначала учатся ползать, используя свои руки и ноги. Как только они научатся стоять и ходить, они в конечном итоге меняют ту часть тела, которая используется для выполнения акта ходьбы.Этот термин полиморфизма называется перегрузкой.
Чтобы понять следующий термин отмены, подумайте о том, как вы естественным образом идете в том направлении, куда вы смотрите. Когда вы останавливаетесь и идете назад, это меняет направление вашего пути, а также механизм действия. Вы игнорируете естественное действие, которое обычно выполняете.
5 лучших книг для изучения объектно-ориентированного программирования
ООП или объектно-ориентированное программирование — одна из самых популярных парадигм программирования, которая помогает вам организовать код в реальной системе.Это инструмент, который позволяет вам писать сложное программное обеспечение, думая об объектах и отношениях. В отличие от предшествующей парадигмы процедурного программирования, которая реализована в первую очередь на языке C, который решает проблему и выполняет задачу путем написания кода для компьютеров, стиль программирования ООП позволяет вам мыслить в терминах реальных объектов, которые имеют как состояние, так и поведение. . Вы можете рассматривать что угодно как объекты, а затем находить их состояние и поведение, это поможет вам смоделировать этот объект в коде.К сожалению, программисты не изучают ООП, процедурное или функциональное программирование, они изучают язык программирования, и в качестве побочного эффекта они изучают эти парадигмы. Поскольку многие разработчики изучают Java, C ++ или Python, они изучают ООП, но не в реальном смысле, поэтому выпускникам колледжей сложно применить общие концепции ООП на практике.
Вот почему профессиональному программисту важно прочитать пару книг по объектно-ориентированному анализу и дизайну, пока вы не поймете, что нет смысла изучать основы ООП, такие как абстракция, инкапсуляция, наследование или полиморфизм.Важен именно процесс применения этих принципов на практике.
Вам также необходимо научиться идти на компромисс, например, Почему композиция лучше, чем наследование и , когда использовать абстрактный класс вместо интерфейса? Вы должны знать о сплоченности и связности и изучить советы о том, как уменьшить связность и сплоченность при написании программного обеспечения, потому что это ключевой момент для написания поддерживаемого приложения, которое может выдержать испытание временем.
Эти книги содержат достаточно руководств, чтобы понять эти концепции, и, если вы хотите, вы также можете объединить эти книги с онлайн-курсом, таким как Абсолютное введение в объектно-ориентированное программирование на Java , чтобы получить лучшее из обоих миров. Это отличный курс, который я купил на Udemy всего за 10 долларов, чтобы усовершенствовать свои навыки ООП.
5 книг для изучения ООП, анализа и дизайна Вот моя коллекция из 5 книг по объектно-ориентированному программированию, анализу и дизайну. Эта коллекция содержит книги для программистов любого уровня, например, такие как Head First Oriented Analysis и design, которые отлично подходят для начинающих, а также такие книги, как «Elegant Objects», которые, как считается, вызывают интерес у опытных разработчиков. .Список также содержит важные книги, такие как «Чистый код», и «Шаблоны проектирования в первую очередь», , которые научат вас, как писать лучший код, применяя принципы ООП и твердого дизайна.
Помните, ваша конечная цель — написать программное обеспечение, которое было бы проще поддерживать и расширять, потому что в мире программного обеспечения постоянно только одно — «ИЗМЕНЕНИЕ».
1. Head First Объектно-ориентированный анализ и проектирование Это лучшая книга для изучения объектно-ориентированных концепций и основ. Вы не только изучите основы, такие как класс, объект, инкапсуляция, полиморфизм, абстракция и наследование, но также узнаете такие продвинутые концепции, как композиция, делегирование, ассоциация и агрегирование. Книга поможет вам мыслить категориями объектов для решения проблемы.Они научат вас связывать состояние и поведение с объектами. Вдобавок вы по достоинству оцените стиль работы Head First, который представляет собой гораздо больше, чем рассказывание историй.
Это моя книга, которую я рекомендую начинающему программисту, который хочет изучить ООП и то, как применять это в реальных приложениях.Вы также можете объединить эту книгу с курсом SOLID Principles of Object-Oriented Design от Pluralsight, который более подробно описывает принципы ООП-дизайна, описанные в этой книге.
Поскольку эти принципы проектирования действительно являются ключевыми для написания хорошего объектно-ориентированного кода, потратить немного денег на этот курс стоит.
2. Элегантные предметы В последнее время я не читал ничего более захватывающего, чем эта книга. Эта книга содержит 23 практических рекомендации для объектно-ориентированных программистов по использованию техник объектно-ориентированного программирования.Однако эта книга очень самоуверенна; у автора есть твердое мнение о том, что что-то не так, и поэтому он не следует этому.По его словам, статические методы, нулевые ссылки, геттеры, сеттеры и изменяемые классы — все это зло, что, на мой взгляд, неверно. Нет ничего лучше 100% -го ООП-приложения и никогда не будет. Реальный мир — это полностью продуманные компромиссы и стремление сделать все возможное для наиболее эффективного выполнения задачи.
Хотя мне очень понравилось читать эту книгу, и она определенно помогает мне лучше мыслить в терминах объектов.Я не буду рекомендовать эту книгу новичку, но ее обязательно должны прочитать опытные программисты ООП.
3. Процесс объектно-ориентированного мышления Как следует из названия, эта книга научит вас мыслить категориями объектов. Это еще одна отличная книга для начинающих, чтобы изучить концепции ООП и способы их применения в реальных проектах. Это отличное руководство для программистов, пришедших с C и других процедурных языков программирования, где вы пишете инструкции для компьютера, чтобы выполнить задачу.Книга научит вас создавать сложные системы, окруженные объектами, просто применяя базовые концепции ООП. Короче говоря, процесс объектно-ориентированного мышления Мэтта Вайсфельда является обязательным к прочтению для любого новичка, который хочет изучить объектно-ориентированное программирование.
4. Шаблоны проектирования «Сначала голова» Если я должен сказать одну книгу, которая оказала самое значительное влияние на мою карьеру в программировании, то это она. Я получил эту книгу в 2007 году, когда был младшим разработчиком, только что окончил колледж и обладал теоретическими знаниями о том, что такое абстракция, инкапсуляция, класс, объект или наследование.Эта книга научила меня, почему композиция во многих случаях лучше, чем наследование. Эта книга научила меня реальному использованию интерфейса и тому, как мыслить категориями объектов, давая интерфейсу имена вроде Flyable. Несмотря на то, что в книгах говорится о шаблонах проектирования, которые также являются важной частью объектно-ориентированного программирования, это гораздо больше.
Я настоятельно рекомендую любому начинающему и среднему программисту прочитать первые две главы пару раз, чтобы по-настоящему понять объектно-ориентированное программирование. Короче говоря, одна из лучших книг для изучения как объектно-ориентированного программирования, так и шаблонов проектирования.Если хотите, вы также можете объединить эту книгу с Java Design Patterns — The Complete Masterclass , чтобы увидеть некоторые живые примеры кода.
5. Чистый код Это еще одна книга, которая очень помогла мне в моей карьере программиста с точки зрения программирования, объектно-ориентированного программирования и написания лучшего кода. Я прочитал эту книгу, когда у меня уже есть несколько лет опыта, но когда я читаю, я осознаю так много ошибок, которые совершал неосознанно.Эта книга научила меня реальной разнице между процедурным программированием и объектно-ориентированным программированием.В нем есть отличный пример кода, показывающий, как объект изменяет свое состояние и как вы можете написать свой процедурный код объектно-ориентированным способом, например, заменить большие операторы switch полиморфным вызовом с использованием объектно-ориентированной техники.
Это книга, которая также учит миру принципы проектирования SOLID, основанные на концепциях ООП. Если вы действительно хотите изучить возможности ООП и хотите писать лучший код, эту книгу стоит прочитать.
Это все о некоторых из лучших книг по изучению объектно-ориентированного программирования, анализа и дизайна .Эти книги — отличный ресурс, чтобы научиться мыслить категориями объектов и определять отношения между объектами в сложном сценарии реального мира. Хотя нужно делать гораздо больше, чем просто читать книги. Если в этот момент вы просто хотите сделать что-то одно, то прочтите «Чистый код » .
Лучший способ изучить ООП-анализ и проектирование — это писать код и читать код. Все дело в практике: чем больше вы разрабатываете системы, применяете концепции ООП в своей проблемной области, тем больше вы узнаете.
Тем не менее, эти книги помогут вам изучить концепции и терминологию ООП, что поможет вам лучше формулировать и выражать свои мысли на языке ООП и диаграммах UML — инструменте, который широко используется в анализе и проектировании ООП.
Другие Рекомендуемые книги для программистов и инженеров-программистов.
P. S. — Это, несомненно, сложная тема для освоения, и иногда даже после прочтения этих книг вам нужен кто-то, кто действительно может показать вам, как применять объектно-ориентированный анализ для решения реальных проблем.