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


Здравствуйте, уважаемые читатели блога сайт. Вспомните скучные уроки в школе или университете, на которых вам хотелось спать. Что в них было общего? Обилие научных понятий, и размытых формулировок.

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

Что такое абстракция? Зачем она нужна? И как она связана с другими сложными понятиями: абстрагированием, абстрактным мышлением? В этой статье мы разберём все вопросы по полочкам. Поехали!

Абстракция и абстрагирование - это упрощение реальности

Абстракция – это мысль, которая родилась в процессе абстрагирования (процесса исключения и отделения несущественного в данный момент, чтобы увидеть главное). Разочарованный читатель, наверное, подумал: «Ну вот, опять нет чёткого определения, а только размытая фраза». Наберитесь терпения, осталось совсем чуть-чуть.

У слова «abstractio» три варианта перевода с латыни:

  1. отвлечение;
  2. исключение;
  3. отделение.

Это мыслительные операции, которые проводит мозг над объектами реального мира в процессе абстрагирования. И появляются абстракции.

Вот несколько примеров для понимания .

  1. Вы вышли на улицу и посмотрели вверх. О чём подумали? «Газовая оболочка из пяти слоёв с водяным паром, содержит 78% азота, 21% кислорода и так далее». Да так и с ума сойти можно!

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

    Так вот, «небо» — это и есть абстракция . Вы можете пойти дальше и выделить другие существенные признаки объекта: цвет, погоду, время суток. Тогда возникнут такие абстрактные понятия: «голубое небо», «пасмурное небо», «ночное небо».

  2. В конце месяца вы сняли с банковской карты зарплату. Теперь ваша общая мысль – «деньги». Это тоже абстракция. В процессе абстрагирования вы мысленно исключили (отделили) несущественные связи объекта.

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

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

Тогда почему так трудно высидеть на скучных лекциях?

Абстрактные понятия - это высшая форма абстракции

Обобщать можно не только объекты реального мира, но и сами абстракции. Так формируются абстракции высокого порядка – абстрактные понятия. Ими оперируют фундаментальные и точные науки, чтобы описывать сложные закономерности.

Рассмотрим упрощённый пример того, как рождается абстрактное понятие.

На землю выпали атмосферные осадки из кристалликов льда. Это снег. Небо полностью закрыто облаками. Небо и снег белые. На улице белизна.

«Белизна» — это абстрактное понятие. Попробуйте его обобщить. Не получится. Другие примеры абстрактных понятий: истина, справедливость, время, вещество, информация.

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

Поэтому так трудно слушать теоретические лекции преподавателя.

Виды абстракций

Абстрагирование – это мыслительный процесс, который преследует определённую цель. Вычленить какой-то существенный признак, получить общую картину явления или выработать идеальную схему.

В зависимости от цели абстрагирования выделяют три вида абстракций.

  1. Изолирующая.
    Цель – выделить существенный признак объекта и сосредоточить на нём внимание. На столе лежит апельсин. Вы замечаете, что фрукт оранжевый или сладко-кислый.
  2. Обобщающая.

    Цель – получить общую картину явления. Для этого вы отвлекаетесь от частных признаков. Пример обобщающей абстракции – это математические уравнения. Они решаются по определённым правилам. Нет смысла мысленно «дробить» математические уравнения на цифры, плюс, минус, знак равенства, переменную.

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

  3. Идеализация.

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

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

Если абстрагирование – это процесс выработки абстракций, то абстрактное мышление – это оперирование ими.

Строгий экзаменатор критикует молодого человека, отвечающего слишком пространно: «Давайте ближе к предмету билета».

Почему студент так бросается умными фразами? Чтобы скрыть пробелы в знаниях, а то и полное их отсутствие. И в этом кроется суть абстрактного мышления.

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

Если бы не было понятия времени, то как бы люди договаривались о встречах? Как бы учёные описывали новые галактики, не имея представления о форме, расстоянии, скорости, веществах? А как бы без общих понятий взаимодействовали науки?

