| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Marko Gast
|
OOP |
|
|
Ich arbeite hin und wieder mit PHP, bin also nur ein Hobbyprogrammier und mit nicht all zu viel Erfahrung.
Ich muss mich in der nächsten Zeit intensiv mit OOP beschäftigen. Und brauche dabei Hilfe um zu verstehen wie das funktioniert. Kennt ihr gute Tutorials. Ich habe mir immer sagen lassen, dass man damit die Arbeit auf Dauer reduzieren kann. WIE?
Danke für euere Antworten! |
|
|
|
| 23 Jun 2006 22:48 |
|
  |
BB-BF-BM Gast
|
 |
|
|
http://tut.php-q.net/klassen.html
Man sieht den Vorteil der objektorientierten Programmierung, wenn man davon ausgeht, dass man einen Hamster hat: | PHP-Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| <?php
$hamster_hanni = array(
'hunger' => 0,
'durst' => 0,
'muede' => 50
);
function hanni_essen( $futter )
{
global $hamster_hanni;
$hamster_hanni['hunger'] -= 25;
$hamster_hanni['durst'] += 10;
$hamster_hanni['muede'] += 5;
if( $hamster_hanni['durst'] > 100 || $hamster_hanni['muede'] > 100 )
{
die('Hamster Hanni ist gestorben');
}
}
function hanni_trinken( $getraenk )
{
global $hamster_hanni;
$hamster_hanni['durst'] -= 25;
$hamster_hanni['hunger'] += 5;
$hamster_hanni['muede'] += 5;
if( $hamster_hanni['hunger'] > 100 || $hamster_hanni['muede'] > 100 )
{
die('Hamster Hanni ist gestorben');
}
}
function hanni_schlafen()
{
global $hamster_hanni;
$hamster_hanni['muede'] -= 25;
$hamster_hanni['hunger'] += 5;
$hamster_hanni['durst'] += 10;
if( $hamster_hanni['hunger'] > 100 || $hamster_hanni['durst'] > 100 )
{
die('Hamster Hanni ist gestorben');
}
}
?> |
So sieht das vielleicht noch relativ übersichtlich aus: $hamster_hanni ist ein Hamster, den man mit den Funktionen hanni_trinken, hanni_essen und hanni_schlafen trinken, essen bzw. schlafen lassen kann.
Jetzt stell dir mal vor, du hättest zwei Hamster: | PHP-Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| <?php
$hamster_hanni = array(
'hunger' => 0,
'durst' => 0,
'muede' => 50
);
$hamster_bert = array(
'hunger' => 0,
'durst' => 0,
'muede' => 50
);
function hanni_essen( $futter )
{
global $hamster_hanni;
$hamster_hanni['hunger'] -= 25;
$hamster_hanni['durst'] += 10;
$hamster_hanni['muede'] += 5;
if( $hamster_hanni['durst'] > 100 || $hamster_hanni['muede'] > 100 )
{
die('Hamster Hanni ist gestorben');
}
}
function hanni_trinken( $getraenk )
{
global $hamster_hanni;
$hamster_hanni['durst'] -= 25;
$hamster_hanni['hunger'] += 5;
$hamster_hanni['muede'] += 5;
if( $hamster_hanni['hunger'] > 100 || $hamster_hanni['muede'] > 100 )
{
die('Hamster Hanni ist gestorben');
}
}
function hanni_schlafen()
{
global $hamster_hanni;
$hamster_hanni['muede'] -= 25;
$hamster_hanni['hunger'] += 5;
$hamster_hanni['durst'] += 10;
if( $hamster_hanni['hunger'] > 100 || $hamster_hanni['durst'] > 100 )
{
die('Hamster Hanni ist gestorben');
}
}
function bert_essen( $futter )
{
global $hamster_bert;
$hamster_bert['hunger'] -= 25;
$hamster_bert['durst'] += 10;
$hamster_bert['muede'] += 5;
if( $hamster_bert['durst'] > 100 || $hamster_bert['muede'] > 100 )
{
die('Hamster Bert ist gestorben');
}
}
function bert_trinken( $getraenk )
{
global $hamster_bert;
$hamster_bert['durst'] -= 25;
$hamster_bert['hunger'] += 5;
$hamster_bert['muede'] += 5;
if( $hamster_bert['hunger'] > 100 || $hamster_bert['muede'] > 100 )
{
die('Hamster Bert ist gestorben');
}
}
function bert_schlafen()
{
global $hamster_bert;
$hamster_bert['muede'] -= 25;
$hamster_bert['hunger'] += 5;
$hamster_bert['durst'] += 10;
if( $hamster_bert['hunger'] > 100 || $hamster_bert['durst'] > 100 )
{
die('Hamster Bert ist gestorben');
}
}
?> |
Jetzt hast du schon doppelt so viel Code, obwohl alle Funktionen bis auf die Namen gleich sind.
einfacher geht das mit OOP: | PHP-Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| <?php
class Hamster
{
var $name;
var $durst = 0;
var $hunger = 0;
var $muede = 50;
function Hamster( $name )
{
$this->name = $name;
}
function essen( $futter )
{
$this->hunger -= 25;
$this->durst += 10;
$this->muede += 5;
if( ($this->durst > 100) || ($this->muede > 100) )
{
die('Hamster '.$this->name.' ist gestorben!');
}
}
function trinken( $getraenk )
{
$this->durst -= 25;
$this->hunger += 5;
$this->muede += 5;
if( ($this->hunger > 100) || ($this->muede > 100) )
{
die('Hamster '.$this->name.' ist gestorben!');
}
}
function schlafen()
{
$this->muede -= 25;
$this->hunger += 5;
$this->durst += 10;
if( ($this->hunger > 100) || ($this->durst > 100) )
{
die('Hamster '.$this->name.' ist gestorben!');
}
}
}
$hanni = new Hamster('Hanni');
$bert = new Hamster('Bert');
?> |
Ich hoffe, mit Hilfe des oben genannten Tutorials sowie der Klassenbeschreibung auf php.net kannst du meinen Code verstehen, im Moment bin ich zu faul, ein gesamtes Tutorial zu liefern  |
|
|
|
| 24 Jun 2006 09:03 |
|
 |
