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

Примеры 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});
 }); 
}
Рубрики
Программирование

Web.Page «Загрузка модулей css и js на страницу через php в стиле WordPress»

default\php\sys\load.php
<?php function load_zero($p){ foreach ($p as $dir) load_row($dir); } function load($p){ foreach ($p as $path) foreach (scandir((__DIR__).'\..\..\..\default\'.$path.'\') as $dir) load_row('default\'.$path.'\'.$dir);       }   function load_row($p){ if (($dir=='.') or ($dir=='..')) return; switch (array_pop(explode('.', $p))){     case 'js':         echo '<script src="'.$p.'"></script>';         break;      case 'css':         echo '<link rel="stylesheet" href="'.$p.'">';         break; }             }  load_zero([ 'http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js', 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css', 'https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css', 'https://codegid.ru/default/js/jquery/jquery-1.7.2.js', 'https://codegid.ru/default/js/jquery/jquery.event.drag-2.2.js', 'https://codegid.ru/default/js/jquery/jquery.event.drag.live-2.2.js', 'https://codegid.ru/default/js/jquery/ui/1.12.0/jquery-ui.js', 'https://code.jquery.com/ui/1.12.1/jquery-ui.js', ]); load(['js/sys','js/funs','js/funs/events','js/funs/tegs','js/class','js/teg','css','js/sys/target']); ?> wp-contentthemestwentytwentyheader.php include_once (__DIR__)."/../../../default/php/sys/load.php";

 

Рубрики
ООП принцип "Полиморфизм"

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

Полиморфизм

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

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

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

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

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

  • Объект, созданный из класса 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 - Табачная Продукция"

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

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

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

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