Абстрактное мышление – это форма познания, которая позволяет выйти из интеллектуального тупика, хотя бы на обобщённом уровне описать неизвестные явления. С его помощью строят догадки и видят проблему с разных углов.

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

  1. Конкретное мышление: жена друга – истеричка;
  2. Абстрактное мышление: возможно, друг обижал жену, она долго терпела, но теперь не может сдерживать эмоции.

Краткое резюме

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

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

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

Удачи вам! До скорых встреч на страницах блога сайт

Вам может быть интересно

Что такое истина - ищем истинное трактование, определяем ее критерии и изучаем виды (абсолютная и относительная истины) Что такое дедукция - зачем она нужна, чем отличается от индукции и как развить в себе дедуктивные способности Что такое звезда Абсурд - это оценочное суждение или философская категория Что такое генезис Что такое договор - основные понятия, виды и классификация договоров Что такое синтез и чем он отличается от анализа Что такое познание - виды, формы, методы и уровни познания Договор купли-продажи – назначение, виды, правила заполнения, образцы ОКАТО – расшифровка, назначение, поиск ОКАТО по ИНН и по адресу Что такое миф и мифология

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

Что такое абстрагирование?

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

Абстрагироваться — значит, в отпуске на берегу океана забыть про работу, быт и сосредоточиться на отдыхе

Мозг человека привык смотреть на вещи, ситуации, объединяя все имеющиеся у себя представление об этом объекте, не разделяя ее на составные части. Что такое абстрагирование? По определению психологии абстрагирование – это и есть отделение или даже отдаление одного составляющего от другого.

Для чего нужно умение абстрагироваться?

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

Умение абстрагироваться помогает выделить только важное, необходимое на этот момент, отбросив в сторону сопровождающую шелуху

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

Методы абстрагирования

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

Абстрагирование похоже на медитацию: вам нужно отбросить всё лишнее и сконцентрироваться на чем-то одном (важном в данный момент)

Учимся абстрагироваться

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

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

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

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

Тема эта мне пришла на ум тогда, когда я услышал разговоры начальников наших. Они разговаривают не так, как с простыми программистами. Как-то по другому. Абстрактно. Так что и я решил про это узнать более подробно.

У слова абстракция есть несколько трактовок, но перечислить их надо будет обязательно:

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

Теоретическое обобщение как результат абстрагирования.

Что-л., утратившее определенность, конкретность, реальность.»

Спасибо Википедии.

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

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

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

Есть два подхода к абстрагировании:

Абстрагирование эмпирической психологии - такое учение говорило о абстрагировании, как только о чувственном;

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

Примеры абстрагирования - гору можно представить в форме тетраэдра. Человека - в совокупности его элементов (кости, мышцы и тд). Кстати, абстрацией является алгоритм (который очень популярен в программировании).

Да, немного сумбурная статья получилась. Пожалуй, абстракция и абстрагирование - это более сложные понятия, в начале написания данной статьи я думал, что они проще. Так как я программист, то у меня есть абстрактное мышление. Я с детства мог концентрироваться только на некоторых свойствах объекта (забывая о остальных). Но надо как-то улучшить этот процесс, чтобы можно было полностью контролировать его. Так что, с сегодняшнего дня - буду учиться этому. Как я почитал в интернете - есть специальные упражнения, которые помогают абстрактно мыслить. Попробую их найти. Следите за обновлениями - будет очень интересно!

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

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

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

Во-вторых, в установлении независимости или пренебрежимо слабой зависимости изучаемых явлений от определенных факторов. Так, для решения задачи о моменте встречи движущихся друг к другу автомобилей отвлекаются от географического расположения исход­ных пунктов движения. Здесь важно только расстояние. Решающий задачу отвлечется от марки автомобилей, их масс и вообще от автомобиля, заменив их точками на отрезке пути, поскольку для решения задачи нужна только скорость. Более того, любые задачи окажутся неразрешимыми без процесса абстрагирования.

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

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