V4hn Moderator
|
 |
|
|
Nicht schlecht deine Hamster BB-BF-BM
Ob man mit Objekt Orientierter Programmierung(um das mal ausgeschrieben zu haben )
den Arbeitsaufwand immer senken kann, ist fraglich.
Allerdings wirkt es sich immer stärker aus, je komplexer die Projekte werden...
Man behält leichter die Übersicht und
Arbeit mit mehreren Programmierern wird erheblich einfacher.
Bei kleineren Dingen ist OOP (zumindest für mich) eher verkomplizierend,
so dass ich es dann meist außer Acht lasse.
Das gegebene Tutorial scheint auch ganz gut zu sein um in OOP einzusteigen,
wenn du dich schon mit PHP befasst hast. |
_________________
 |
|
|
| 24 Jun 2006 10:47 |
|
 |
BB-BF-BM Gast
|
 |
|
|
Einen Vorteil habe ich unbewusst im Beispiel umgangen:
Angenommen, man hätte am Anfang statt des Arrays | PHP-Code: | 1 2 3 4 5
| $hamster_hanni = array(
'hunger' => 0,
'durst' => 0,
'muede' => 50
); |
einzelne Variablen da stehen
| PHP-Code: | 1 2 3
| $hamster_hanni_hunger => 0;
$hamster_hanni_durst => 0;
$hamster_hanni_muede => 50; |
müsste man bei jeder Funktion nicht nur eine Variable global setzen, sondern gleich drei.
Eine Klasse hat den Vorteil, dass alle Eigenschaften (durch $var definiert) in Klassen-Funktionen automatisch global sind, d.h. nicht extra mit global gesetzt werden müssen. |
|
|
|
| 24 Jun 2006 11:49 |
|
 |
David Administrator

|
 |
|
|
Vielleicht ist die Objekt orientierte Programmierung in der Tat etwas aufwendiger, allerdings gleichzeitig sehr praktisch, besonders bei größeren Projekten. Man muss ja das Rad nicht neu erfinden und kann immer wieder auf eine Funktion / Klasse zurückgreifen, ohne ein individuelles Script jedes Mal schreiben zu müssen.
Die Theorie habe ich schon drauf und mir sind auch die Vorteile bekannt . Ich bin dazu aber noch nicht gekommen in irgendeinem Projekt etwas umzusetzen.
In den nächsten Tagen werde ich damit anfangen und euch bestimmt mit vielen Fragen nerven
PS: Worüber ich mich auch freuen würde sind weiterführende Links zu guten Tutorials, die sich mit OOP beschäftigen - und vorerst mit einfachen Beispielen. |
_________________ MfG David Mirzoian
axinio Internet Marketing - professionelle Suchmaschinenoptimierung |
|
|
| 24 Jun 2006 12:24 |
|
 |
Breezzer Mitglied
|
|
| 26 Jun 2006 10:14 |
|
 |
|