Задать вопрос
  • Как сделать чтобы jQuery и MooTools работали и не мешали друг другу?

    вот выше @MaxKorz советует - поставьте dev-версию (не минимизированную), и сообщение об ошибке будет более информативным.
    Какая версия MooTools у вас стоит? Пробовали другую версию? У них на сайте есть with compatibility и without compatibility. Я сам MooTools не использовал, не знаю внутреннюю кухню...
  • Как сделать чтобы jQuery и MooTools работали и не мешали друг другу?

    У вас чат (код которого вы по ссылке привели) написаны на jQuery, так? А когда вы включаете noConflict вы заменяете $ на jQuery?
    Когда включается режим noConflict, то в переменной $ находится не jQuery, а MooTools (в вашем случае).
    Приведите текст ошибки, который выводится.
  • Как сделать чтобы jQuery и MooTools работали и не мешали друг другу?

    можно быстро подключить разные версии с cdn гугла:
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  • Есть ли свободные книги по програмиированию для колледжа?

    lexxpavlov
    @lexxpavlov Автор вопроса
    Смотрел, конечно. Но на ВикиУчебниках практически ничего нет интересного. Есть начало учебника по C#, но там очень мало переведённого на русский.
  • Есть ли свободные книги по програмиированию для колледжа?

    lexxpavlov
    @lexxpavlov Автор вопроса
    @tatu да, это я уже делаю, спасибо. В библиотеке ничего нет - специальность в колледже новая, и покупать не спешат. Свои методички делаем потихоньку. Ищу, а вдруг есть что-то ещё.
  • Есть ли свободные книги по програмиированию для колледжа?

    lexxpavlov
    @lexxpavlov Автор вопроса
    больше для галочки. Точнее, как - конкретно сейчас взяли за )( и требуют галочки. Но от этого всё равно требуется и для раздачи студентам, а то мне не очень нравится давать пиратские сканы.
  • Есть ли свободные книги по програмиированию для колледжа?

    lexxpavlov
    @lexxpavlov Автор вопроса
    всё на английском. Во-первых, для студентов колледжа не пойдёт, а во-вторых, мне больше нужно для того, чтобы официально занести в список литературы - поэтому только русский. Дримспарк знаю, спасибо.
  • Объясните что такое полиморфизм простыми словами ?

    @Petroveg Хорошо, давайте я так скажу.
    В статических языках есть два вида методов - обычные и виртуальные. Полиморфизм в них работает только на виртуальных. Что такое виртуальные - я попытался объяснить в своём ответе.
    В динамических языках "обычных" методов нет - есть только те, которые в статических называются виртуальными.

    >1) Реализация инкапсуляции, наследования и полиморфизма в каждом языке отличается
    Верно. Именно поэтому нужно (нужно!) понимать общие принципы, а не их реализации в конкретном языке. Я, как преподаватель, постарался показать более общий принцип, и указал, что в конкретном языке это реализуется так-то (согласен, что переход от общего к js я плохо показал - сейчас сделаю апдейт к своему ответу).

    >2) Термины вроде «виртуального метода» требуют пояснения.
    Требуют. Я попытался объяснить их в своём ответе, но, похоже, плохо. Опять же - см. апдейт.

    >мне кажется, что в Javascript некоторые вещи-таки можно объяснить просто
    В том и проблема. В javascript принцип полиморфизма применяется ВСЕГДА при вызове ЛЮБОГО метода (кроме, разве что, "статических", но и тут, наверняка, можно что-нибудь придумать). И в javascript можно вообще забыть, что есть такой принцип. Привыкнув к тому, что в javascript вообще не нужно думать о полиморфизме, потому что без полиморфизма невозможно, при переходе на другой язык возникнут проблемы.

    Кстати, как я уже говорил в другом комменте, полиморфизм может быть не только на основе наследования. Просто обычно, говоря о полиморфизме, имеют в виду именно реализацию на наследовании.
  • Объясните что такое полиморфизм простыми словами ?

    @Petroveg Я не совсем понимаю, к чему вы клоните. Вы считаете, что я ошибаюсь в своей трактовке полиморфизма? Тогда напишите своё объяснение, а не пишите вопросы. Автор вопроса спрашивает - что такое полиморфизм, вот и напишите это.
    Я мог написать про полиморфизм только в javascript, но я считаю, что так нельзя - лучше я укажу на общие принципы, и покажу, как общие принципы реализуются в javascript.
    Я очень люблю Javascript, мне очень нравится прототипное наследование - оно гораздо шире "обычного" ООП и позволяет полностью реализовать все "фишки" обычного ООП, но добавляет ещё и свои преимущества.
    Но то, что Javascript является динамически типизируемым языком, накладывает свои ограничения, и в статически типизируемых языках полиморфизм реализуется по другому.
    То, что вы говорите про статические методы, про собственные и несобственные (наследованные через цепочку прототипов) - это понятно, но это не входит в вопрос о полиморфизме. Эти понятия не нужны для объяснения полиморфизма (хотя и важны в практике программирования).
  • Объясните что такое полиморфизм простыми словами ?

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

    >1. Number.prototype.toString() и Object.prototype.toString() — это полиморфизм или нет?
    Нет, то что вы написали - не полиморфизм, это методы во встроенных объектах языка. Некорректный вопрос. У класса Number своя реализация toString, отличная от Object. Если вызывать toString у объектов разных классов, то будет полиморфизм.
    Если метод toString реализовать в своём классе, то это и будет использованием полиморфизма. Например, если сторонний код принимает разные объекты и вызывает у них этот метод для своих целей, то это будет проявлением полиморфизма.

    >2. Date.prototype.hasOwnProperty() и Object.prototype.hasOwnProperty() — это наследование или нет?
    Опять же, это просто методы, так их никто не вызывает. Так как в классе Date нет своей реализации метода hasOwnProperty, то он наследуется из Object. Так что да - это наследование.

    >3. В чём тогда между ними разница?
    Разницы в данном случае нет, потому что в javascript все методы виртуальные, а сам язык динамический. Именно поэтому я и нашёл возможным использовать другой язык для объяснения принципа полиморфизма.
  • Объясните что такое полиморфизм простыми словами ?

    Я считаю нормальным отвечать на другом языке, если это будет более наглядным и позволит лучше выразить свою мысль (тем более автор вопроса разрешил). Суть вопроса в том, чтобы объяснили понятие полиморфизма, и я считаю, что на javascript это понятие нормально объяснить не получится - нужен язык со статической типизацией. Если знакомиться с полиморфизмом только на динамическом языке, то потом при переходе на статически типизированный язык будут проблемы.
    Если начинающий программист дошёл до того, что хочет разобраться с достаточно сложными вещами (как полиморфизм), то он сумеет разобраться в коде других языков. А синтаксис c# достаточно прост, имхо. Я же не на Хаскеле или Лиспе написал код...
  • Какую программу взять для учёта времени работы за компьютером (тайм-трекер)?

    lexxpavlov
    @lexxpavlov Автор вопроса
    staffcop точно не то, а вот timedoctor и crocotime похожи на то, что нужно.
    Погляжу на них внимательнее. Спасибо!
  • Объясните что такое полиморфизм простыми словами ?

    Я не использовал javascript в своём примере потому что в js все методы виртуальные. В c# можно увидеть именно сам принцип полиморфизма, зачем надо было вводить понятие виртуальных методов.
    Полиморфизм - это возможность вызова нужного метода (версии метода) для конкретного объекта. Если вы хотите именно разобраться с полиморфизмом, то изучайте его в разных языках.

    Вот пример на Javascript. Для разнообразия приведу другой классический пример - с фигурами.

    Есть 4 класса - класс Точка, абстрактный Фигура, от которой наследуются Круг и Прямоугольник
    // class Point
    function Point(x, y) {
        this.x = x;
        this.y = y;
    }
    
    Point.prototype.move = function(x, y) {
        this.x += x;
        this.y += y;
    }
    
    // class Figure
    function Figure() {
        this.points = [];
    }
    
    Figure.prototype.move = function (x, y) {
        for (var i in this.points) this.points[i].move(x, y);
    }
    
    Figure.prototype.area = function () { 
        throw new Error("Not implemented"); 
    }
    
    Figure.prototype.scale = function () { 
        throw new Error("Not implemented"); 
    }
    
    // class Circle
    function Circle(center, radius) {
        Figure.call(this);
        this.points.push(center);
        this.radius = radius;
    }
    
    Circle.prototype = Object.create(Figure.prototype);
    
    Circle.prototype.area = function() {
        return Math.PI * this.radius * this.radius;
    }
    
    Circle.prototype.scale = function(scale) {
        this.radius *= scale;
    }
    
    // class Rect
    function Rect(a, b) {
        Figure.call(this);
        this.points.push(a);
        this.points.push(b);
    }
    
    Rect.prototype = Object.create(Figure.prototype);
    
    Rect.prototype.sizes = function() {
        var a = Math.abs(this.points[1].x - this.points[0].x);
        var b = Math.abs(this.points[1].y - this.points[0].y);
        return [a, b];
    }
    
    Rect.prototype.area = function() {
        var sizes = this.sizes();
        return sizes[0] * sizes[1];
    }
    
    Rect.prototype.scale = function(scale) {
        var sizes = this.sizes();
        this.points[1].x = this.points[0].x + sizes[0] * scale;
        this.points[1].y = this.points[0].y + sizes[1] * scale;
    }
    
    // создаём несколько фигур и помещаем их в массив для пакетной обработки
    var figures = [];
    figures.push( new Circle(new Point(1, 2), 3) );
    figures.push( new Rect(new Point(1, 2), new Point(4, 6)) );
    
    // вычисляем площадь всех фигур
    var area1 = 0;
    for (var i in figures) area1 += figures[i].area();
    console.log("first area", area1);
    
    // Увеличиваем все фигуры в два раза и перемещаем влево вверх
    console.log("scale figures by 2");
    for (var i in figures) {
      figures[i].scale(2); // вызовется у каждой фигуры свой метод
      figures[i].move(-1, -1); // вызовется родительский метод
    }
    
    // вычисляем площадь всех фигур
    var area2 = 0;
    for (var i in figures) area2 += figures[i].area();
    console.log("second area", area2);
  • Объясните что такое полиморфизм простыми словами ?

    если c# не понятен, могу написать и на javascript, но в нём не так наглядно, имхо.