Исходя из различия целевых характеристик, в современной нау­ке наиболее широкое применение находят абстракции следующих основных типов:

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

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

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

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

Система абстракций образует научный язык, посредством кото­рого формируются и формулируются понятия: научный факт, научная проблема, научная идея, научная гипотеза, научный закон, научная теория.

Наименование параметра Значение
Тема статьи: Абстрагирование
Рубрика (тематическая категория) Программирование

ОБЪЕКТНАЯ МОДЕЛЬ

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

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

Кроме главных, назовем еще три дополнительных принципа: типизация, параллелизм, сохраняемость. Называя их дополнительными, мы имеем в виду, что они полезны в объектной модели, но не обязательны.

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

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

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

Абстрагирование – процесс выделœения абстракций в предметной области задачи.

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

Для примера рассмотрим системный блок компьютера. Пользователю, использующему компьютер для набора текста͵ не важно, из каких частей состоит данный блок. Стоит сказать, что для него это – коробка с кнопками и возможностью подсоединœения внешних запоминающих устройств. Он абстрагируется от таких понятий, как ʼʼпроцессорʼʼ или ʼʼоперативная памятьʼʼ. С другой стороны, у программиста͵ пишущего программы на языках низкого уровня, барьер абстракции лежит намного ниже. Ему крайне важно знать устройство процессора и команды, понимаемые им.

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

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

Будем называть клиентом любой объект, использующий ресурсы другого объекта͵ называемого сервером . Мы будем характеризовать поведение объекта услугами, которые он оказывает другим объектам, и операциями, которые он выполняет над другими объектами. Этот подход концентрирует внимание на внешних проявлениях объекта и реализует так называемую контрактную модель программирования . Эта модель состоит в следующем: внешнее проявление объекта рассматривается с точки зрения его контракта с другими объектами, в соответствии с этим должно быть выполнено и его внутреннее устройство (часто – во взаимодействии с другими объектами). Контракт фиксирует всœе обязательства, которые объект-сервер имеет перед объектом-клиентом. Другими словами, данный контракт определяет ответственность объекта – то поведение, за ĸᴏᴛᴏᴩᴏᴇ он отвечает.

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

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

Одна из ключевых абстракций в данной задаче – датчик . Известно несколько разновидностей датчиков. Все, что влияет на урожай, должно быть измерено. Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, нужны датчики температуры воды, температуры воздуха, влажности, кислотности, освещения и концентрации питательных веществ.

С внешней точки зрения датчик температуры - ϶ᴛᴏ объект, который способен измерять температуру там, где он расположен. Температура - ϶ᴛᴏ числовой параметр, имеющий ограниченный диапазон значений и определœенную точность и означающий число градусов по Цельсию.

Местоположение датчика - ϶ᴛᴏ неĸᴏᴛᴏᴩᴏᴇ однозначно определœенное место в теплице, температуру в котором крайне важно знать. Таких мест, вероятно, немного. Для датчика температуры при этом существенно не само местоположение, а только то, что данный датчик расположен именно в данном месте.

Рассмотрим элементы реализации нашей абстракции на языке С++.

typedef float Temperature; // Температура по Цельсию

typedef unsigned int Location; // Число, однозначно определяющее

// положение датчика

Здесь два оператора определœения типов Temperature и Location вводят удобные псевдонимы для простейших типов, и это позволяет нам выражать свои абстракции на языке предметной области. Temperature - ϶ᴛᴏ числовой тип данных в формате с плавающей точкой для записи температур.
Размещено на реф.рф
Значения типа Location нумеруют места͵ где могут располагаться температурные датчики.

Рассмотрим обязанности датчика температуры. Датчик должен знать значение температуры в своем местонахождении и сообщать ее по запросу. Клиент по отношению к датчику может выполнить такие действия: калибровать датчик и получать от него значение текущей температуры. Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, объект ʼʼДатчик температурыʼʼ имеет две операции: ʼʼКалиброватьʼʼ и ʼʼТекущая температураʼʼ.

