Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   ООП в javascript. Алгоритмы построения приложений (https://javascript.ru/forum/offtopic/33186-oop-v-javascript-algoritmy-postroeniya-prilozhenijj.html)

dmitry111 13.11.2012 13:34

ООП в javascript. Алгоритмы построения приложений
 
Уже очень долго изучаю объектно-ориентированную методологию в построении приложений.
Понимаю плюсы от такого подхода и уже изучил не мало всяких статей на эту тему.
Но применить практически свои знания не получается.
В тех примерах, которые видел речь идет о примитивных задачах (кролик бежит, кролика накормили..), но на практике получается так, что помимо "кролика" есть еще много не взаимосвязанных сущностей(


У меня есть готовое рабочее приложение. Его можно разделить на 3 части:
1) Функции отвечающие за drag-n-drop.
2) Функции на события нажатия кнопок
3) Функции, работающие с Storage.

Само приложение простенькое:
Пользователь перемещает элементы(1) и сохраняет текущие значения в Storage(3). Работает с текущими сохраненными данными(2).
Как это сделать единым целым я понять не могу(

Вот к примеру - взять jQuery. Там "кролик" - это элемент, jQuery манипулирует им. Все просто.
Но что взять за основу в моем приложении? Или основ должно быть несколько, которые взаимодействуют между собой?

Буду рад любым ссылкам и советам!

dmitriymar 13.11.2012 15:35

Цитата:

Сообщение от dmitry111
Вот к примеру - взять jQuery. Там "кролик" - это элемент

с чего это? кролик там джиквери , а элемент свойство кролика
function a(data){
this.data=data;
.....
}
a.prototype.b=function(data){ действия над this.data..... return this;}
a.prototype.c=function(data){действия над this.data..... return this;}
a.prototype.d=function(data){действия над this.data..... return this;}
a.prototype.я=function(data){действия над this.data..... return какоето значение если метод должен чегото вернуть конкретное..}

$=new a('elem');
$.d(data1).c(data2).....

nerv_ 13.11.2012 15:43

http://javascript.ru/forum/jquery/32...ee-sdelat.html

dmitry111 13.11.2012 16:35

dmitriymar,

ага... я что-то ступил..

DjDiablo 13.11.2012 17:17

ООП это ответ на высокую сложность приложений.
Вы неувидите потребности в ООП работая над jQuery плагином.

Чтобы появилась необходимость решите такую задачу.
Сделайте 3 плагина для отображения содержимого тега TABLE
1) GRID'ом,
2) плиткой
3) списком UL/LI

Надо быть слепым чтобы не заметить уйму общих методов для всех 3х плагинов.
Вот тут и появляется необходимость в ООП.

определите все общие методы, и вынесите их в отдельный класс.
напишите три плагина наследующих от базового класса, общие методы.

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

UPD в вашем примере невижу необходимости в наследовании и полиморфизме.
Инкапсуляция, и абстракция - да. Тоесть я непонимаю зачем вам ООП, что в базовый класс выносить собрались ?

nerv_ 13.11.2012 17:42

Цитата:

Сообщение от DjDiablo
UPD в вашем примере невижу необходимости в наследовании и полиморфизме.
Инкапсуляция, и абстракция - да. Тоесть я непонимаю зачем вам ООП, что в базовый класс выносить собрались ?

инкапсуляция и абстракция уже есть ООП :)

DjDiablo 13.11.2012 17:48

Цитата:

nt,z yt exbkb ,kjrc[tve hbcjdfnm b ghj'rnbhjdfnm fh[bntrnehe ghbkj;tybz&
Перевод: тебя не учили рисовать архитектуру приложения ?

Масимальномаксимальный уже не тот, с годами его становится понимать всё сложнее :D

nerv_ 13.11.2012 17:50

Цитата:

Сообщение от DjDiablo
Масимальномаксимальный уже не тот, с годами его становится понимать всё сложнее

годы берут свое :D

dmitry111 13.11.2012 18:35

iMaxmaxmaximus,
10000110001 10001001011 10000111011 10000111110
10000110001 10001001011
10000111010 10000111110 10000111100 10001000011
10001000011 10001000111 10000111000 10001000010 10001001100
)

melky 13.11.2012 19:17

имхо, лучше сейчас начинать учить функциональщину, пока императивщина и ООП не проели мозг до конца.

да и сейчас всё чаще вижу (на том же хабре) статьи про функциональное программирование.

я пока начал вникать (вникаю на JS, не на хаскеле), это очень трудно, но это совершенно другой мир - более логичный и простой.


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