Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Я не умею ООП. Допустим я пишу калькулятор на JS, какие тут объекты надо делать? (https://javascript.ru/forum/misc/55527-ya-ne-umeyu-oop-dopustim-ya-pishu-kalkulyator-na-js-kakie-tut-obekty-nado-delat.html)

Momon 02.05.2015 13:51

Я не умею ООП. Допустим я пишу калькулятор на JS, какие тут объекты надо делать?
 
Я вот как думаю, поправьте если не правильно, весь калькулятор это и есть объект. А отдельные функции (сложение, умножение и т.д.) это методы этого объекта.

Т.е. если у меня один калькулятор на странице - делать его объектом бессмысленно, теряется вся суть ООП.

А если у меня несколько калькуляторов на странице (например есть кнопочка "Добавить калькулятор", ну чтобы параллельные расчеты вести) тогда мне будет очень удобно использовать ООП. Второй и последующие калькуляторы на странице просто будут созданы из первого калькулятора, унаследовав все его методы.

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

PPS А ну да, там же ещё свойства есть. Допустим такая штука как М+ на калькуляторах запоминает число. Если я использую ООП то запоминание будет логичным - в том же объекте (у разных калькуляторов разные M+). А если на функциях делать, тогда не очень очевидно где мне это запоминать. Да, наверно в этом преимущество ООП. Т.е. какая то логичность всей конструкции получается, без этих комментариев к куче функций о том, что там где сохраняется. Плюс можно будет на разных калькуляторах какие нибудь режимы переключать т.е. изменяя конкретный объект. На функциях это тоже можно сделать с какой нибудь кучей флагов... А где эти флаги (свойства) сохранять? Да, наверно объекты логичнее.

nerv_ 02.05.2015 14:01

Цитата:

Сообщение от Momon
Т.е. если у меня один калькулятор на странице - делать его объектом бессмысленно, теряется вся суть ООП

неправильно)
1. Потому, что в любой момент у тебя может стать их несколько.
2. Проще писать сразу ООП
3. Потому, что калькулятор - это сущность/объект

Momon 02.05.2015 14:05

nerv_,
Ну слушайте, оформить простые функции как методы одного большого объекта это же одна минута. Я же про другое спрашиваю, зачем эта штука ООП вообще нужна. Я вот из-за такого подхода "всё делать на ООП" может быть и запутался. Порой смотрю и думаю: а тут то это зачем?

nerv_ 02.05.2015 14:12

Цитата:

Сообщение от Momon
Я же про другое спрашиваю, зачем эта штука ООП вообще нужна.

Для управления сложностью приложения. Т.е., чтобы писать меньше, проще и т.п.

Momon 02.05.2015 14:14

nerv_,
Ну а в целом пример с калькулятором я правильно понимаю? Или туплю?

nerv_ 02.05.2015 14:20

Цитата:

Сообщение от Momon
Ну а в целом пример с калькулятором я правильно понимаю?

скорее да, чем нет. Пиши пока так, не буду забивать тебе голову.

ruslan_mart 03.05.2015 10:10

Momon,

у тебя должно быть что-то типа такого:

var calc = new Calc();
calc.appendTo('#myDiv');

//...
calc.clear(); //Очищаем поле ввода
calc.addValue(3); //Добавляем значение в поле

//ну и т.д.


Ну ты понял. :)


Часовой пояс GMT +3, время: 17:35.