Рубрики
Программирование

Примеры JQuery «Настроить позицию элемента по Mouse»

bo52.z=1000;
$(document).mousemove(function(e){
     bo52.x = e.pageX; // положения по оси X
     bo52.y = e.pageY; // положения по оси Y
     //console.log("X: " + bo52.x + " Y: " + bo52.y); // вывод результата в консоль
});
bo52.f[2106141644]=(p)=>{
 bo52.z++;
 p.css('top',bo52.y+'px');
 p.css('left',bo52.x+'px');
 p.drag("start",function(){
  $(this).css('zIndex', bo52.z++);
 }).drag(function(ev,dd ){
$(this).css({top: dd.offsetY,left: dd.offsetX});
 }); 
}
Рубрики
ООП принцип "Полиморфизм"

ООП принцип Полиморфизм «Понятие»

Полиморфизм

определение
это что-то многообразное т.е. имеет поли много форм

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

выделяют два основных типа полиморфизма

  • параметрический является истинным

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

  • Объект, созданный из класса Person
    говорит «Привет я человек Вася».
  • Объект, созданный из класса Employee
    говорит «Привет я работник Петя»
  • Объект, созданный из класса Devoloper
    говорит «Привет я прогер Евпатий»

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

class Person{
...
public greeting(){
 console.log('Привет я человек и меня зовут ${this._firstName}');
}
...
}
class Employee extends Person{
...
public greeting(){
 console.log('Привет я работник и меня зовут ${this._firstName}');
}
...
}
class Developer extends Employee {
...
public greeting(){
 console.log('Привет я программист и меня зовут ${this._firstName}');
}
...
}

Первое, что приходит в голову это реализовать функцию, которая принимает три аргумента

первый массив объектов, созданных из Person
второй массив объектов, созданных из Работников
третий массив объектов, созданных из Разработчиков

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

Первоначальная задача реализовать такую функцию, которая позволит всем находящимся в комнате друг друга поприветствовать.

Создадим массив, который содержит все как разработчика, так и обычного работника, так просто человека. Сразу укажем, что это у нас массив типа данных т.е. явным образом мы не указываем, что у нас там помимо Person, находятся там и разработчик Developer, работник Employee. Мы просто указываем, что это массив типа Person.

const personList:Person[] = [developer,employee,person]

После чего мы создаём функцию и называем её «массовое приветствие» и аргументом она принимает массив типа Person и сразу же вызываем эту функцию с нашим массивом

Внутри самой функции мы итерируемся по массиву и для каждого объекта из этого массива вызываем функцию приветствия.

function massGreeting(persons:Person[]){
for (let i =0; i < persons.length; i++){
 const person = persons[i];
 person.greeting();
}
}
massGreeting(personList);

Смотри в логи и видем следующий результат: каждый из объектов поприветствовал нужным образом т.е.

  • разработчик сказал, что он разработчик
  • работник сказал, что он работник
  • человек сказал, что он человек

Не смотря, что класс Developer или класс Employee внутри этой функции не задействованы вообще ни как, но отработали соответствующие методы т.е. данное поведение называется полиморфизмом. Мы работаем с объектами, у которых функция greeting работает по разному. При этом в нашем примере там идёт всего лишь вывод в логи, но там может быть какая-то другая логика (более сложная). При этом у нас в массиве находится три разных типа, но функция massGreeting работает с ними всеми одинаково, но при это когда вызывается соответствующий метод, то логика в этом методе разная. В этом и заключается смысл полиморфизма т.е. в данном случае у нас форм, но работаем по сути мы с ними одинаково.

  • ad-hoc является мнимым

В примере класс калькулятор Calculator. В нём есть два метода, которые называются одинаково add и принимают одинаковые параметры, но разных типов. Первый метод работает с числовым типом number, а второй со строковым string. Если мы вызовем метод с двумя 5 то в результате получим 10 т.е. результат суммы этих чисел. Если вызовем со строками, то по сути получим контикинацию «55» т.е. получается, что один метод работает как бы с двумя типами данных. Это происходит за счёт перегрузки методов и такой полиморфизм считается мнимым.

Так мнимым полиморфизмом (так называемым add-hoc полиморфизмом) считается приведение типов. Это когда мы явно какой-то дочерний класс преобразовываем к родительскому.

class Calculator {
 add(a: number, b: number): number {
  return a + b;
 }

 add(a: string, b:string): string {
  return a + b;
 }
}
add(5,5)  -> reult = 10;
add("5","5") -> result = "55";
Рубрики
Текущие Задачи Уровень Важности 2

Отключение обновлений Windows 10

Этот Компьютер\Управление\
Службы и приложения\Службы\Центр Обновления Windows\Отключить

Рубрики
1C Конфигурации "Розница" 1С.Уроки "Розница 2.3 - Табачная Продукция"

Покупка табачной продукции с расхождениями по маркам

Администрирование\Обмен электронными документами\Настройки ЭДО\Настройки отправки
Read More В программе поддержан функционал работы с актами о расхождении ЭДО на основании расхождений данных поставщика и фактически поступившей продукции в части марок. Read Less

 Акт о расхождениях Read More
Покупатель имеет возможность после проверки товаров отправить поставщику электронный документ Акт о расхождениях с учетом кодов маркировки. Read Less


Настройка отправки документов ЭДО  Read More пользователь имеет возможность указать соответствующий формат электронного документа. Read Less

Рубрики
1C Конфигурации "Розница" 1С.Уроки "Розница 2.3 - Табачная Продукция"

Возврат маркируемой табачной продукции розничным покупателем

Контролировать статусы кодов маркировки при розничных продажах Read More
Также можно включить дополнительную опцию программы Контролировать статусы кодов маркировки при розничных продажах, благодаря которой при сканировании будет выполнен онлайн контроль статусов кодов маркировки. Если контроль не будет пройден, то товар будет запрещен к возврату. Например, если в ИС МП зарегистрирована информация о том, что продукция была продана конечному покупателю другим продавцом. . Read Less

Продажи\РМК Read More Возврат товаров от покупателя выполняется в РМК Read Less

в открывшейся форме необходимо нажать кнопку
Возврат (клавиша F5)

Чек ККМ Read More выбрать, которым оформлялась продажа возвращаемого товара. Read Less

Марки
указать причину возврата Read More В следующей форме нужно указать причину возврата.
нажав кнопку Марки Read Less


Подбора и проверки табачной продукции Read More
Далее необходимо вызвать эту форму, Read Less


В открывшейся форме нужно отсканировать возвращаемые экземпляры.

После сканирования в ТЧ формы
столбец Подобрано Read More отразится количество проверенного товара, а пиктограмма статуса проверки марок окрасится в зеленый цвет. Read Less

После этого необходимо нажать кнопку
Завершить подбор

Далее в форме выбирается способ выдачи денег покупателю
РМК 

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