Примитив плюс

Методы у примитивов

Красное полусухое

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

Красное сухое вино Primonero Li Veli, помимо основного используемого сорта винограда Примитиво, также содержит сорт Негроамаро. В переводе «негроамаро» означает — «черный и горький». Он отлично дополняет сладкое «Примитиво» и придает ему необходимый баланс вкуса. Полусухое красное вино Primitivo Feudi di San Marzano разбавлено довольно известным сортом Мерло, широко используемым при приготовлении французских вин.

Словом, производители умело дополняют основу, состоящую из «Примитиво», другими сортами винограда и получают новые великолепные напитки.

История происхождения

Сорт винограда Примитиво имеет связь с хорватским сортом Плавац Малый (Plavac Mali). Он был выведен в середине восемнадцатого века настоятелем монастыря Франческо Инделликати. Именно он и дал название винограду. В переводе с итальянского это слово означает «первый». На протяжении достаточно долгого времени виноматериалы из сорта Примитиво использовались только лишь для усиления цвета и вкуса других вин. Самостоятельной маркой вино из этого сорта стало сравнительно недавно.

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

Определение слова «Примитив» по БСЭ:

Примитив (от лат. primitivus — первый, самый ранний)в первоначальном смысле — памятник раннего периода эволюции искусства. Понятие «П.» возникло из характерного для эстетики и искусствознания 18-19 вв. противопоставления «младенческих» и «зрелых» ступеней развития искусства. при этом т. н. П. (особенно с 18 в.) могли привлекать целостностью и кажущейся простотой своего образного строя, т. е. чертами, наглядно выступающими при сравнении их с произведениями господствующих стилей. В современном искусствознании обозначение П. в целом утратило оценочный оттенок и обрело чисто номенклатурный смысл. Оно употребляется применительно к произведениям художников позднего средневековья (например, «итальянский П.»),к искусству народов, сохранивших черты первобытно-общинного строя (понятие «примитивное искусство» бытует, однако, лишь в зарубежной науке), к творчеству мастеров, не получивших систематического художественного образования, и представителей Примитивизма.Лит.: Previtali G., La fortuna dei primitivi dal Vasari ai neoclassici, Torino, 1964. Venturi L., iI gusto dei primitivi, Torino, 1972.

Примитив как объект

Вот парадокс, с которым столкнулся создатель JavaScript:

  • Есть много всего, что хотелось бы сделать с примитивами, такими как строка или число. Было бы замечательно, если бы мы могли работать с ними через вызовы методов.
  • Примитивы должны быть лёгкими и быстрыми.

Выбранное решение, хотя выглядит оно немного неуклюже:

  1. Примитивы остаются примитивами. Одно значение, как и хотелось.
  2. Язык позволяет осуществлять доступ к методам и свойствам строк, чисел, булевых значений и символов.
  3. Чтобы это работало, при таком доступе создаётся специальный «объект-обёртка», который предоставляет нужную функциональность, а после удаляется.

Каждый примитив имеет свой собственный «объект-обёртку», которые называются: , , и . Таким образом, они имеют разный набор методов.

К примеру, существует метод str.toUpperCase(), который возвращает строку в верхнем регистре.

Вот, как он работает:

Очень просто, не правда ли? Вот, что на самом деле происходит в :

  1. Строка – примитив. В момент обращения к его свойству, создаётся специальный объект, который знает значение строки и имеет такие полезные методы, как .
  2. Этот метод запускается и возвращает новую строку (показывается в ).
  3. Специальный объект удаляется, оставляя только примитив .

Получается, что примитивы могут предоставлять методы, и в то же время оставаться «лёгкими».

Движок JavaScript сильно оптимизирует этот процесс. Он даже может пропустить создание специального объекта. Однако, он всё же должен придерживаться спецификаций и работать так, как будто он его создаёт.

Число имеет собственный набор методов. Например, toFixed(n) округляет число до n знаков после запятой.

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

Конструкторы предназначены только для внутреннего пользования

Некоторые языки, такие как Java, позволяют явное создание «объектов-обёрток» для примитивов при помощи такого синтаксиса как или .

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

Например:

