Advertisement
Guest User

Untitled

a guest
Nov 25th, 2014
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function Item(obj){
  2.     // Private fields
  3.     var id;
  4.     var nome;
  5.     var descricao;
  6.     var qtdDisponivel;
  7.     var previsaoEntrega ;
  8.     var preco;
  9.  
  10.     // Constructor function
  11.     function inicializa(){
  12.  
  13.         // Check for empty argument
  14.         if (obj === undefined)
  15.             return false;
  16.         // Check for missing arguments
  17.         if ((obj.id && obj.nome && obj.descricao && obj.qtdDisponivel && obj.previsaoEntrega) === undefined)
  18.             return false;
  19.         // Check for argument validity
  20.         var valido =   setId(obj.id)
  21.                     && setNome(obj.nome)
  22.                     && setDescricao(obj.descricao)
  23.                     && setQtdDisponivel(obj.qtdDisponivel)
  24.                     && setPrevisaoEntrega(obj.previsaoEntrega);
  25.         return valido;
  26.     }
  27.     // If constructor data not valid, return false
  28.     if (!inicializa()) return false;
  29.  
  30.     // Encapsulation via closures
  31.     return {
  32.         "getId": function(){ return id;},
  33.         "getNome": function(){ return nome;},
  34.         "setNome": setNome,
  35.         "getDescricao": function(){ return descricao;},
  36.         "setDescricao": setDescricao,
  37.         "setQtdDisponivel": setQtdDisponivel,
  38.         "getQtdDisponivel": function(){ return qtdDisponivel;},
  39.         "getPrevisaoEntrega": function(){ return previsaoEntrega;},
  40.         "setPrevisaoEntrega": setPrevisaoEntrega,
  41.         "getPreco": function(){ return preco;},
  42.         "setPreco": setPreco
  43.     }
  44.  
  45.     // Private methods
  46.     function validaNome (_nome) { return isNaN(_nome)};
  47.    
  48.     function setId (_id) {
  49.         if (isNaN(_id))
  50.             return false;
  51.         else
  52.             id = _id;
  53.             return true;
  54.     };
  55.    
  56.     // Public methods
  57.     function setNome(_nome){
  58.         if (validaNome(_nome))
  59.         {
  60.             nome = _nome;
  61.             return true;
  62.         }
  63.         else
  64.             return false;
  65.     };
  66.  
  67.     function setDescricao (_descricao){ descricao=_descricao; return true;};
  68.    
  69.     function setQtdDisponivel (_qtd) {
  70.         if (isNaN(_qtd) || _qtd < 0){
  71.             qtdDisponivel = NaN;
  72.             return false;
  73.         }
  74.         else{
  75.             qtdDisponivel = _qtd;
  76.             return true;   
  77.         }
  78.     };
  79.  
  80.     function setPrevisaoEntrega(_data){
  81.         if (_data > new Date()){
  82.             previsaoEntrega = _data;
  83.             return true;
  84.         }
  85.         else return false;
  86.     };
  87.  
  88.     function setPreco(_preco) {
  89.         if (isNaN(_preco) || _preco < 0){
  90.             preco = NaN;
  91.             return false;
  92.         }
  93.         else{
  94.             preco = _preco;
  95.             return true;   
  96.         }
  97.     };
  98. };
  99.  
  100.  
  101. var hp123 =  new Item(
  102.     {"id":213123,
  103.     "nome":"Impressora HP 123",
  104.     "descricao":"Bege e lenta.",
  105.     "qtdDisponivel": 2,
  106.     "previsaoEntrega": new Date(2015, 2, 28),
  107.     "preco": 12.90});
  108.  
  109. var hp0 = new Item();
  110. var hp1 = new Item({"id":10})
  111. var hp2 =  new Item(
  112.     {"id":"erro",
  113.     "nome":"Impressora HP 123",
  114.     "descricao":"Bege e lenta.",
  115.     "qtdDisponivel": 2,
  116.     "previsaoEntrega": new Date(2015, 2, 28),
  117.     "preco": 12.90});
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement