Важно: ООП ООП и еще раз ООП
Ящетаю, на этом форуме недостаточно внимания уделяется наиболее сильной стороне жаваскрипта -- ООП. Решил попытаться восполнить этот недостаток.
Предлагаю постить тут задачи по ООП и решения. Можно решение выложить сразу, дабы потом кто-нибудь попытался его улучшить, а можно, типа, заинтриговать, выложить только задание, пусть другие ищут решения. Можно выкладывать, для сравнения, решения на других языках. Основное условие -- чтобы задача не предполагала знания каких-либо специализированных вещей. Она должна быть заточена, преимущественно, на реализацию логики, объектной системы, взаимодействие между компонентами логики приложения, мб, паттерны проектирования и тп. Для затравки предлагаю банальщину -- классическую реализацию банковского аккаунта. Дальше будем прикручивать расширения и фичи к ней. Но можете предложить и что-то свое. ЗЫ Очень надеюсь что тема взлетит. Убожество тем которые в последнее время тут, преимущественно, фигурируют, в стиле "как скрыть див по ай ди а потом его показать..." вгоняют в глубокий сон, сцука. Задвиньте уже, наконец, что-то интересное. |
Цитата:
Цитата:
|
Цитата:
Ладно, вот простейшая реализация: Account={ balance: 0, create: function(){return Object.create(this)}, withdraw: function(amount){if((this.balance-amount)<0) return console.log("out of limit!"); this.balance-=amount}, deposit: function(amount){this.balance+=amount}, check: function(){console.log(this.balance)} } ////////example////////////////// account=Account.create() with(account){ deposit(100) check() //>>>> 100 withdraw(50) check() //>>>> 50 withdraw(70) //>>>> out of limit! check() //>>>> 50 } |
Цитата:
Я когда пишу приложение - у меня есть один класс материнка (app) при его создании он создает кучу других классов, которые устанавливают свои события(работа с каталогами, деревьям, всплывающими окнами и т.д.) и во все эти классы он сам себя передает. В результат из любого места кода можно получить полный доступ к любому элементу, не используя глобальную область видимости, достаточно написать this.app....и т.д. |
Цитата:
|
Цитата:
Но конечно проблему ограничения доступа это не решает, скорее решает конфликты имен и упрощает структуру приложения. |
Часовой пояс GMT +3, время: 09:07. |