Абстрагирование пример: 1.2. Абстрагирование

Абстрагирование – Гуманитарный портал

Абстрагирование — это мыслительная деятельность, направленная на получение абстракций — идеальных (не существующих в действительности) предметов, которыми могут быть как отдельно взятые представления, категории, понятия, теории и другие, так и их системы (см. Абстракция). Абстрагирование представляет собой одну из наиболее важных операций мышления (см. Мышление) и необходимое условие познания мира путём формирования «вторичных образов» действительности (которыми могут быть как отдельно взятые представления, категории, понятия, теории, модели и другие абстрактные сущности, так и их системы).

Абстрагирование — универсальный приём познания, без которого немыслимы как научное, так и обыденное познание. Вместе с тем, будучи широко представленным в человеческом познании вообще, он приобретает статус метода только в научно-познавательной деятельности, наряду с другими методами научного познания (см.

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

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

Уяснение того, какие именно из свойств предмета или явления являются для них «посторонними» — по сути главный вопрос оперирования с абстракциями.

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

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

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

Реализация процесса абстрагирования включает два типа операций:

  1. оценка возможности и целесообразности замещения;
  2. акт замещения.

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

Про абстрагирование, слабосвязную архитектуру и проектирование в целом / Хабр

К хорошим постам «Код в стиле «дамп потока сознания»» и «Микро-рефакторинг, о котором мы так часто забываем».

  • Почему большинство программистов не любят «читать чужой код»?
  • Почему рефакторинг и внесение изменений становятся серьезной проблемой?
  • Почему так часто случается, что легче переписать с нуля?
  • Почему одни программисты называют других хорошими или плохими словами?

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

  • Лапша
  • Абстрагирование
  • Слабосвязная архитектура
  • Код из головы?

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

Казалось бы, можно возрадоваться, но есть некоторые обстоятельства из суровой реальной жизни, не заметных за розовыми очками.
1. Любая программа содержит ошибки. Поэтому ее нужно сопровождать.
2. В любую программу рано или поздно нужно вносить изменения. Поэтому ее нужно сопровождать.
3. Любая программа или ее части могут стать компонентами другой программы. И оригинальные решения придется сопровождать.

Каждую программу имеет смысл писать с учетом того, что некто будет сопровождать ее. Ваш код будут читать другие программисты, и только по вашему коду они будут делать выводы о вашем моральном облике. И очень часто этим «другим программистом» будете вы сами. Аксиома, не правда-ли?

Всем же приходилось возвращаться к анализу собственного кода?

Рассмотрим типичный пример — крутая программа, где весь код свален в одну кучу.

Так бывает, когда в одном компоненте одновременно находятся:
— финальный вывод и получение данных;
— обработка данных заведомо различной природы;
— развернутые алгоритмы в телах вложенных условий.

На самом деле, казалось бы, зачем выносить в отдельный метод (функцию) код в пару строк? Для кого-то это будет удивительным, но смысл в этом есть.

Сильнейшим приемом программирования является абстрагирование — разделение программы и всех ее компонентов на части.

  • Бизнес-логика приложения распределяется по системе классов, исходя из предметных сущностей, функционала, этапов и типов обрабатываемой-передаваемой информации (MVC)
  • Приложение состоит из нескольких практически несвязанных компонентов.
    Часто они даже пишутся на разных ЯП, и взаимодействуют через API. Например, для толстой игрушки — слой БЛ, физика, звук, растеризатор. Физика и графика — Ogre на С++, бизнес-логика, GUI и звук — Lua или Python. Для веб-сайта — раздельные компоненты веб-сервера, интерпретатора, CMS на интерпретируемом языке, отдельных программ для обработки изображений и видео, драйвер и движок БД.
  • Внутри одного класса разделение действий на разные методы (функции) по функциональному признаку. Отделены приватные методы, хотя бы для того, чтобы обозначить процессинг данных, актуальный только для внутренних целей класса, и информацию, имеющую значение и ценность для пользователя класса.

Слабосвязная архитектура — это медвежья сила в программировании. Именно благодаря ей на свет появились, например, такие хорошие вещи, как CodeIgniter, YII, jQuery, Chomium, Half Life, Counter Strike — список огромен.

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

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

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

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

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

Удачным решением является применение слабосвязной архитектуры на различных уровнях приложения. Тогда даже самая сложная схема Data Flow будет легкочитаемой.

Всегда присутствует сооблазн сесть и написать решение одним махом, из головы. Сам этим часто грешу.

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

Главным неприятным последствием всех проблем является потери времени. Зачастую эти потери времени огромны и фатальны по своим последствиям. А предупредить и минимизировать их не так уж сложно.

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

Смысл прост:
— уделив большее внимание анализу задачи,
— отделив при анализе методы (в том числе программирование, фреймворки, алгоритмы) от целей,
— не выделяя слишком большой приоритет какому-то одному из элементов на схеме выше («нам важно все»),
… экономим огромное количество времени, денег, сил, а также прокачиваем собственную репутацию в глазах коллег.

Проектирование программ — не менее важный и полезный этап, чем освоение ЯП, знакомство с библиотеками, фреймворками и технологиями. Можно весьма сильно продвинуться вперед, и эффективно решить проблемы, обозначенные выше, уделив достаточное внимание этому прекрасному аспекту программирования.

Что такое абстракция в ООП? Абстрактный класс и метод Java

Джеймс Хартман

часов

Обновлено

Что такое абстракция в ООП?

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

Нажмите здесь, если видео недоступно

Давайте изучим абстракцию в ООП на примере:

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

Абстракция в Java

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

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

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

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

Разница между абстракцией и инкапсуляцией

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

Разница между абстрактным классом и интерфейсом

Абстрактный класс Интерфейс
Абстрактный класс может иметь как абстрактные, так и неабстрактные методы. Интерфейс может иметь только абстрактные методы.
Не поддерживает множественное наследование. Поддерживает множественное наследование.
Может обеспечить реализацию интерфейса. Не может обеспечить реализацию абстрактного класса.
Абстрактный класс может иметь защищенные и абстрактные общедоступные методы. Интерфейс может иметь только общедоступные абстрактные методы.
Абстрактный класс может иметь переменную final, static или static final с любым спецификатором доступа. Интерфейс может иметь только общедоступную статическую конечную переменную.

Что такое абстрактный класс?

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

Что такое абстрактные методы?

Абстрактный метод — это метод, который имеет только определение метода, но не содержит реализации. Метод без тела известен как абстрактный метод. Он должен быть объявлен в абстрактном классе. Абстрактный метод никогда не будет окончательным, потому что абстрактный класс должен реализовать все абстрактные методы.

Преимущества абстракции

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

Когда использовать абстрактные методы и абстрактный класс?

Абстрактные методы в основном объявляются там, где два или более подкласса также делают одно и то же разными способами в разных реализациях. Он также расширяет тот же абстрактный класс и предлагает различные реализации абстрактных методов.

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

Резюме:

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

Абстракция в Java | Реальный пример абстракции в Java

Объявления


Интерфейс на Java Инкапсуляция в Java


Абстракция в Java

Абстракция — это концепция предоставления только необходимых основных характеристик и поведения по отношению к контексту.

Сокрытие данных известно как абстракция данных . В объектно-ориентированном языке программирования это реализуется автоматически при написании кода в виде класса и объекта.

Реальный пример абстракции в Java

Абстракция показывает пользователю только важные вещи и скрывает внутренние детали, например, когда мы едем на велосипеде, мы знаем только о том, как ездить на велосипеде, но не можем знать о том, как он работает ? А также мы не знаем внутреннего функционала велосипеда.

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

Примечание: Абстракция данных может использоваться для обеспечения защиты данных от несанкционированных методов.

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

Пример абстракции

класс Клиент
{
номер счета_числа;
плавающий баланс_сумма;
Имя строки;
инт возраст;
Строковый адрес;
аннулировать balance_inquiry()
{
/* для запроса баланса только номер счета
требуется, что означает оставшиеся свойства
скрыты для метода запроса баланса */
}
аннулировать fund_Transfer()
{
/* Для передачи номера счета фонда и
требуется баланс и остальные свойства
скрыты для метода перевода средств */
}
 

Как добиться абстракции?

Существует два способа достижения абстракции в Java

  • Абстрактный класс (от 0 до 100%)
  • Интерфейс (достижение 100% абстракции)

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

Разница между инкапсуляцией и абстракцией в Java

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

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

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

Абстракция реализована в Java с использованием интерфейса и абстрактного класса, а инкапсуляция реализована с использованием модификаторов доступа private, package-private и protected.

Преимущества абстракции данных в Java

Здесь мы обсудим некоторые из ее преимуществ, чтобы признать ее значимость. Преимущества абстракции данных приведены ниже;

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

About the Author

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

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

Related Posts