Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Мотивирующий пример применения ООП в js / 13 сообщений из 13, страница 1 из 1
18.01.2010, 21:09:28
    #36416840
kmaw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мотивирующий пример применения ООП в js
В js ООП никогда особо не пользовался, и не считаю особо нужным (наверное, потому что не было положительного опыта, к тому же ООП в js довольно "странное" после C++/Java). Можно мотивирующий пример, который показывает некоторый ООП прием в js, и как было бы плохо без ООП в этом примере.

Спасибо
...
Рейтинг: 0 / 0
18.01.2010, 21:18:17
    #36416849
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мотивирующий пример применения ООП в js
kmaw,

Обычно, технология под задачу выбирается, а не "сделайте мне 'красиво'". Покажите, что написали на своём ООП, а я скажу есть у мена такое, или нету.
ПС. Кстати, на яве не я один здесь умею писать... . :)
Имхо, C++ Вы не знаете и знать не можете, судя по вопросу.
...
Рейтинг: 0 / 0
18.01.2010, 21:23:22
    #36416858
kmaw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мотивирующий пример применения ООП в js
я не утверждаю, что знаю. просто в C++/Java ООП мне это кажется понятным, а в js - не совсем понятно: сейчас читаю буквари по ООП в js, хотелось бы пример и контрпример, которые были бы в пользу ООП в js, что-то типо того...
...
Рейтинг: 0 / 0
18.01.2010, 21:25:52
    #36416861
kmaw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мотивирующий пример применения ООП в js
да и "сделайте мне красиво" тоже не помешало бы :)
...
Рейтинг: 0 / 0
18.01.2010, 21:30:42
    #36416864
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мотивирующий пример применения ООП в js
kmaw,

А при чём здесь ООП? Что Вы писать хотите? З а д а ч а какая? Я непонятно вопрос задал? Нужно ли Вам это ООП? Кто Вам это сказал? Ещё раз: какая задача, то есть, что Вы хотите получить?
...
Рейтинг: 0 / 0
18.01.2010, 21:35:28
    #36416866
kmaw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мотивирующий пример применения ООП в js
Например, наваял класс (если это так можно назвать) - оболочку для вызова функций com-объектов для Download/Upload файлов

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
function BackgroundFileWork(
    hostName, 
    port, 
    downloadComplete,
    uploadComplete,
    downloadProgress,
    uploadProgress) 
{
    this.HostName = hostName;
    this.Port = port;
      
    var objDownload = null;
    var objUpload = null;
    
    this.Init = function() 
    {
        try
	    {
	        var comObj1 = document.createElement("object");
            comObj1 = document.createAttribute("classid","clsid:DE6D2D41-6A36-4624-A0A4-AD587FCF10DC");
        
            var comObj2 = document.createElement("object");
            comObj2 = document.createAttribute("classid","clsid:B055E7B6-06F0-4726-A0E5-C32773E635A7");
            
            objDownload = new ActiveXObject("FileWork.DownloadControl");
            objUpload = new ActiveXObject("ChilkatUpload.ChilkatUpload");
            
            if(!objDownload.ValidateWorkDirectory())
                objDownload.SetDefaultWorkDirectory();

	    }
        catch(e)
	    {
		    alert(e.description);
		    return false;
	    }
        return true;
    };
    
    this.SetWorkDirectory = function() 
    {
        objDownload.SetWorkDirectory();
     };
    
    function timerDownload(obj)
    {
        var prcnt = 0 ;
        var timeOut = setTimeout(function() {timerDownload(obj);},  1000 );
        
        if(objDownload.ProgressMax!= 0 )
		    prcnt = Math.round(objDownload.Progress/objDownload.ProgressMax)* 100 
        
        obj.DownloadProgress(prcnt);
	    if(objDownload.UploadComplete) 
	    {
		    clearTimeout(timeOut);
		    
		    obj.DownloadComplete(prcnt);    		
		    return;
	    }
    }

    function timerUpload(obj)
    {
        var timeOut = setTimeout(function() {timerUpload(obj);},  1000 );
        obj.UploadProgress(objUpload.PercentUploaded);
	    
	    if(objUpload.UploadSuccess) 
	    {
		    clearTimeout(timeOut);
		    obj.UploadComplete(objUpload.PercentUploaded);
		    return;
	    }
    }
    
    this.UrlDownloadToFile = function(pathFileServer, clientFileName) 
    {
        try
        {
            objDownload.UrlDownloadToFile(this.HostName+":"+this.Port+"/"+pathFileServer, objDownload.WorkDirectory+"\\"+clientFileName);
            
            timerDownload(this);
            
        }
	    catch(e)
	    {
		    alert(e.description);
		    return false;
	    }
    };
    
    this.UrlUpload = function(pageUploadPath) 
    {
        try
        {
            objUpload.Hostname=this.HostName;
            objUpload.Path="/"+pageUploadPath;
            objUpload.Port=this.Port;
            objUpload.AddFileReference(objDownload.LastDownloadFileName, objDownload.LastDownloadFileName);
            objUpload.BeginUpload();
            
            timerUpload(this);
            
        }
	    catch(e)
	    {
		    alert(e.description);
		    return false;
	    }
    };
    
    this.ExecuteDownLoadFile = function() 
    {
        try
        {
            objDownload.ExecuteDownLoadFile();
            
        }
	    catch(e)
	    {
		    alert(e.description);
		    return false;
	    }
    };
    
    this.DownloadComplete = downloadComplete;
    
    this.UploadComplete = uploadComplete;
    
    this.DownloadProgress = downloadProgress;
    
    this.UploadProgress = uploadProgress;
}

