![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 1.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam do napisania program do rozwiązywania problemu komiwojażera. Chciałbym go napisać w sposób obiektowy i jako, że jestem nowy w OOP mam pewnie głupie pytanie: Jak to jest z właściwościami klasy? Deklarujemy je tylko wtedy gdy będą zwracane przez egzemplarz klasy? Czy również wtedy kiedy będą używane pomiędzy różnymi metodami w obrębie danej klasy? Bardzo bym prosił o wytłumaczenie mi w miarę dokładnie zasad deklarowania właściwości. Co do samego kodu: Jeżeli wyświetlę poprzez print_r metodę getStartPopulation() to pokazuje mi się cała tablica, ale jak uzyskać dostęp do konkretnej komórki tej tablicy? Czy tylko poprzez zadeklarowanie zmiennej $startPopulation jako public i odwoływanie się do niej poprzez np. $o->startPopulation[12][4]? Kod mojej klasy: Kod <?php class Preparation { /** * Liczba miast dla ktorej bedzie przeprowadzone szukanie najkrotszej drogi. * @var int */ private $citiesNumber; /** * Tablica ze wsporzednymi miast. * @var array */ private $citiesCoordinates; /** * Ilosc osobnikow w populacji. * @var int */ private $populationNumber; /** * Tablica z populacja poczatkowa. * @var array */ private $startPopulation; /** * Konstruktor klasy Preparation. * @param int $citiesNumber * @return void */ public function __construct($citiesNumber) { $this->citiesNumber = $citiesNumber; } /** * Generator wspolrzednych poszczegolnych miast. */ public function generateCities() { $this->citiesCoordinates = new ArrayObject(array()); $i = 0; while ($i < $this->citiesNumber) { $xCoord = mt_rand(-5000, 5000); $yCoord = mt_rand(-5000, 5000); $this->citiesCoordinates->append(array("x" => $xCoord, "y" => $yCoord)); $i++; } } /** * Generator liczby osobnikow. */ public function generatePopulationNumber() { $this->populationNumber = mt_rand(40,60) - 1; } /** * Generator populacji poczatkowej. */ public function generateStartPopulation() { $this->startPopulation = new ExtendedArrayObject(array()); $i = 0; while ($i < $this->populationNumber) { $random = $this->startPopulation->randomRangeArray($this->citiesNumber - 1); $this->startPopulation->append($random); $i++; } } public function getStartPopulation() { return $this->startPopulation; } } Stworzenie egzemplarza: Kod <?php $citiesNumber = 10; $o = new Preparation($citiesNumber); $o->generateCities(); $o->generatePopulationNumber(); $o->generateStartPopulation(); print_r($o->getStartPopulation()); ?> Pozdrawiam. Ten post edytował pinefka 23.04.2009, 21:23:18 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 45 Pomógł: 7 Dołączył: 25.12.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Atrybuty klasy mają opisywać obiekt utworzony za pomocą tej klasy, służą do wymiany danych pomiędzy metodami danej klasy - Programowanie obiektowe. Zaleca się stosować enkapsulację, aby ukryć atrybuty, które ma dana klasa i pozwalać na wykonywanie operacji takich jakich my chcemy.
Możesz stworzyć np. taką metodę.
-------------------- "Yes, experience matters. No, one year repeated fifteen times does not count."
bartoszlugowski.com |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.06.2025 - 19:20 |