Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Programowanie obiektowe..., czy to jest poprawnie
primo
post
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 0
Dołączył: 30.12.2003
Skąd: Strzegom

Ostrzeżenie: (0%)
-----


Witam,

wszędzie człowiek napotyka się na to hasło: programowanie obiektowe, no i aby być w temacie, trzeba było coś w tym kierunku robić. W tym celu przeczytałem artykuł zamieszczony na łamach php.pl Wprawdzie dowiedziałem się tam podstaw, ale nie rozumiem wielu rzeczy. Dla mnie najlepszym narzędziem do nauki jest sam przykład programowania tradycyjnego i przerobienie go na obiektowe.
W poniżej zamieszczonym skrypcie (nie działającym zresztą) spróbowałem przerobić to, co mam już zrobione, na sposób obiektowy zgodnie ze wskazówkami z różnych książek.

  1. <?php
  2. require_once('funkcje_bazy.php');
  3.  
  4. $lacz = lacz_bd();
  5. if (!$lacz)
  6. return 'Poł&plusmn;czenie z serwerem bazy danych niemożliwe - proszę spróbować póĽniej.';
  7.  
  8. class media
  9. {
  10.  
  11. var $tytul_pl;
  12.  
  13. function wyswietl_tytuly_filmow($tytul_pl)
  14. {
  15.  
  16. $sql = &#092;"SELECT * FROM filmy ORDER BY id\";
  17.  
  18.  
  19. while ( $row = mysql_fetch_row($r) )
  20. {
  21. $tytul_pl = $row[1];
  22.  
  23.  
  24.  
  25.  print &#092;"$this->tytul_pl.\";
  26.  
  27. }
  28.  
  29. }
  30.  
  31.  
  32. $obj1= new media();
  33. $obj1->wyswietl_tytuly_filmow($tytul_pl);
  34. ?>



proszę o wyjaśnienie następującego zagadnienia:

w momencie jak w metodzie wyswietl_tytuly_filmow pobiore dane z bazy danych to w OO należy je również potraktować pętlą czy też stosuje się do tego inne narzędzia (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) i czy to w ogole ma sens (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) nie mogę zrozumieć tego co robi się z tymi danymi "po drodze" od utworzenia clasy do jej zastosowania (znaczy się wyświetlenia wyników).

a tak nawiasem mówiąc to zwróciło mi następujące błędy: unexpected T_VARIABLE, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}'


proszę o jakieś wskazówki niekoniecznie usunięcia błędów lecz o tym co po drodze powinno się robić z takimi danymi...

pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
scanner
post
Post #2





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




No to na początek trochę teorii. (Polecam "Thinking in Java")
  • Wszystko jest obiektem. Ty, klawiatura, drzewo za oknem.
  • Klasa jest to zbiór właściwości i metod opisujących określoną grupę obiektów.
  • Właściwość jest to zmierzalna wartośc opisująca elementraną cechę obiektu. (np. Kolor włosa - jednego)
  • Metoda jest to opisane w klase działanie jakie może "wykonać" ten obiekt. np. Włos może urosnąć. Może wypaść. Ale już nie może się sam obciąć. Obciąć włosy może obiekt Fryzjer działając obiektem Nożyczki na właściwość tablicową Włosy obiektu Głowa należacego do zestawu właściwości obiektu Klient.
  • Mówimy, że "Zmienna jest typu...." oraz "Obiekt jest klasy...". Tak jak zmienna jest tylko jednego typu ( np. int ) tak obiekt jest tylko jednej klasy.(np. Obiekt klasy Długopis)
To na wstęp.
Ty powinieneś zaprojektować obiekt klasy Film oraz obiekt klasy Lista filmów.

Klasa Film opisuje właściwości:
- ID
- Tytuł
- Rok produkcji
- Reżyser (przy czym Reżyser to powinien być osobny obiekt klasy Osoba)
- Wypozyczający (obiekt klasy Osoba)
oraz metody:
- zapiszDane() zapisajaca jednym insertem jeden rekord w bazie
- czytajDane() która powinna odczytać dane jednego filmu na podstawie np. ID
- aktualizuj() - jeden UPDATE jednego ściśle okreslonego (np. przez ID) filmu
- usuń() - jeden DELETE na rekordzie jak wyżej
- wypożycz() - ustawia znacznik wypozyczenia na True, ID wypozyczajacego, date wypozyczenia. Wywoluje metodę metodę wypozyczyl() obiektu Wypozyczajacy, ktora dodaje film do archiwum wypozyczonych tytulow.
- zwróc() - ustawia znacznik wypozyczenia na false, itp...


Klasa ListaFilmów ma głownie właściwosć
- Lista (ktora jest tablicą)
oraz metody w stylu
- Czytaj_listę
- usuń() (dla okreslonych filmow wywoluje ich metodę Usuń() i kasuje (unset()) ichistnienie z tablicy.
- ....

Prawdopodobnie niedlugo pokaze kod pewnego skryptu, ktory staralem sie napsiac obiektowo (dla php4) - na pewno bedzie wiele poprawek i ktos bardziej doswiadczony w OOD/OOP mi wytnie wiele niescislosci, ale moze sie to okazac niezla szkołka praktyczna dla poczatkujacych (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.10.2025 - 04:30