OOP (uso benéfico)
pela minha pergunta sobrecomo usar OOP de forma benéfica Eu assumo como um exemplo um CESTO ao qual seu dono (Tom) tendo um determinado ENDEREÇO (NY) pode adicionar ARTIGOS (Bicicleta, Carro). Finalmente, um BILL é impresso contendo todas essas informações.
Meu problema é: Como lidar com a coleta das informações desejadas (aqui: proprietário, cidade, quantidade de itens) de vários objetos? Porque eu acho que é estúpido fazer isso manualmente como feito abaixo (veja 4.), não é? (ainda mais desde que a quantidade de informação aumenta na realidade)
Então, qual é o "caminho limpo" para criar a conta / coletar as informações necessárias neste exemplo?
<code><?php $a = new basket('Tom','NY'); $a->add_item("Bike",1.99); $a->add_item("Car",2.99); $b = new bill( $a ); $b->do_print(); </code>
1
<code>class basket { private $owner = ""; private $addr = ""; private $articles = array(); function basket( $name, $city ) { // Constructor $this->owner = $name; $this->addr = new addresse( $city ); } function add_item( $name, $price ) { $this->articles[] = new article( $name, $price ); } function item_count() { return count($this->articles); } function get_owner() { return $this->owner; } function get_addr() { return $this->addr; } } </code>
2
<code>class addresse { private $city; function addresse( $city ) { // Constructor $this->city = $city; } function get_city() { return $this->city; } } </code>
3
<code>class article { private $name = ""; private $price = ""; function article( $n, $p ) { // Constructor $this->name = $n; $this->price = $p; } } </code>
4
<code>class bill { private $recipient = ""; private $city = ""; private $amount = ""; function bill( $basket_object ) { $this->recipient = $basket_object->get_owner(); $this->city = $basket_object->get_addr()->get_city(); $this->amount = $basket_object->item_count(); } function do_print () { echo "Bill for " . $this->recipient . " living in " . $this->city . " for a total of " . $this->amount . " Items."; } } </code>