Все тоже самое можно было и обычными js-функциями сделать. Для повторного использования разницы никакой нет. как-то так. может это можно как-то иначе, более "ООП", чтоли реализовать?
...
Рейтинг: 0 / 0
18.01.2010, 21:54:28
    #36416890
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мотивирующий пример применения ООП в js
kmawНапример, наваял класс (если это так можно назвать) - оболочку для вызова функций com-объектов для Download/Upload файлов
Вы понимаете в каком форуме находитесь?
Здесь COM-сервера не пишут и COM-объекты не используют.
ПС. Аплоад файла делается на любом языке и на любой платформе не более, чем тремя строчками кода, а аплоад - вообще просто ссылкой. М.б. Вы не на тот форум попали?
...
Рейтинг: 0 / 0
18.01.2010, 21:55:53
    #36416892
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мотивирующий пример применения ООП в js
kmawНапример, наваял класс (если это так можно назвать) - оболочку для вызова функций com-объектов для Download/Upload файлов
Сразу бы и сказали, что не о http говорите. Извините, не понял.
...
Рейтинг: 0 / 0
18.01.2010, 22:03:05
    #36416900
kmaw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мотивирующий пример применения ООП в js
Да нет, это тот форум - здесь же про js - не важно для чего этот набросок класса используется (он отражает мой уровень понимания ООП в js): если использовать только глобальные переменные и обычные функции (а не функции внутри функции и переменные члены), то по сути ничего не изменится - может только чуть удобнее читать код. а мне хочется увидеть в чем прикол ООП в js (полиморфизма то ведь нет, насколько я знаю)
...
Рейтинг: 0 / 0
18.01.2010, 23:25:21
    #36416973
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мотивирующий пример применения ООП в js
kmaw,

Где-то статью хорошую видел. Там как раз сравниваются обычные ООП и как в яваскрипте. Не помню урл, но гуглил что-то типа prototype.
...
Рейтинг: 0 / 0
19.01.2010, 03:15:10
    #36417059
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мотивирующий пример применения ООП в js
1. Если очень придирчиво подойти к данному вопросу - "ООП в js" - то буквально все им пропитано, ибо в js "все есть объект" ... и т.д. по цепочке.
2. Язык все-таки скриптовый, интерпретируемый, поэтому очень зажат как средой, так и выполнением (о применении и вовсе молчу - в подавляющих случаях как небольшое дополнение к оформлению странички).
3. Я для себя раскрыл и активно применяю принципы построения и использования ООП в js в стыковке данных и функциональности страницы. Основное применение - сложные страницы с загрузкой данных, возможной подгрузкой и конечным аплоадом их на сервер. Поясню: работа страницы часто связана с отражением данных и достаточно сложной реакцией активных элементов на изменение самой страницы. Так вот чтобы не плодить скрипты со сложными функциями, в каждой из которых происходит доморощенное изменение элементов или их реакции, я создаю ООП-структуру, которая сама связывает данные и реакцию элементов. А сами элементы напрямую не работают с данными, а лишь с методами и свойствами моей ООП-структуры, которая сама и контролирует страницу с элементами, и данные, и их преобразование. Конечно, для достаточно простых страниц это слишком, а вот для слишком навернутых страниц, особенно со сложными активными таблицами, иногда незаменимая вещь. Так сказать, очень мотивированный пример.
...
Рейтинг: 0 / 0
19.01.2010, 12:17:28
    #36417683
an0nym
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мотивирующий пример применения ООП в js
ИМХО, чтобы понять зачем ООП в JS, надо для начала к прототипированному программированию привыкнуть. После C++ будет не очень легко.
...
Рейтинг: 0 / 0
19.01.2010, 13:10:53
    #36417876
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мотивирующий пример применения ООП в js
kmaw,

покурите, например, ExtJS. Осознайте масштабы. Попробуйте представить ЭТО без ООП.
Мотивирует? :)
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Мотивирующий пример применения ООП в js / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]