<?
php
// Online PHP compiler to run PHP program online
// Print "Try [Link]" message
echo "Try [Link]";
?><?php
class Produto {
// Atributos privados
private $nome;
private $precoCusto;
private $precoVenda;
private $margemLucro;
// Método construtor
public function __construct($nome, $precoCusto, $precoVenda) {
$this->nome = $nome;
$this->setPrecoCusto($precoCusto);
$this->setPrecoVenda($precoVenda);
}
// Métodos getters e setters
public function getNome() {
return $this->nome;
}
public function setNome($nome) {
$this->nome = $nome;
}
public function getPrecoCusto() {
return $this->precoCusto;
}
public function setPrecoCusto($precoCusto) {
$this->precoCusto = $precoCusto;
}
public function getPrecoVenda() {
return $this->precoVenda;
}
public function setPrecoVenda($precoVenda) {
if ($precoVenda < $this->precoCusto) {
echo "Erro: O preço de venda não pode ser inferior ao preço de custo.\
n";
return;
}
$this->precoVenda = $precoVenda;
$this->calcularMargemLucro();
}
public function getMargemLucro() {
return $this->margemLucro;
}
private function calcularMargemLucro() {
$this->margemLucro = $this->precoVenda - $this->precoCusto;
}
public function getMargemLucroPorcentagem() {
if ($this->precoCusto == 0) {
return 0;
}
return ($this->margemLucro / $this->precoCusto) * 100;
}
}
// Script de teste
function main() {
// Recebendo dados do usuário
echo "Informe o nome do produto: ";
$nome = trim(fgets(STDIN));
echo "Informe o preço de custo: ";
$precoCusto = (float)trim(fgets(STDIN));
echo "Informe o preço de venda: ";
$precoVenda = (float)trim(fgets(STDIN));
// Criando o objeto Produto
$produto = new Produto($nome, $precoCusto, $precoVenda);
// Exibindo informações
echo "Preço de custo: " . number_format($produto->getPrecoCusto(), 2) . "\n";
echo "Preço de Venda: " . number_format($produto->getPrecoVenda(), 2) . "\n";
echo "Margem de Lucro: " . number_format($produto->getMargemLucro(), 2) . "\n";
echo "Margem de Lucro Percentual (%): " . number_format($produto-
>getMargemLucroPorcentagem(), 1) . "\n";
}
// Executando o script de teste
main();
?>