dostałem zadanie ostatnio do rozwiązania tzw. "problem plecakowy", poniżej zamieszczam kod. Usłyszałem że jest zbyt mało obiektowy... czy macie jakieś wskazówki co można poprawić, albo jak do tego podejść ?
Chodzi mi o jakieś wskazówki, bo patrze na to i nie wiem co mam rozumieć przez za mało obiektowy kod...
informacje o przedmiotach jakie mam "wsadzic do plecaka zaciagam z pliku csv, gdzie w pierwszym wierszu sa nazwy kolumn, ktorych nie potrzebuje wiec dlatego napisane jest w kodzie tak by to pominąć.
<?php class BagTask { private $arr; private $count; private $finalArr = []; private $weight; private $bagArr; public function __construct($arr, $weight) { $this->weight = $weight; $this->countOfItemsInArray(); $this->prepareArray(); $this->changeKeyNames(); $this->sort(); $this->toBag(); $this->summary(); $this->showBag(); // var_dump($this->bagArr); } /** * Metoda countOfItemsInArray zwraca ilosc wierszy w tablyc arr (tam są przedtrzymywane dane z pliku csv) */ public function countOfItemsInArray() { return $this->count; } /** * Metoda prepareArray tworzy tablice finalArr, wyrzuca "," między elementami i tworzy nowy wspólczynnik waga/wartość na 3 pozycji. */ public function prepareArray() { $partArr = []; $finalArr = []; for($i = 1; $i < $this->countOfItemsInArray(); $i++) { } return $this->finalArr = $finalArr; } /** * Metoda changeKeyNames nadaje kluczom nazwy, zamiast liczb. */ public function changeKeyNames(){ 'id' => $arr[0], 'weight' => $arr[1], 'value' => $arr[2], 'W/V' => $arr[3] ); }, $this->finalArr); } /** * Metoda sort sortuje tablice tablic po współczynniku W/V od największego. */ if ($item1['W/V'] == $item2['W/V']) return 0; return $item1['W/V'] > $item2['W/V'] ? -1 : 1; }); } /** * Metoda toBag uzupełnia tablice plecaka pobierając z posegregowanej tablicy finalArr elementy * na wejściu sprawdzając wagę elementu i zestawia ją z limitem jaki pozostał. */ public function toBag() { $bagLimit = 0; $bagArr = []; for ($i = 0; $i < $this->countOfItemsInArray()-1; $i++) { if($this->finalArr[$i]['weight'] <= $this->weight) { $bagLimit += $this->finalArr[$i]['weight']; if ($bagLimit <= $this->weight) { } } } return $this->bagArr = $bagArr; } /** * Metoda countOfItemsInTheBag, podaje ilość elementów wsadzonych do plecaka */ public function countOfItemsInTheBag() { return $countOfItemsInTheBag; } /** * Metoda weightOfBag, zwraca wagę plecaka */ public function weightOfBag() { $weight = 0; foreach ($this->bagArr as $key) { $weight += $key['weight']; } return $weight; } /** * Metoda valueOfBag, zwraca wartość plecaka */ public function valueOfBag() { $value = 0; foreach ($this->bagArr as $key) { $value += $key['value']; } return $value; } /** * Metoda showBag, zwraca informacje wyjściowe na temat plecaka */ public function showBag() { $i = 0; foreach ($this->bagArr as $value) { $i++; echo "przedmiot ".$i." o id ".$value['id']." jego waga - ".$value['weight']." wartość to ".$value['value']."<br>"; } } /** * Metoda summary, wyświetla informacje na temat przedmiotów w plecaku */ public function summary() { } } $bag = new BagTask('csvArray.csv', 1);