→ %d0%b0%d0%b1%d1%81%d1%82%d1%80%d0%b0%d0%b3%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5
Пример переведенного предложения: Расчет 81, скорая всё ещё на переезде. ↔ 81. Müdahale Aracı, ambulans hâlâ trenin arkasında.
Glosbe Translate
Google Translate
+ Добавить перевод Добавить
В настоящее время у нас нет переводов для %d0%b0%d0%b1%d1%81%d1%82%d1%80%d0%b0%d0%b3%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5 в словаре, может быть, вы можете добавить его? Обязательно проверьте автоматический перевод, память переводов или косвенные переводы.
АБСТРАГИРОВАНИЕ
abstreleştirme, mücerretleştirme, fikren ayırma, tecrit etme
слой абстрагирования оборудования (HAL)
donanım özet düzeyi
Добавить пример Добавить
Склонение Основа
Когда в 80-х годах люди якудзы увидели, как легко брать ссуды и «делать» деньги, они создали компании и занялись операциями с недвижимым имуществом и куплей-продажей акций.
Yakuza 80’li yıllarda kredi almanın ve bu sayede para kazanmanın ne kadar kolay olduğunu fark edince, firmalar kurdu; gayrimenkul ve hisse senedi spekülasyonu işine atıldı.
jw2019Пока мы с Майком доставали верных служащих почтовой службы США, оказалось, уже не 80-е, и новость, которую мы все так ждали, пришла совсем иным видом почты.
Mike ve ben Amerika Posta Servisi memurunu taciz etmiştik. Artık 80‘lerde değildik ve hepimizin beklediği haber farklı bir şekilde gelmişti.
OpenSubtitles2018.v3Да что ты понимаешь, в 80-ых это движение было пределом мечтаний любого мужика.
Bu hareket 80‘lerde beni bitirirdi.
OpenSubtitles2018.v3Ей исполнилось 80, чуть ли не в день интервью, И вот, я на сцене, она на сцене, и я начинаю задавать вопросы, и натыкаюсь на каменную стену.
Röportajı yaptığımızda neredeyse 80 yaşındaydı ve işte ikimiz oradayık ve hemen sorulara geçtim.
ted2019Через 4 года предполагаемая капитализация достигнет 80 миллиардов долларов.
Dört sene içinde, 80 milyar doların üstünde olacağı tahmin ediliyor.
ted2019Итак, в США с появлением лечения в середине 1990- х годов число ВИЧ- инфицированных детей снизилось на 80%.
Amerika’daki…… 1990 ́ların ortalarında ki tedavilerin ilerleyişinden bu yana…… HIV enfeksiyonlu çocukların sayısında…… yüzde 80 ́lik bir düşüş var.
Расчет 81, скорая всё ещё на переезде.
81. Müdahale Aracı, ambulans hâlâ trenin arkasında.
OpenSubtitles2018.v3Поэт ушел из жизни в 1921 году, почти 80 лет назад, а время все продолжает свой ход.
Öldüğü 1921’den bu yana, Dobson geçip gideli neredeyse 80 yıl olmuştur; zaman ise hâlâ sürüyor.
jw2019Расчет 81, Спасатель 3,
81 nolu müdahale aracı, 3.
OpenSubtitles2018. v3Он был некоторое время в милиции правого толка в середине 80-х.
80‘lerin ortalarında sağ görüşlü militanlarla vakit geçirmiş.
OpenSubtitles2018.v3Мы отвечали за территорию, которая простиралась от демилитаризованной зоны между Северным и Южным Вьетнамом до Дананга и еще 80 километров на юг.
Kuzey Vietnam ile Güney Vietnam arasındaki DMZ (askerden arındırılmış bölge)’den, Da Nang kentinin yaklaşık 80 kilometre güneyine dek olan bölgeden sorumluyduk.
jw2019Это клональная колония осинообразного тополя, растущего в Юте, ему буквально 80
тысяч лет.Bu da Utah’da bulunan 80, 000 yıllık eşeysiz çoğalan titrek kavak kolonisi.
Похоже, мы можем поехать по шоссе 81 и дальше через Даллас.
Bu 81 numaralı yoldan devam edip Dallas’a gidebiliriz gibi görünüyor.
OpenSubtitles2018.v3Мы, конечно, им пользуемся, но даже спустя почти 80 лет после его изобретения, звук всё равно распространяется во все стороны.
Hoparlörü açıyorsunuz ve onları kullandığımız yaklaşık 80 yıldır ses istediği her yere gidiyor.
Я оставил тебе 80 кг зерна.
Size 10 şinik ayırdım.
OpenSubtitles2018.v3Сам же Олбрайт полагал, что их написание было завершено «не позднее 80 года н. э.».
Albright’ın kendi görüşüne göre de, “onların yazılışı yaklaşık M.S. 80 yılından daha geç olmadan” tamamlanmıştır.
Этот отчисленный ученик умер в 82 года, в здравом уме, будучи основателем и первым директором Еврейского университета в Иерусалиме и основателем издательства Шокен Букс. Это популярное издательство в дальнейшем было поглощено издательским домом Рандом Хаус.
Bu liseden terk 82 yaşında öldüğünde, müthiş bir entelektüel, Kudüs İbrani Üniversitesi’nin kurucu ortağı ve ilk genel müdürü ve Schocken Books’un, ki ileride Random House tarafından satın alınan alkışlanacak bir markanın kurucusuydu.
ted2019В результате опроса людей, оставшихся в живых, и местных активистов, Хьюман Райтс Вотч составила список из 167 человек погибших в аль-Байде и 81 в Баниясе.
Hayatta kalanlar ve yerel aktivistlerle birlikte çalışan İnsan Hakları İzleme Örgütü, al-Bayda’da öldürülen 167 kişi ve Baniyas’ta öldürülen 81
kişinin yer aldığı bir liste derledi.hrw.org«»»Perhaps it will be my wedding day!»» — И быть может, он станет днем моего венчанья с Эшли»».»
«»«Belki de bu benim düğün günüm olur!»»»
LiteratureМы облетим эти два пульсара на минимальном расстоянии в 80 миллионов километров.
İki pulsarı minimum 80 milyon km mesafeden çembere aldık.
OpenSubtitles2018.v380 долларов стоят того.
80 dolarlık yatırımınız bunu yaptırır.
OpenSubtitles2018.v3Девочки, мне уже почти 80.
Kızlar, neredeyse 80 yaşındayım.
OpenSubtitles2018.v3И потому что оставшиеся 80% были все-равно раз в сто больше того, что вы получили бы при разводе.
Kalan% 80 boşanmadan sonra alacağınız paranın yüzlerce misliydi.
У одной женщины 80-ти лет в детстве было видение.
80’li yaşlarında bir bayan çoçuk gözünden bir görüntü gördü.
OpenSubtitles2018.v382-летний мужчина, диабетик, похищен около своего маленького милого дома среди бела дня.
82 yaşında şeker hastası adam, günün ortasında güzel ve küçük evinin önünden kaçırılıyor.
OpenSubtitles2018.v3 Список самых популярных запросов: 1K, ~2K, ~3K, ~4K, ~5K, ~5-10K, ~10-20K, ~20-50K, ~50-100K, ~100k-200K, ~200-500K, ~1MКакое место в познании играет абстрагирование. Абстрагирование. Определение целей на жизнь
Абстрагирование — метод научного познания в форме операции мысленного отвлечения от ряда свойств, связей и отношений исследуемого объекта, которые несущественны для решения поставленных задач. Операция отвлечения равносильна операции выделения в объекте существенных свойств, связей и отношений. Результат процесса абстрагирования называют абстракциями (с лат.
— отвлечение) или абстрактными предметами.Разовый цикл абстрагирования носит двухступенчатый характер. На первой ступени абстрагирования определяются несущественные свойства и связи, которыми можно пренебречь, отделить существенное от несущественного, вычленить наиболее важное и интересное для исследователя. Объективным основанием для такого вычленения является относительная независимость или пренебрежимо слабая зависимость изучаемых явлений и их составляющих от определенных факторов.
Подготовка акта абстрагирования (отвлечения) состоит, во-первых, в установлении того, что является общим для многих предметов определенного класса. Так, например, подготовка к формированию абстракции «живое существо» требует обнаружения общего для всех живых существ и в то же время отличающего их от неживых объектов. Таким свойством является способность к обмену веществ. Для абстракции «человек» общим и существенным будут отличительные признаки сознательного отражения среды; для всех существующих товаров, которые могут обмениваться друг на друга, будет понятие меновой стоимости и т.
Во-вторых, в установлении независимости или пренебрежимо слабой зависимости изучаемых явлений от определенных факторов. Так, для решения задачи о моменте встречи движущихся друг к другу автомобилей отвлекаются от географического расположения исходных пунктов движения. Здесь важно только расстояние. Решающий задачу отвлечется от марки автомобилей, их масс и вообще от автомобиля, заменив их точками на отрезке пути, поскольку для решения задачи нужна только скорость. Более того, любые задачи окажутся неразрешимыми без процесса абстрагирования.
Вторая ступень абстрагирования, в собственном смысле акт отвлечения, состоит в замещении исследуемого объекта другим, эквивалентным, менее богатым по свойствам, выступающим в качестве «модели» первого. Так, в рассмотренном выше примере задача с автомобилями замещается схемой движения двух точек, которая упрощает исследуемое явление и позволяет рассмотреть процесс в «чистом» виде.
Операция абстрагирования может применяться многократно как к реальным, так и абстрактным объектам. Переходя от одного уровня абстрагирования к другому, постепенно отвлекаясь от ряда свойств получают (в зависимости от задачи) абстракции все возрастающей степени общности, Так, например, отвлекаясь от множества свойств конкретного человека, можно построить абстрактную цепочку: мужчина — человек — живое существо — материальный объект — биологическая форма материи — материя. Как видно, высшие формы абстракции — это философские категории и их системы.
Исходя из различия целевых характеристик, в современной науке наиболее широкое применение находят абстракции следующих основных типов:
1. Изолирующая абстракция. Предполагает выделение свойств и отношений, присущих тому или иному предмету, мысленное отделение этих свойств и отношений от самого предмета, придание им статуса самостоятельного существования. Примерами таких абстрактных предметов могут служить понятия: растворимость, устойчивость надежность, красота, простота, белизна и т.д.
2. Обобщающая абстракция. Здесь отвлекаются от индивидуальных особенностей и черт предметов с выделением таких их общих признаков, которые позволяют вводить в рассмотрение классы предметов. Так, используемые в металлообработке резцы, сверла, фрез протяжки, напильники, ножовки и т.п. с помощью обобщающей абстракции образуют понятие класса «металлорежущий инструмент».
3. Абстракция потенциальной осуществимости, при которой отвлекаются от реальных границ конструктивных возможностей человеческого сознания, связанных с ограниченностью жизни человека в пространстве и времени. С этой точки зрения бесконечность выступает уже не как непосредственно данная, актуальная, а как потенциально осуществимая. Эта абстракция лежит в основе конструктивной математики, теории алгоритмов, абстрактных автоматов и других теорий.
4. Абстракция как продукт идеализации, образованная посредством предельного абстрагирования от свойств реальных предметов. Полученные абстракции (идеализированные объекты) широко распространены в науке: точка, прямая, инерция, точечный электрический заряд, абсолютно черное тело, несжимаемая жидкость, сплошная среда, идеальный газ. Идеализированные объекты составляют важный арсенал понятий научного знания, без которого оно функционировать не может.
Система абстракций образует научный язык, посредством которого формируются и формулируются понятия: научный факт, научная проблема, научная идея, научная гипотеза, научный закон, научная теория.
Познание – важная составляющая жизни человека. Человек познает мир вокруг, чувства, саму жизнь. Издревле люди стремились познать природу, космос, любые явления жизни на Земле.
Человека интересует все – лепестки цветка, птица, порхающая на небе, волны океана, другие планеты. Стремление к познанию – это естественное качество человека.
Стремление познавать мир подвигло человечество к созданию все новых и новых орудий труда и предметов быта. Стремление к познанию привело к созданию и развитию цивилизации.
Процесс познания не был бы столь интересным без абстрагирования. С помощью абстрагирования древние люди стремились увидеть со стороны Землю и космос, а также роль человечества в этом мире.
Абстрагирование в повседневной жизни
Абстрагирование позволяет человеку увидеть со стороны не только происходящие события и окружающую действительность, но и себя. Дает увидеть свои действия и свое поведение с другого ракурса, помогает понять свои устремления и причины тех или иных поступков.
Абстрагироваться – значит, увидеть реальность в качестве зрителя, ощутить себя вне всех событий. При таком подходе снимается эмоциональная зависимость от происходящего. Человеку открываются новые грани, которые он раньше не замечал.
При абстрагировании проблема предстает в ином свете. Становится возможным увидеть ситуацию со всех сторон. И поэтому приходит понимание того, почему это произошло, и как эту ситуацию исправить.
Например, возникла трудная ситуация, которую срочно нужно разрешить. Человек, вовлеченный в проблему, не видит возможные пути решения. Он думает, что находится в тупике. Абстрагировавшись от проблемы, человек поймет, как надо поступить в этой ситуации.
Роль абстрагирования
Абстрагирование помогает человеку в полном объеме познать себя, мир, и все, что ему интересно. И главное – абстрагирование позволяет познать суть жизни на Земле, тайну мироздания, познать собственную роль в этой жизни.
Абстрагирование как сознательный процесс познания и самопознания присущ человеку, осознавшему себя личностью. С другой стороны, маленькие дети тоже иногда рассказывают о себе с третьего лица, как будто наблюдают за собой со стороны. Возможно, для детей процесс абстрагирования является неосознанным. И в какой-то степени для них это механизм самозащиты.
Таким образом, абстрагирование для человека – ключевое свойство познания мира и жизни. Оно позволяет наиболее полно познать реальность. И это свойство заложено в человеке самой природой.
Исследования
Методы эмпирического и теоретического
¨ абстрагирование
¨ анализ и синтез
¨ индукция и дедукция
¨ моделирование и использование приборов
¨ исторический и логический методы научного познания
Понятие «абстрагирование» произошло от понятия «абстракция» (лат. abstractio — отвлечение). Абстрагироваться — это значит мысленно отвлечься от несущественных, частных свойств и связей предмета, с тем чтобы выделить существенные его признаки. Понятие «абстрактное» противопоставляется понятию «конкретное».
Абстрагирование носит в умственной деятельности человека наиболее универсальный характер, ибо каждый шаг мысли связан с этим процессом или с использованием его результата. Сущность этого метода — в мысленном отвлечении от несущественных свойств, связей, отношений предметов и в одновременном выделении, фиксировании одной или нескольких интересующих исследователя сторон этих предметов.
В практике исследования различают процесс абстрагирования и результат абстрагирования, называемый абстракцией. Под результатом абстрагирования понимается знание о некоторых сторонах объектов.
Процесс абстрагирования — это совокупность операций, ведущих к олучению результата (абстракции).
Примеры абстракции: шар, дом, море, дерево, дорога, воздух, газ, жидкость и т. п.
Процесс абстрагирования имеет сложный, двухступенчатый характер.
Первая ступень — отделение существенного от несущественного, вычле-наиболее важного в интересующих исследователя явлениях. Именно осуществляется оценка различных сторон явления, различных факторов и т.п., идет подготовка абстракции (отвлечения), которая включает:
а) установление того, что является общим для многих предметов определенного класса;
б) установление независимости или слабой зависимости изучаемых
явлений от определенных факторов, которой можно пренебречь, и др.
Вторая ступень состоит в реализации возможности абстрагирования установленной ранее. Это и есть в собственном смысле абстрагирование или отвлечение: некоторый объект А1 замещается другим, менее богатым свойствами объектом А2, выступающим в качестве «модели» первого.
Абстрагирование может применяться как к реальным, так и абстрактным объектам, т.е. к таким, которые сами уже являются результатом предшествующего абстрагирования. Следовательно, это процесс многоступенчатый (в том смысле, что абстрагирование может применяться к объекту многократно). Переходя от одного уровня абстрагирования к другому, мы получаем абстракции все возрастающей степени общности.
Например, постепенно отвлекаясь от все большего числа конкретных свойств определенного человека, можно получить подобный ряд абстракций:
мужчина ® человек ® живое существо ® материальный объект.
При этом познание как бы отходит, удаляется от действительности, взятой в ее целостности, конкретности и богатстве. Однако такой подход есть непременное условие познания глубинных, внутренних связей этой действительности.
Результатом процесса абстрагирования, как уже отмечалось выше, являются абстракции. Основная их функция состоит в том, что они позволяют заменить в познании сравнительно сложное простым, помогают разобраться во всем бесконечном многообразии явлений действительности путем их дифференциации, выделения в них самых различных сторон и свойств, установления отношений и связей между этими сторонами и свойствами, фиксации их в процессе познания и т. п.
В практике исследований наиболее широкое применение нашли абстракции следующих основных видов: абстракция отождествления, изолирующая абстракция, абстракция конструктивизации, абстракция актуальной бесконечности, абстракция потенциальной осуществимости.
Под абстракцией отождествления понимается образование понятия путем объединения в их особый класс, отождествления предметов, связанных отношениями типа равенства. При этом обязательным является отвлечение от ряда индивидуальных свойств таких предметов.
Изолирующая абстракция — это выделение свойств и отношений, неразрывно связанных с предметами, и обозначение их определенными «именами», что придает таким абстракциям статус самостоятельных предметов. примерами таких абстрактных предметов могут служить понятия «надежность», «устойчивость», «управляемость», «растворимость» и т.д.
Между абстракцией отождествления и изолирующей абстракцией есть пределенная общность, поскольку в обоих случаях производится, по существу, изоляция некоторых свойств объектов.
Однако разница между ними существенная, и состоит она в том, что первом случае «изолируется» комплекс свойств объекта, а во втором — единственное его свойство.
Сущность абстракции конструктивизации состоит в отвлечении от зыбкости и неопределенности границ реальных объектов, в «огрублении» действительности. Это позволяет сформулировать по отношению к этой «огрубленной» действительности некоторые законы, понять ее «в первом приближении» с тем, чтобы двинуться в познании дальше, глубже. В результате такого движения исходное упрощение действительности снимается, мы обнаруживаем в ней новые, более точные границы, стороны, этапы и т.п.
Абстракция актуальной бесконечности — это одна из основных абстракций математики и логики. Сущность ее состоит в отвлечении от незавершенности (и незавершимости) процесса образования бесконечного множества, от невозможности задать его полным списком всех элементов. Такое множество просто рассматривается как данное, как существующее.
Абстракция потенциальной осуществимости тоже широко используется в математике и логике и состоит в отвлечении от реальных границ человеческих возможностей, обусловленных ограниченностью нашей жизни в пространстве и времени. С этой точки зрения бесконечность уже выступает не как непосредственно данная, актуальная, а как потенциально осуществимая.
В нашей жизни, с огромным потоком информации, стрессами, которые подстерегают нас на каждом шагу, очень важно иногда уходить от повседневных дел, погружаться в себя и абстрагироваться от всего окружающего мира.
Что мы слышим чаще всего, если случается стрессовая ситуация: «абстрагируйся». Нахамили в магазине или метро — абстрагируйся, проблемы на работе — абстрагируйся, проблемы в семье — абстрагируйся. В последнее время это выражение стало очень модным.
Давайте обратимся к словарям, чтобы разобраться в этом вопросе. Так вот, в толковом словаре слово «абстрагироваться» значит как: «Отвлекаться от несуществующих сторон, свойств или связей предмета или явления с целью выделения их существенных признаков».
Есть и толкование глагола «абстрагировать»: «Рассматривать предмет или явление, выделяя их существенные, закономерные признаки и отвлекаясь от их несущественных сторон, свойств, связей».
Еще одно интересное трактование:
Глагол «абстрагироваться» происходит от слова «абстракция». Абстракцией принято называть нечто отвлеченное и концептуальное, не привязанное жестко к сиюминутным земным реалиям.
«Абстрагироваться» может означать подняться над ситуацией, отвлечься, смотреть на ситуацию шире, масштабнее, либо нейтрально, как сторонний наблюдатель .
Чем же абстрагирование может помочь нам в повседневной жизни
Абстрагирование помогает нам увидеть ситуацию в качестве стороннего наблюдателя, ощутить себя вне события. При этом снимается эмоциональная зависимость от происходящего.
Человеку открываются новые грани, которые он раньше не замечал. Проблема представиться в ином свете. Становится возможным увидеть ситуацию со всех сторон. И приходит понимание того, почему это произошло, и как можно это исправить.
Умение абстрагироваться весьма полезно. Это способность не отвлекаться на внешние раздражители, когда необходимо сконцентрироваться.
Можно ли научиться абстрагироваться от внешнего мира и как это сделать
Кто-то сравнивает абстрагирование с медитацией. А вас при слове «медитация» бросает в дрожь. Вы представляете себя, сутками сидящем на краю глубокого ущелья с «завязанными ногами» в позе «лотоса», а спасатели МЧС пытаются вас «развязать».
Каждый может научиться абстрагироваться. Универсальных рецептов, конечно же, нет, но главное верить, что все получиться. Каждый из нас когда-либо абстрагировался, но делал это не осознано, некоторые делают это несколько раз в день.
Наверняка с вами происходили похожие ситуации: «Вы на совещании, а ваши мысли постоянно возвращаются к ссоре с женой, которая произошла утром…», « Муж увлеченно рассказывает вам, как его любимая команда провела очередной матч, а вы прокручиваете в голове скандал в магазине, когда вам пытались продать гнилые фрукты».
Итак, теперь мы знаем, что абстрагироваться мы умеем, осталось начать применять наши умения с пользой для себя.
Следите за дыханием. Вдох — выдох, глубокий вдох — глубокий выдох.
Считайте мысленно до десяти. И помните про пункт 1.
Очень хорошо помогает музыка, особенно звуки природы, пение птиц, шум океана.
Посмотрите на небо: как плывут облака, летают птицы или самолеты…
Вы очень заняты? У вас нет времени? А что вы делаете, когда идете — едете на работу или в магазин? Чем заняты ваши мысли? Учитесь контролировать свои мысли и использовать каждую минутку, чтобы абстрагироваться от негатива.
«Ссора с женой… Вечер, вы возвращаетесь домой и приносите небольшой подарок (все что угодно: коробка конфет, цветы, плюшевый мишка), размер и цена не имеет значения. Она радостно обнимает и целует вас…» Каким будет ваш вечер, пока не известно, но ваш рабочий день пройдет в позитивном ключе.
«…Пошлите продавщицу, мысленно, в ее родной город. И представьте, что завтра вы покупаете прекрасную клубнику с соседнем магазине и на нее действует сезонная скидка. Улыбнитесь. Поцелуйте мужа и предложите поднять бокал (не важно чего) за его любимую команду».
При решении любых проблем важно иметь позитивный настрой.
Попробуйте посмотреть на некоторые обстоятельства, людей и ситуацию с другой стороны, может быть в них есть выгода лично для вас, а вы ее просто не видите, поскольку зацикливаетесь на негативных эмоциях.
После абстрагирования вы почувствуете прилив сил и энергии, и концентрироваться на решении определенных вопросов вам будет уже намного легче.
Абстрагирование (этот термин произошел от латинского слова abstractio, что обозначает отвлечение) определяет взгляд на ситуацию, человека или предмет с отстраненной точки восприятия. Таким образом, происходит отвлечение от конкретики и способность оценить ситуацию вообще. Понятие абстрагирования сыграло важнейшую роль в развитии множества наук.
Абстрагирование — пример
Любое абстрагирование требует двух действий: первое – это мелких и незначительных деталей, второе – сосредоточение внимания на явлении в общем и важных, значимых деталях.
Например, для того, чтобы изучить движение, сначала отбрасывают криволинейное движение во всех его разновидностях, затем – ускоренное движение, и в итоге для рассмотрения остается наиболее чистая и простая его форма, отражающая саму его суть. Таким образом, абстрагирование являет собой тенденцию фокусировки на идеальных условиях.
Не смотря на то, что это кажется элементарным, именно абстрагирование позволило вычленить и изучить важнейшие понятия – скорость, время, расстояние и т.д. Отсюда получаем, что абстрагирование — метод познания.
Этот метод позволяет отбросить менее значимое, вторичное, и сконцентрироваться на важнейшем. Не секрет, что в жизни человека нередко возникают ситуации, в которых важно определиться с главным направлением и не растрачивать силы попусту, распыляясь по мелочам. Определиться с этим первостепенным делом и поможет абстрагирование. Абстрагирование и конкретизация
У каждого понятия есть и своя противоположность. Абстрагирование и конкретизация – это как взгляд вблизи и издали. Стоя близко, вы рассмотрите все в мелочах (конкретизация), а стоя далеко, вы сможете оценить понятие в целом, не отвлекаясь на мелочи (абстрагирование). Таким образом, это два противоположных понятия.
Это легко проиллюстрировать примером. Если вы говорите «я буду худеть» — это абстракция. А если вы говорите «Я откажусь от сладкого и буду делать утренние пробежки» — это уже конкретика.
Метод абстрагирования и его цели
Абстрагирование в психологии и других науках позволяет достичь целого спектра целей, которые помогают более глубоко познать сущность явления, предмета или человека. Этот аналитический метод позволяет отбросить ряд конкретных ситуаций и взглянуть в целом, благодаря чему достигаются следующие цели:
Использовать абстрагирование можно в самых разных ситуациях. Отдаляясь от незначащих деталей, гораздо проще сконцентрироваться на самой сути интересующего явления.
Абстрактная фабрика
/ Шаблоны проектирования / Креативные шаблоны
IntentAbstract Factory – это творческий шаблон проектирования, позволяющий создавать семейства связанных объектов без указания их конкретных классов.
ЗадачаПредставьте, что вы создаете симулятор мебельного магазина. Ваш код состоит из классов, которые представляют:
Семейство сопутствующих товаров, скажем:
Стул
+Диван
+Журнальный столик
.Несколько вариантов этого семейства. Например, продукты
Chair
+Sofa
+CoffeeTable
доступны в следующих вариантах:Modern
,Victorian
,ArtDeco
.
Семейства продуктов и их варианты.
Вам нужен способ создавать отдельные предметы мебели так, чтобы они соответствовали другим предметам того же семейства. Клиенты очень злятся, когда получают неподходящую мебель.
Современный диван не сочетается со стульями в викторианском стиле.
Кроме того, вы не хотите изменять существующий код при добавлении в программу новых продуктов или семейств продуктов. Продавцы мебели очень часто обновляют свои каталоги, и вам не захочется каждый раз менять основной код.
Решение Первое, что предлагает шаблон абстрактной фабрики, — это явно объявить интерфейсы для каждого отдельного продукта семейства продуктов (например, стула, дивана или журнального столика). Затем вы можете заставить все варианты продуктов следовать этим интерфейсам. Например, все варианты стульев могут реализовать Кресло
интерфейс; все варианты журнальных столиков могут реализовать интерфейс CoffeeTable
и т. д.
Все варианты одного и того же объекта должны быть перемещены в единую иерархию классов.
Следующий шаг — объявить Abstract Factory — интерфейс со списком методов создания для всех продуктов, входящих в семейство продуктов (например, createChair
, createSofa
и createCoffeeTable
). Эти методы должны возвращать abstract типов продуктов, представленных интерфейсами, которые мы извлекли ранее: Chair
, Sofa
, CoffeeTable
и так далее.
Каждому бетонному заводу соответствует определенный вариант продукта.
А как насчет вариантов продукта? Для каждого варианта семейства продуктов мы создаем отдельный класс фабрики на основе интерфейса AbstractFactory
. Фабрика — это класс, который возвращает продукты определенного вида. Например, ModernFurnitureFactory
может создавать только объекты ModernChair
, ModernSofa
и ModernCoffeeTable
.
Клиентский код должен работать как с фабриками, так и с продуктами через их соответствующие абстрактные интерфейсы. Это позволяет вам изменить тип фабрики, которую вы передаете клиентскому коду, а также вариант продукта, который получает клиентский код, без нарушения фактического клиентского кода.
Клиент не должен заботиться о конкретном классе фабрики, с которой он работает.
Допустим, клиент хочет, чтобы фабрика производила стул. Клиенту не обязательно знать класс фабрики и не имеет значения, какой стул он получит. Будь то модель Modern или стул в викторианском стиле, клиент должен относиться ко всем стульям одинаково, используя абстрактный интерфейс Chair
. При таком подходе единственное, что клиент знает о кресле, это то, что он каким-то образом реализует метод sitOn
. Кроме того, какой бы вариант стула ни был возвращен, он всегда будет соответствовать типу дивана или журнального столика, произведенного на том же фабричном объекте.
Осталось уточнить еще один момент: если клиент работает только с абстрактными интерфейсами, что создает настоящие фабричные объекты? Обычно приложение создает конкретный фабричный объект на этапе инициализации. Непосредственно перед этим приложение должно выбрать заводской тип в зависимости от конфигурации или параметров среды.
СтруктураАбстрактные продукты объявляют интерфейсы для набора отдельных, но связанных продуктов, составляющих семейство продуктов.
Бетонные изделия — это различные реализации абстрактных изделий, сгруппированные по вариантам. Каждое абстрактное изделие (кресло/диван) должно быть реализовано во всех заданных вариантах (викторианский/модерн).
Интерфейс Abstract Factory объявляет набор методов для создания каждого из абстрактных продуктов.
Бетонные заводы реализуют методы создания абстрактного завода. Каждая конкретная фабрика соответствует определенному варианту продукции и создает только эти варианты продукции.
Хотя конкретные фабрики создают экземпляры конкретных продуктов, сигнатуры их методов создания должны возвращать соответствующие абстрактные продукты. Таким образом, клиентский код, использующий фабрику, не привязывается к конкретному варианту продукта, который он получает от фабрики. Клиент может работать с любым конкретным вариантом фабрики/продукта, если он взаимодействует с их объектами через абстрактные интерфейсы.
В этом примере показано, как можно использовать шаблон Abstract Factory для создания кроссплатформенных элементов пользовательского интерфейса без привязки клиентского кода к конкретным классам пользовательского интерфейса, сохраняя при этом все созданные элементы в соответствии с выбранной операционной системой.
Пример кроссплатформенных классов пользовательского интерфейса.
Ожидается, что одни и те же элементы пользовательского интерфейса в кросс-платформенном приложении будут вести себя одинаково, но выглядеть немного по-разному в разных операционных системах. Более того, ваша задача — убедиться, что элементы пользовательского интерфейса соответствуют стилю текущей операционной системы. Вы бы не хотели, чтобы ваша программа отображала элементы управления macOS, когда она выполняется в Windows.
Интерфейс Abstract Factory объявляет набор методов создания, которые клиентский код может использовать для создания различных типов элементов пользовательского интерфейса. Конкретные фабрики соответствуют конкретным операционным системам и создают элементы пользовательского интерфейса, соответствующие этой конкретной ОС.
Работает так: при запуске приложения проверяется тип текущей операционной системы. Приложение использует эту информацию для создания фабричного объекта из класса, соответствующего операционной системе. Остальная часть кода использует эту фабрику для создания элементов пользовательского интерфейса. Это предотвращает создание неправильных элементов.
При таком подходе клиентский код не зависит от конкретных классов фабрик и UI-элементов, пока он работает с этими объектами через их абстрактные интерфейсы. Это также позволяет клиентскому коду поддерживать другие фабрики или элементы пользовательского интерфейса, которые вы можете добавить в будущем.
В результате вам не нужно изменять клиентский код каждый раз, когда вы добавляете новый вариант элементов пользовательского интерфейса в свое приложение. Вам просто нужно создать новый фабричный класс, который производит эти элементы, и немного изменить код инициализации приложения, чтобы оно выбирало этот класс, когда это необходимо.
// Интерфейс абстрактной фабрики объявляет набор методов, которые
// возвращаем разные абстрактные продукты. Эти продукты называются
// семейство и связаны общей темой или концепцией.
// Продукты одного семейства обычно могут взаимодействовать между
// сами себя. Семейство продуктов может иметь несколько вариантов,
// но продукты одного варианта несовместимы с
// товары другого варианта.
интерфейс GUIFactory есть
метод createButton():Кнопка
метод createCheckbox (): флажок
// Бетонные заводы производят семейство продуктов, принадлежащих
// к одному варианту. Завод гарантирует, что
// полученные продукты совместимы. Подписи бетона
// методы фабрики возвращают абстрактный продукт, а внутри
// метод создания экземпляра конкретного продукта.
класс WinFactory реализует GUIFactory
метод createButton():Кнопка
вернуть новый WinButton()
метод createCheckbox(): флажок
вернуть новый WinCheckbox()
// У каждого бетонного завода есть соответствующий вариант продукта.
класс MacFactory реализует GUIFactory
метод createButton():Кнопка
вернуть новый MacButton()
метод createCheckbox(): флажок
вернуть новый MacCheckbox()
// Каждый отдельный продукт семейства продуктов должен иметь базу
// интерфейс. Все варианты продукта должны реализовывать это
// интерфейс.
Кнопка интерфейса есть
метод покраски()
// Бетонные изделия создаются соответствующими бетонными
// заводы.
класс WinButton реализует кнопку
метод paint() есть
// Отобразить кнопку в стиле Windows.
класс MacButton реализует Button is
метод paint() есть
// Визуализировать кнопку в стиле macOS.
// Вот базовый интерфейс другого продукта. Все продукты
// могут взаимодействовать друг с другом, но правильное взаимодействие
// возможно только между продуктами одного и того же конкретного варианта.
интерфейс Флажок стоит
метод покраски()
класс WinCheckbox реализует Checkbox
метод paint() есть
// Отрисовка флажка в стиле Windows.
класс MacCheckbox реализует Checkbox
метод paint() есть
// Визуализировать флажок в стиле macOS.
// Клиентский код работает только с фабриками и продуктами
// через абстрактные типы: GUIFactory, Button и Checkbox. Этот
// позволяет передать клиенту любую фабрику или подкласс продукта
// код, не нарушая его.
приложение класса
частная полевая фабрика: GUIFactory
кнопка закрытого поля: Кнопка
приложение-конструктор (фабрика: GUIFactory)
this.factory = фабрика
метод createUI() есть
эта.кнопка = factory.createButton()
метод paint() есть
кнопка.краска()
// Приложение выбирает тип фабрики в зависимости от
// текущие параметры конфигурации или среды и создает их
// во время выполнения (обычно на этапе инициализации).
класс ApplicationConfigurator это
метод main() есть
config = прочитатьApplicationConfigFile()
если (config.OS == "Windows") то
фабрика = новая WinFactory()
иначе если (config.OS == "Mac") тогда
фабрика = новая MacFactory()
еще
throw new Exception("Ошибка! Неизвестная операционная система. ")
Приложение приложения = новое приложение (заводское)
ПрименимостьИспользуйте абстрактную фабрику, когда ваш код должен работать с различными семействами связанных продуктов, но вы не хотите, чтобы он зависел от конкретных классов этих продуктов — они могут быть неизвестны заранее или вы просто хотите обеспечить возможность расширения в будущем.
Abstract Factory предоставляет вам интерфейс для создания объектов из каждого класса семейства продуктов. Пока ваш код создает объекты через этот интерфейс, вам не нужно беспокоиться о создании неправильного варианта продукта, который не соответствует продуктам, уже созданным вашим приложением.
Подумайте о реализации абстрактной фабрики, если у вас есть класс с набором фабричных методов, которые размывают его основную ответственность.
В хорошо разработанной программе каждый класс отвечает только за одну вещь . Когда класс имеет дело с несколькими типами продуктов, возможно, стоит выделить его фабричные методы в автономный фабричный класс или в полноценную реализацию абстрактной фабрики.
Как реализоватьСоставьте матрицу различных типов продуктов по сравнению с вариантами этих продуктов.
Объявить абстрактные интерфейсы продуктов для всех типов продуктов. Затем заставьте все конкретные классы продуктов реализовать эти интерфейсы.
Объявите интерфейс абстрактной фабрики с набором методов создания для всех абстрактных продуктов.
Реализовать набор конкретных заводских классов, по одному для каждого варианта продукта.
Создайте заводской код инициализации где-нибудь в приложении. Он должен создавать экземпляр одного из конкретных фабричных классов, в зависимости от конфигурации приложения или текущей среды. Передайте этот фабричный объект всем классам, создающим продукты.
Просканируйте код и найдите все прямые обращения к конструкторам продуктов. Замените их вызовами соответствующего метода создания фабричного объекта.
- Вы можете быть уверены, что продукты, которые вы получаете с завода, совместимы друг с другом.
- Вы избегаете жесткой связи между конкретными продуктами и кодом клиента.
- Принцип единой ответственности . Вы можете извлечь код создания продукта в одном месте, что упрощает поддержку кода.
- Открытый/Закрытый принцип . Вы можете внедрять новые варианты продуктов, не нарушая существующий клиентский код.
- Код может стать более сложным, чем должен быть, так как вместе с шаблоном вводится много новых интерфейсов и классов.
Многие проекты начинаются с использования фабричного метода (менее сложного и более настраиваемого с помощью подклассов) и развиваются в направлении абстрактной фабрики, прототипа или конструктора (более гибкого, но более сложного).
Builder фокусируется на пошаговом построении сложных объектов. Abstract Factory специализируется на создании семейств связанных объектов. Abstract Factory возвращает продукт немедленно, тогда как Builder позволяет выполнить некоторые дополнительные этапы конструирования перед получением продукта.
Классы абстрактной фабрики часто основаны на наборе фабричных методов, но вы также можете использовать Prototype для составления методов этих классов.
Abstract Factory может служить альтернативой Facade, когда вы хотите только скрыть способ создания объектов подсистемы из клиентского кода.
Вы можете использовать Абстрактную Фабрику вместе с Мостом. Это объединение полезно, когда некоторые абстракции, определенные Bridge , могут работать только с конкретными реализациями. В этом случае Abstract Factory может инкапсулировать эти отношения и скрыть сложность от клиентского кода.
Абстрактные фабрики, конструкторы и прототипы могут быть реализованы как синглтоны.
Абстракция и инкапсуляция
Абстракция данных
Абстракция данных — чрезвычайно распространенный термин, когда говорят о методологиях программирования. Но что это на самом деле означает?
По сути, абстракция — это конструкция, отделяющая реализацию некоторых вещь из вариантов ее использования. Он «инкапсулирует» некоторую обобщенную реализацию в согласованный интерфейс. Помните первый урок по C++ — абстракции данных? Переменные являются примером абстракции. Они абстрагируют процесс чтения и записи значений простым интерфейсом присваивания и арифметики.
В практическом программировании абстракция данных предполагает отделение интерфейса (или API) некоторой системы от ее реализации. В C++ это обычно реализуется с помощью классов и связанных с ними шаблонов доступа. Например, можно создать абстракцию «список», где интерфейс включает методы для хранения и извлечения упорядоченных значений. Базовая реализация не должна быть известна, чтобы иметь возможность использовать этот «список».
Однако это ни в коем случае не единственный тип абстракции данных. Функции, структуры данных, объекты, API, языки — все это абстракции. Их объединяет то, что они предоставляют удобный интерфейс для более «абстрактного» (или общего) уровня, будь то более конкретный код, низкоуровневые аппаратные операции или даже другой язык.
Но чем полезна абстракция данных? Самым большим преимуществом является то, что это позволяет «более крупной» программе использовать абстракцию последовательно и без изменений, даже если реализация под абстракцией резко изменится. Если базовая структура «списка» была изменена с массива на связанный список, код, использующий интерфейс «список», обновлять не нужно.
Сокрытие данных
Абстракция тесно связана с концепцией сокрытия данных. Сокрытие данных — это просто процесс фактического сокрытия реализации абстракции таким образом, чтобы пользовательский код не мог ее коснуться. Хотя вопрос о том, следует ли всегда поддерживать сокрытие данных, является спорным, он обеспечивает полезный уровень безопасности, поскольку гарантирует, что абстрагированная реализация работает в своей собственной сфере, не беспокоясь о том, что другой код проникнет внутрь и изменит ситуацию.
В C++ это обычно относится к использованию закрытых и защищенных членов, а также интерфейсов. Мы уже рассматривали модификаторы доступа к классам, поэтому сейчас не будем их повторять. Однако что такое интерфейс? Некоторые языки, такие как Java, позволяют вам определять классы «интерфейса», которые полностью определяют интерфейс. Это также известно как «контракт на реализацию». Если класс хочет реализовать интерфейс, он наследует требуемый интерфейс и может последовательно использоваться спецификацией интерфейса. В C++ интерфейсы могут быть определены путем создания базового класса только с чисто виртуальными методами. Однако использование полиморфизма всегда приводит к снижению производительности, поэтому на практике интерфейсы C++ используются редко. Вместо этого «скрытые» элементы данных просто помечаются как «частные» или «защищенные».
API
API или интерфейс прикладного программирования — это термин для одного из этих интерфейсов к абстракции. API могут быть большими, маленькими или где-то посередине. До сих пор я говорил об относительно небольших API, например, об одном классе. Однако API для более крупных абстракций — скажем, графической библиотеки — могут охватывать множество различных функций, классов, интерфейсов, перечислений и даже языков.
API, как правило, делятся на две основные категории дизайна: минимальный и расширенный. Минимальные API-интерфейсы включают только ту функциональность, которая необходима для использования в более крупном проекте. Минимальные API имеют тенденцию развиваться, когда кто-то создает абстракцию внутри проекта. Примером этого может быть структура данных для конкретного использования.
Рекомендуемые API, с другой стороны, стремятся предоставить функциональность, подходящую для всех мыслимых вариантов использования в своей области, даже если это означает, что большая часть из них никогда не будет использоваться в конкретном проекте. Этот тип дизайна полезен при создании API для использования во многих проектах или для распространения среди многих людей. Если большие API-интерфейсы достаточно велики, они, как правило, вводят свой собственный стиль использования, синтаксис и мышление — язык, специфичный для предметной области. Рекомендуемые API включают такие библиотеки, как SDL, OpenGL, DirectX, Boost и многие другие.
Модульность и соединение
Другой целью абстракции данных является модульность. Как вы могли догадаться, модульность — это мера того, насколько легко модуль может быть переназначен, заменен, перемещен или иным образом изменен. Идеальная ситуация модульности позволяет вам вытащить любой компонент программы и использовать его в другом месте, а также легко добавить другую реализацию этого компонента обратно в вашу основную программу.