Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

studypoo

[Resolvido] Javascript Orientado a Objeto. É por ai, quem se habi

Recommended Posts

Olá Pessoal,

Hoje foi um dia de muito estudo e gostaria de compartilhar aqui com vocês um script de orientação a objetos com Javascript.

Indico de cara sites como:

http://juliogreff.net/javascript-orientado-a-objetos-parte-1/

http://www.leandromerces.org/blog/2007/05/09/javascript-orientado-a-objetos/

Sites estes de onde tirei referência para este script.

Uma informação valiosa para quem, assim como eu, ainda não praticou muito o uso de poo em javascript

é que embora o desenvolvimento pareça estranho no começo, você tem que focar no que você quer.

Exemplo:

Preciso de um objeto de 'log do sistema'

que 'direcione' meu usuario

a partir de 'um link gerado dinamicamente'

que 'igualmente funcione' em qualquer 'pagina do site'

ou seja, este 'link tem de ser absoluto'.

Este objeto tem de ser, obviamente flexível em real-time,

ou seja, durante um script corrente ele possa ter seus atributos alterados.

... e por ai vai ...

 

O código está bem comentado, o que pode ajudar na hora de depurar.

Quem puder, e quiser contribuir implementando ou 'corrigindo' este,

desde que nos de o prestígio de agregar com justificativas teóricas,

tem o meu total consenso

 

 

 

<script language="javascript">

/*
 * Este script é responsavel
 * por reportar ao usuario qual
 * o erro que procede em real time
 * e colocar a opcao de visualizar
 * o erro em uma pagina formatada
 * como um relatorio de log
 */

function LogReport(){
    this.logReport = false;

    /* status operacional */
    this.startLog = function(){
      this.logReport = true;
    }

    /* status nao operacional */
    this.pauseLog = function(){
      this.logReport = null;
    }

   /* destruindo a variavel de controle de log,
    * irreversível para a instancia corrente
    */
    this.closeLog = function(){
      delete this.logReport;
    }

}

function LogPropieters(codeLog,codeElement){
 this.codeLog = codeLog;
 this.codeElement = codeElement;
 this.montaUrl = function(codeLog,codeElement){
   if(codeLog!=false){
     this.url = 'suportUrl.php?codeLog='+codeLog+'&codeElement='+codeElement;
   }else{
     this.url = undefined;
   }
 }
 this.call = function(){
   this.url;
 }
}

function OpcionalParam(atrib,valor){
         this.atrib = function(atrib,valor){
           if(typeof atrib != 'undefined'){
                    this.newatrib = atrib;
           }else{
                    this.newatrib = valor;
           }
         }
}

/* expandindo classes filhas 
 * para que possam acessar metodos 
 * e atributos da classe pai: LogReport;
 */

LogPropieters.prototype = new LogReport();
OpcionalParam.prototype = new LogReport();

/* instanciando as classes
 * filhas para relacionamento
 * conjunto. Perceba que envio como
 * parametros valores do tipo 'undefined'
 * para recolher apenas as instancias
 * e manter as propriedades publicas
 * como inconsistentes, ou seja,
 * do tipo 'false'
 */

var o = new OpcionalParam(undefined,false);
var p = new LogPropieters(o.atrib(undefined, false),o.atrib(undefined, false));

/*
 * agora posso passear com as mihas propriedades e metodos numa boa,
 * reescreve-las quantas vezes quizer, percebam que estamos
 * relacionando ao total:
 * 1 classe pai;
 * 2 classes filhas prototipadas;
 * 6 metodos publicos
 */

p.codeLog     = 210;
p.codeElement = 12;
p.montaUrl(p.codeLog, p.codeElement);
document.write(p.url);

document.write("<br>");

o.atrib(undefined,324);
p.codeLog     = o.newatrib;
p.montaUrl(p.codeLog, p.codeElement);
document.write(p.url);

document.write("<br>");

o.atrib(12,324);
p.codeElement = o.newatrib;
p.montaUrl(p.codeLog, p.codeElement);
document.write(p.url);

</script>

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.