[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: абстрактные классы в пхп
Гость_MVP
До этого практически не имел дел с классами в пхп. Поэтому прошу помочь мне разобраться с задачей.

Есть класс товар, в котором начальная цена товара и наименование товара.
Есть абстрактный класс налог, который хранит в себе коэффициент наценки или скидки (бонуса).
Реализовать классы товаров, которые расчитывают розничную цену товара в зависимости от налоголов и бонусов применимых к товару по примеру:

$Apple = new Good( 'Apple', 20, new retail(), new bonus() );
- где Good - класс товара
- 'Apple' - название товара
- 20 - цена товара
- классы Retail, Bonus20 наследуются от класса налога tax.

Теперь готовтесь к шоку))) То что я уже успел накалякать:

abstract class tax{
$retail;
$bonus;
function retailf($retail){
$this->retail=$retail;
}
function bonusf($bonus){
$this->bonus=$bonus;
}
}

class retail extends tax{

}

class bonus extends tax{

}

class good{
$item;
$price;
function __construct($item, $price, $retail, $bonus){
$this->item=$item;
$this->price=($price*$retail)-($price*$retail)*$bonus;
}
}


Скажите что здесь я делаю не правильно и как эта задача должна выглядеть в правильном виде. Особенно сильно меня беспокоят первые три класса!
Заранее благодарствую!



Спустя 15 часов, 58 минут, 35 секунд (9.09.2010 - 11:19) linker написал(а):
Тут
$this->price=($price*$retail)-($price*$retail)*$bonus;
производишь математические операции с объектами, т.е. $retail и $bonus у тебя объекты. Вообще пока сложно что-либо сказать, но пока что-то не нравится, видимо мало кода.

Спустя 1 час, 46 минут, 34 секунды (9.09.2010 - 13:05) Гость_MVP написал(а):
вообщем я тут насочинял вот такое. работает. может кому пригодится:

<?
abstract class
tax{
public $ret_p=0.2;
public $bon_p=0.1;
public $vat_p=0.05;
abstract function mon();


}
class retail extends tax{
function mon(){
return $this->ret_p;
}
}

class bonus extends tax{

function mon(){
return $this->bon_p;
}
}

class vat extends tax{
function mon(){
return $this->vat_p;
}
}

class good{

function __construct($item, $price, $vat, $retail, $bonus){

$p=($price+($price*$retail))-($price+($price*$retail))*$bonus+$price*$vat;
print $item." ".$p;
}
}

//
$a=new retail();
$b=new bonus();
$c=new vat();
$apple = new good('apple', 20, $c->mon(), $a->mon(), $b->mon());
?>

Спустя 48 минут, 49 секунд (9.09.2010 - 13:54) linker написал(а):
В данном примере посоветую следующее
<?php
class
tax
{
public $Value;
public function __construct($Value) { $this->Value = $Value; }
}

class good
{
function __construct($item, $price, $vat, $retail, $bonus)
{
$p = ($price + ($price * $retail->Value)) - ($price + ($price * $retail->Value)) * $bonus->Value + $price * $vat->Value;
echo $item . " " . $p;
}
}

$apple = new good('apple', 20, new tax(0.05), new tax(0.2), new tax(0.1));
?>

Спустя 35 минут, 49 секунд (9.09.2010 - 14:30) Lenarfate написал(а):
еще почитай про шаблоны проектирования. в частности про factory
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.