struct TemperatureSensor { // Датчик температуры

Temperature curTemperature; // текущая температура в

// местонахождении датчика

Location loc; // местонахождение датчика

void calibrate(Temperature actualTemperature); // калибровать

Temperature currentTemperature(); // текущая температура

Данным описанием вводится новый тип TemperatureSensor. Важным здесь является то, что, во-первых, данные и функции, изменяющие их, объединœены вместе в одном описании, и, во-вторых, мы не работаем непосредственно с данными, а только посредством соответствующих функций. В частности, здесь мы использовали так называемые set- и get-функции , соответственно устанавливающие и возвращающие значения переменных (calibrate – set-функция, currentTemperature – get-функция).

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

TemperatureSensor TSensors; // массив из ста объектов типа

// TemperatureSensor

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

TSensors.calibrate(20.); // калибруется датчик номер 3

Поскольку имя объекта͵ для которого вызывается функция-член, неявно ей передается, в списках аргументов функций отсутствует аргумент типа TemperatureSensor, задающий конкретный датчик, над которым производятся действия. К этому объекту внутри функции можно явно обратиться по указателю this. К примеру, в телœе функции calibrate можно написать один из двух эквивалентных операторов

this -> curTemperature = actualTemperature;

Центральной идеей абстракции является понятие инварианта. Инвариант - ϶ᴛᴏ неĸᴏᴛᴏᴩᴏᴇ логическое условие, значение которого (истина или ложь) должно сохраняться. Для каждой операции объекта можно задать предусловия (ᴛ.ᴇ. инварианты, предполагаемые операцией) и постусловия (ᴛ.ᴇ. инварианты, которым удовлетворяет операция).

Рассмотрим инварианты, связанные с операцией currentTemperature. Предусловие включает предположение, что датчик установлен в правильном месте в теплице, а постусловие – что датчик возвращает значение температуры в градусах Цельсия.

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

Для проверки условий язык С++ предоставляет ряд специальных средств.

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

С++ имеет специальный механизм обработки исключений, чувствительный к контексту. Контекстом для генерации исключения является блок try (пробный блок). В случае если при выполнении операторов, находящихся внутри блока try, происходит исключительная ситуация, то управление передается обработчикам исключений, которые задаются ключевым словом catch и находятся ниже блока try. Синтаксически обработчик catch выглядит подобно функции с одним аргументом без указания типа возвращаемого значения. Для одного блока try должна быть задано несколько обработчиков, отличающихся типом аргумента.

try{ // пробный блок

catch(char * error){. . .} // имя аргумента используется в обработчике

catch(int){. . .} // имя аргумента не используется в обработчике

catch(…){. . .} // обрабатываются всœе исключения

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

Исключение будет обработано посредством вызова того обработчика catch, тип параметра которого будет соответствовать типу аргумента throw. При поиске подходящего обработчика всœе обработчики просматриваются в порядке их записи.

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

Пример.
Размещено на реф.рф
Рассмотрим стек, реализованный с использованием массива фиксированной длины.

int stack ; // не более ста элементов в стеке

int top=0; // номер доступного места для помещения элемента

void push(int el) {

if(top = = 100) throw 1; // проверить на переполнение

// (предусловие top < 100)

else stack = el; // поместить элемент в стек

if(top = = 0) throw 0; // проверить на пустоту

// (предусловие top > 0)

else return stack[--top]; // извлечь элемент из стека

try{ // пробный блок

if(i!=k) throw 2; // нарушено постусловие

catch(int error){. . .} // если error = 0, то стек пуст;

// если error = 1, то стек полон; если error = 2, то стек неработоспособен

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

Абстрагирование - понятие и виды. Классификация и особенности категории "Абстрагирование" 2017, 2018.