Объекты в всегда дают , так что в нижеприведённом примере будет показан :

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

К примеру, следующее вполне допустимо:

null/undefined не имеют методов

Особенные примитивы и являются исключениями. У них нет соответствующих «объектов-обёрток», и они не имеют никаких методов. В некотором смысле, они «самые примитивные».

Попытка доступа к свойствам такого значения возвратит ошибку:

Оцените статью

Итальянское вино primitivo («примитиво»): описание, отзывы

Методы у примитивов

Полигоны или многоугольники

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

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

Использование примитивов в редакторах

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

Линия как примитив

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

Графические редакторы

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

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

Векторная графика использует геометрические примитивы. Что такое графический примитив в векторной графике, уже говорилось выше. Это точки, линии, кривые и многоугольники (или полигоны) или векторные изображения. Такие фигуры основаны на математических выражениях, для представления изображений в компьютерной графике. Конвертировать векторную графику в растровую довольно просто, но из растровой в векторную гораздо сложнее. Некоторые программы пытаются это сделать. В дополнение к статической графике, есть анимация и программное обеспечение для редактирования видео. Компьютерная графика также может использоваться другим программным обеспечением для редактирования, таким как Adobe Photoshop, Pizap, Microsoft Publisher, Picasa и т. д. Еще один вариант — это программы для анимации, и видеоредакторы, такое как Windows Movie Maker.

Цифровой дифференциальный анализатор

Другой алгоритм — цифровой дифференциальный анализатор — представляет собой алгоритм генерации отрезка, основанный на вычислении либо dy, либо dx. Для этого нужно спроецировать линию на единичные интервалы в одной координате и определить соответствующие значения целого числа, ближайшие к пути линии, для другой координаты. Алгоритм принимает в качестве входных данных две позиции пикселей на концах отрезка. Горизонтальные и вертикальные различия между позициями конечных точек назначаются параметрам dx и dy. Разница с большей величиной определяет приращение шагов параметра. Начиная с положения пикселя определяется смещение, необходимое на каждом шаге, для создания следующего положения пикселя вдоль линии.

Дисплейный файл и кадровый буфер

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

Другой пример [ Step-by-step ]

Следующий пример поможет разобраться как JavaScript работает с примитивами.

JavaScript

// The Primitive 
let foo = 5;

// Defining a function that should change the Primitive value
function addTwo(num) {
   num += 2;
}
// Another function trying to do the same thing
function addTwo_v2(foo) {
   foo += 2;
}

// Calling our first function while passing our Primitive as an argument
addTwo(foo);
// Getting the current Primitive value
console.log(foo);   // 5

// Trying again with our second function...
addTwo_v2(foo);
console.log(foo);   // 5

Вы ожидали, что будет 7 вместо 5? Если так, тогда прочитайте, как работает этот код:

  • При вызове обеих функций , JavaScript ищет значение для идентификатора . JavaScript правильно определяет нашу переменную, созданную с помощью первого оператора
  • После этого JavaScript передает найденный аргумент в функцию в качестве параметра
  • Перед выполнением операторов в теле функции, JavaScript берет исходный переданный аргумент (который является примитивом) и создает его локальную копию. Эти копии, существующие только внутри областей функций, доступны через идентификаторы, указанные в определениях функций ( для , foo для )
  • Затем выполняются операторы функций:
    • В первой функции был создан локальный аргумент . Мы увеличиваем его значение на 2 (а не значение исходной переменной ).
    • Во второй функции был создан локальный аргумент. Мы увеличиваем его значение на 2 (а не значение исходной (внешней) переменной ).  Кроме того, в этой ситуации, внешняя переменная является недоступной никаким способом. Это связано с лексическими областями JavaScript и, как следствие, с затенением переменных. Локальная переменная скрывает внешнюю переменную . Чтобы получить больше информации, смотри Closures.
  • Таким образом, никакие изменения внутри наших функций не будут влиять на ИСХОДНУЮ вообще, так как мы работаем с ее копиями

Вот почему примитивы неизменяемы (immutable). Потому что мы не работаем над ними напрямую. Мы создаем копию и продолжаем работать с ней, не касаясь исходных значений.

Оцените статью