Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Desafio: Implementar Propriedades e Métodos Estáticos em uma Classe | Dominando Classes e Herança em JavaScript
Domínio Avançado de JavaScript

bookDesafio: Implementar Propriedades e Métodos Estáticos em uma Classe

Tarefa

Imagine um sistema de gerenciamento de inventário para uma loja online. A classe Product precisa acompanhar o número total de produtos adicionados ao inventário, além de fornecer funcionalidade para comparar os preços de dois produtos.

  1. Definir uma Propriedade Estática:
    • Na classe Product, crie uma propriedade estática totalProducts inicializada com 0;
    • Cada vez que uma nova instância de Product for criada, incremente totalProducts em 1 para acompanhar quantos produtos foram adicionados ao inventário.
  2. Definir um Método Estático: Defina um método estático comparePrices(product1, product2) que recebe duas instâncias de Product como parâmetros e retorna:
    • "Product 1 is more expensive" se product1 tiver um preço maior;
    • "Product 2 is more expensive" se product2 tiver um preço maior;
    • "Both products have the same price" se ambos tiverem o mesmo preço.
12345678910111213141516171819202122232425262728293031
class Product { _____ _____ = 0; // Define static property for total products constructor(name, price) { this.name = name; this.price = price; Product._____+=1; // Increment totalProducts } // Static method to compare prices _____ comparePrices(product1, product2) { if (product1.price > product2.price) { return _____; } else if (_____ < _____) { return _____; } else { return 'Both products have the same price'; } } } // Testing const product1 = new Product('Laptop', 1200); const product2 = new Product('Smartphone', 800); const product3 = new Product('Tablet', 1200); console.log(Product.comparePrices(product1, product2)); // Expected: Product 1 is more expensive console.log(Product.comparePrices(product1, product3)); // Expected: Both products have the same price console.log(Product.comparePrices(product2, product3)); // Expected: Product 2 is more expensive console.log(Product.totalProducts); // Expected: 3
copy
  • Definir uma propriedade estática chamada totalProducts e inicializá-la com 0;
  • No construtor, incrementar Product.totalProducts em 1 cada vez que uma nova instância de Product for criada;
  • Definir um método estático comparePrices(product1, product2) que recebe dois parâmetros: product1 e product2;
  • Em comparePrices, utilizar uma instrução if para verificar se product1.price é maior que product2.price. Se verdadeiro, retornar "Product 1 is more expensive";
  • Utilizar uma instrução else if para verificar se product1.price é menor que product2.price. Se verdadeiro, retornar "Product 2 is more expensive".
12345678910111213141516171819202122232425262728293031
class Product { static totalProducts = 0; // Define static property for total products constructor(name, price) { this.name = name; this.price = price; Product.totalProducts+=1; // Increment totalProducts } // Static method to compare prices static comparePrices(product1, product2) { if (product1.price > product2.price) { return 'Product 1 is more expensive'; } else if (product1.price < product2.price) { return 'Product 2 is more expensive'; } else { return 'Both products have the same price'; } } } // Testing const product1 = new Product('Laptop', 1200); const product2 = new Product('Smartphone', 800); const product3 = new Product('Tablet', 1200); console.log(Product.comparePrices(product1, product2)); // Output: Product 1 is more expensive console.log(Product.comparePrices(product1, product3)); // Output: Both products have the same price console.log(Product.comparePrices(product2, product3)); // Output: Product 2 is more expensive console.log(Product.totalProducts); // Output: 3
copy

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 13

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain how static properties and methods work in JavaScript?

What would happen if I created more Product instances?

Can you show how to add more features to the Product class?

Awesome!

Completion rate improved to 2.22

bookDesafio: Implementar Propriedades e Métodos Estáticos em uma Classe

Deslize para mostrar o menu

Tarefa

Imagine um sistema de gerenciamento de inventário para uma loja online. A classe Product precisa acompanhar o número total de produtos adicionados ao inventário, além de fornecer funcionalidade para comparar os preços de dois produtos.

  1. Definir uma Propriedade Estática:
    • Na classe Product, crie uma propriedade estática totalProducts inicializada com 0;
    • Cada vez que uma nova instância de Product for criada, incremente totalProducts em 1 para acompanhar quantos produtos foram adicionados ao inventário.
  2. Definir um Método Estático: Defina um método estático comparePrices(product1, product2) que recebe duas instâncias de Product como parâmetros e retorna:
    • "Product 1 is more expensive" se product1 tiver um preço maior;
    • "Product 2 is more expensive" se product2 tiver um preço maior;
    • "Both products have the same price" se ambos tiverem o mesmo preço.
12345678910111213141516171819202122232425262728293031
class Product { _____ _____ = 0; // Define static property for total products constructor(name, price) { this.name = name; this.price = price; Product._____+=1; // Increment totalProducts } // Static method to compare prices _____ comparePrices(product1, product2) { if (product1.price > product2.price) { return _____; } else if (_____ < _____) { return _____; } else { return 'Both products have the same price'; } } } // Testing const product1 = new Product('Laptop', 1200); const product2 = new Product('Smartphone', 800); const product3 = new Product('Tablet', 1200); console.log(Product.comparePrices(product1, product2)); // Expected: Product 1 is more expensive console.log(Product.comparePrices(product1, product3)); // Expected: Both products have the same price console.log(Product.comparePrices(product2, product3)); // Expected: Product 2 is more expensive console.log(Product.totalProducts); // Expected: 3
copy
  • Definir uma propriedade estática chamada totalProducts e inicializá-la com 0;
  • No construtor, incrementar Product.totalProducts em 1 cada vez que uma nova instância de Product for criada;
  • Definir um método estático comparePrices(product1, product2) que recebe dois parâmetros: product1 e product2;
  • Em comparePrices, utilizar uma instrução if para verificar se product1.price é maior que product2.price. Se verdadeiro, retornar "Product 1 is more expensive";
  • Utilizar uma instrução else if para verificar se product1.price é menor que product2.price. Se verdadeiro, retornar "Product 2 is more expensive".
12345678910111213141516171819202122232425262728293031
class Product { static totalProducts = 0; // Define static property for total products constructor(name, price) { this.name = name; this.price = price; Product.totalProducts+=1; // Increment totalProducts } // Static method to compare prices static comparePrices(product1, product2) { if (product1.price > product2.price) { return 'Product 1 is more expensive'; } else if (product1.price < product2.price) { return 'Product 2 is more expensive'; } else { return 'Both products have the same price'; } } } // Testing const product1 = new Product('Laptop', 1200); const product2 = new Product('Smartphone', 800); const product3 = new Product('Tablet', 1200); console.log(Product.comparePrices(product1, product2)); // Output: Product 1 is more expensive console.log(Product.comparePrices(product1, product3)); // Output: Both products have the same price console.log(Product.comparePrices(product2, product3)); // Output: Product 2 is more expensive console.log(Product.totalProducts); // Output: 3
copy

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 13
some-alt