2011-07-15 6 views
0

この問題にアプローチするにはどうすればよいでしょうか?PHP:オブジェクト指向の例(宿題)

私たちには2つのウールコレクターがあります。 年齢:ヤング、オールド

  • 羊は以下の属性を持っています。 カラー:白黒。

    年齢と色の値はどちらもランダムです。

  • 羊が古い場合、両方のマシンでのみ羊毛を収集します。エコーされますされていない場合:

この羊を剪断する準備ができていないが です。

  • 動物は、行の 例えば20羊のため、グループ内で処理されるべきです。 カウンタが各マシンに収集された合計 ウールである必要があります。両方とも黒です。&白です。

開始するには、構文に関するガイダンスが必要です。ありがとう!

+0

私はそれらのランダムな値で動作するかどうかはわかりませんが、私は前にそれらを作る必要があります関数が起動するか、または配列の内部にありますか? –

+4

あなた自身の宿題を行います。 –

+0

あなたは宿題を宿題としてタグ付けし、あなたの質問に書いておけば、 –

答えて

2

羊とマシンが別のオブジェクトである2台のマシンと

// assuming they are looking for a count of female sheep 
// and state variables 'male' and 'female' which are initialized at 0 
function processSheep($sheep) 
{ 
    foreach($sheep as $test)// stupid self-pluralizing nouns. 
    { 
     if($sheep->getGender() == Sheep::MALE) $this->males++; 
     else $this->females++; // obviously, you're going to need to swap 
           // out one of these increments for an echo. 
    } 
} 

function getNumberOfMales(){ return $this->males; } 

は、男性の数を計算します。ここにはスタートがあります:

class Sheep{ 

    const COLOR_WHITE = 'white'; 
    const COLOR_BLACK = 'black'; 
    const AGE_YOUNG = 0; 
    const AGE_OLD = 1; 

    private $_color; 
    private $_age; 

    public static function makeRandom(){ 
     $color = rand(0, 1) 
      ? self::COLOR_WHITE 
      : self::COLOR_BLACK; 
     $age = rand(0, 1); 
     return new self($color, $age); 
    } 

    public function __construct($color, $age){ 
     $this->_color = $color; 
     $this->_age = $age; 
    } 

} 

$sheep = Sheep::makeRandom(); 

あなたが今後どこにいるのかをお知らせください。


は、三項演算子スワップアウト:TomcatExodusに拡大

// ... 
if(rand(0, 1)){ 
    $color = self::COLOR_WHITE; 
}else{ 
    $color = self::COLOR_BLACK; 
{ 
// ... 
+0

ステートメントを除いて、私にはかなり分かります: >?自己:: COLOR_WHITE >:self :: COLOR_BLACK; なぜですか?第1のものでは、第2のものでは:。 –

+0

@Gabriel - その三元演算子は、http://ca.php.net/ternaryを参照してください。あなたは 'if/else'のためにそれを簡単に交換することができます、私はそれに応じて私の答えを更新します。基本的には、与えられた条件(この場合、 'rand(0、1)'は 'true'に評価され、'? 'の後の値を返します。 '。 – Dan

0

あなたのプログラムにはどんな種類のものがありますか?羊と機械。

羊と機械は同じクラスでなければなりませんか?まあ、彼らは同じ属性を共有していますか?マシンには年齢がありますか?いいえ、マシンに色が付いていますか?いいえ、彼らは同じクラスではありません。

ヒツジクラスを作成し、年齢と色のプロパティを指定します。クラスコンストラクターは、ageプロパティとcolorプロパティの値をランダムに割り当てて、各Sheepオブジェクトが作成されるときに設定されるようにする必要があります。

マシンクラスを作成します。どのくらいの黒い羊毛とそれが収集した白い羊毛がどれくらいあるかを保持するプロパティが必要です。

両方のクラスのプロパティのセッターとゲッターを作成します。

ここで、ヒツジとマシンオブジェクトを作成し、必要なタスクを実行するプログラムを作成します。

1

ここにいくつかのことがありますが、$age$colorのプロパティと、それらのプロパティを読み取る方法が必要であることがわかります。チャンスはあなたがそれらを書くことを望んでいないことです。あなたは他のオプションがあります(rand機能を必要とすることを意味する、ランダムに色や年齢を割り当てたい、今すぐ

getAge(){ return $this->age; } 
getColor(){ return $this->color; } 

を、しかしランドはあなたによく行います。

だから、私はおそらく持っているでしょう)。私はこれを行うとしたら今、私はコンストラクタでこのようなものを置く:

// assuming we're testing for male or female 
// you really should look into why this works. 
$this->gender = (rand(0, 1))? self::MALE: self::FEMALE; 
// notice the self::MALE and self::FEMALE? Those are class constants. 
// http://php.net/manual/en/language.oop5.constants.php 
// if you want to get this question *right* you'll need to look at those 

あなたのマシンが実際にはかなり簡単です。彼らは、各羊が老化しているかどうかだけを検査し、それに基づいてカウンターを増やします。 、Nマシンのアレイを有する男性の数

$mach1->getNumberOfMales() + $mach2->getNumberOfMales(); 

$males = 0; 
foreach($machs as $mach){ $males += $mach->getNumberOfMales(); } 
0

:また

<?php 

class Sheep{ 

    const COLOR_WHITE = 'white'; 
    const COLOR_BLACK = 'black'; 
    const AGE_YOUNG = 0; 
    const AGE_OLD = 1; 

    private $_color; 
    private $_age; 
    private $_sheered; 

    public function makeRandom() { 
     $this->_color = rand(0, 1) 
      ? self::COLOR_WHITE 
      : self::COLOR_BLACK; 
     $this->_age = rand(0, 1); 
    } 

    public function __construct(){ 
     $this->makeRandom(); 
    } 

    public function sheer() { 
     if($this->_age == 0) { 
      $this->_sheered['This sheep is not ready to be sheared.'] = $this->_sheered['This sheep is not ready to be sheared.'] + 1; 
     } else { 
      if($this->_color == 'black') { 
       $this->_sheered['black'] = $this->_sheered['black'] + 1; 
      } else { 
       $this->_sheered['white'] = $this->_sheered['white'] + 1; 
      } 
     } 
    } 

    public function results() { 
     return print_r($this->_sheered,true); 
    } 
} 

$batch = 20; 
$sheep = new Sheep(); 

while($batch > 0) { 
    $sheep->makeRandom(); 
    $sheep->sheer(); 
    $batch--; 
} 
echo $sheep->results()."\n"; 

?> 
関連する問題