Desafio: 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.
- Definir uma Propriedade Estática:
- Na classe
Product, crie uma propriedade estáticatotalProductsinicializada com0; - Cada vez que uma nova instância de
Productfor criada, incrementetotalProductsem 1 para acompanhar quantos produtos foram adicionados ao inventário.
- Na classe
- Definir um Método Estático: Defina um método estático
comparePrices(product1, product2)que recebe duas instâncias deProductcomo parâmetros e retorna:"Product 1 is more expensive"seproduct1tiver um preço maior;"Product 2 is more expensive"seproduct2tiver um preço maior;"Both products have the same price"se ambos tiverem o mesmo preço.
12345678910111213141516171819202122232425262728293031class 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
- Definir uma propriedade estática chamada
totalProductse inicializá-la com0; - No construtor, incrementar
Product.totalProductsem 1 cada vez que uma nova instância deProductfor criada; - Definir um método estático
comparePrices(product1, product2)que recebe dois parâmetros:product1eproduct2; - Em
comparePrices, utilizar uma instruçãoifpara verificar seproduct1.priceé maior queproduct2.price. Se verdadeiro, retornar"Product 1 is more expensive"; - Utilizar uma instrução
else ifpara verificar seproduct1.priceé menor queproduct2.price. Se verdadeiro, retornar"Product 2 is more expensive".
12345678910111213141516171819202122232425262728293031class 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
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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
Desafio: 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.
- Definir uma Propriedade Estática:
- Na classe
Product, crie uma propriedade estáticatotalProductsinicializada com0; - Cada vez que uma nova instância de
Productfor criada, incrementetotalProductsem 1 para acompanhar quantos produtos foram adicionados ao inventário.
- Na classe
- Definir um Método Estático: Defina um método estático
comparePrices(product1, product2)que recebe duas instâncias deProductcomo parâmetros e retorna:"Product 1 is more expensive"seproduct1tiver um preço maior;"Product 2 is more expensive"seproduct2tiver um preço maior;"Both products have the same price"se ambos tiverem o mesmo preço.
12345678910111213141516171819202122232425262728293031class 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
- Definir uma propriedade estática chamada
totalProductse inicializá-la com0; - No construtor, incrementar
Product.totalProductsem 1 cada vez que uma nova instância deProductfor criada; - Definir um método estático
comparePrices(product1, product2)que recebe dois parâmetros:product1eproduct2; - Em
comparePrices, utilizar uma instruçãoifpara verificar seproduct1.priceé maior queproduct2.price. Se verdadeiro, retornar"Product 1 is more expensive"; - Utilizar uma instrução
else ifpara verificar seproduct1.priceé menor queproduct2.price. Se verdadeiro, retornar"Product 2 is more expensive".
12345678910111213141516171819202122232425262728293031class 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
Obrigado pelo seu feedback!