Содержание
- Объекты
- Объекты как ассоциативные массивы
- Свойства
- Изменение свойств
- Неопределенные свойства
- Строки как индексы
- Сокращенная запись
- Проверка наличия свойства
- Перечисление свойств
- Наследование
- Создание объектов (Object.create)
- Получение прототипа (Object.getPrototypeOf)
- Наследование свойств
- Переопределение свойств
- Удаление свойств
- Методы
- Функции в свойствах
- Наследование функций
- Aliasing
- Неявная передача this
- Явная передача this
- Конструкторы
- Фабрики
- Конструкторы
- Прототипы в конструкторах
- Явное создание объекта и вызов конструктора
- Получение конструктора
- Объекты как ассоциативные массивы
- Замыкания
- Хранение состояния в замыкании
- Замыкание изменяемых переменных
- Трюк с объявлением промежуточной функции
- Общее состояние нескольких функций
- Модули
- Определение модуля
- Определение конструкторов
- Определение функций
- Использования модуля
- Прямое использование
- Импортирование
- Переменные класса
- Определение модуля
Домашнее задание 7. Объектные выражения на JavaScript
-
Разработайте классы
Const,Variable,Add,Subtract,Multiply,Divide,Negateдля представления выражений с тремя переменными:x,yиz.-
Пример описания выражения
2x-3:let expr = new Subtract( new Multiply( new Const(2), new Variable("x") ), new Const(3) ); println(expr.evaluate(5, 0, 0)); -
При вычислении такого выражения вместо каждой переменной
подставляется её значение, переданное в качестве аргумента
метода
evaluate. Таким образом, результатом вычисления приведенного примера должно стать число 7. -
Метод
toString()должен выдавать запись выражения в обратной польской записи. Например,expr.toString()должен выдавать «2 x * 3 -».
-
Пример описания выражения
-
Функция
parseдолжна осуществлять разбор выражений, записанных в обратной польской записи. Например, результатомparse("x x 2 - * x * 1 +").evaluate(5, 0, 0)должно быть число76, а результатомparse("x x 2 - * x * 1 +").toString()— строка «x x 2 - * x * 1 +». - Сложный вариант.Метод
diff("x")должен возвращать выражение, представляющее производную исходного выражения по переменнойx. Например,expr.diff("x")должен возвращать выражение, эквивалентноеnew Const(2). Выраженияnew Subtract(new Const(2), new Const(0))иnew Subtract( new Add( new Multiply(new Const(0), new Variable("x")), new Multiply(new Const(2), new Const(1)) ) new Const(0) )так же будут считаться правильным ответом. - Бонусный вариант.
Требуется написать
метод
simplify(), производящий вычисления константных выражений. Например,parse("x x 2 - * 1 +").diff("x").simplify().toString()должно возвращать «x x 2 - +» или аналогичное по сложности эквивалентное выражение. -
При выполнении задания следует обратить внимание на:
- Применение инкапсуляции.
- Выделение общего кода для операций.
- Минимизацию необходимой памяти.