phpbar.de logo

Mailinglisten-Archive

[php] Verständnissfrage: funktionen VS klassen?

[php] Verständnissfrage: funktionen VS klassen?

Sebastian Mendel lists at sebastianmendel.de
Mon Dez 20 12:57:47 CET 2004


Michael Schoenboeck schrieb:

> Weil irgentwie hab ich den sinn hinter klassen noch nicht so 100%
> verstanden, da in denen ja auch nix anderes sitzt als funktionen.

Die Frage ist nicht nach dem Sinn von Klassen sondern dem Sinn 
Objekt-Orientierter Programmierung.

Der Vorteil für die Maschine, also Geschwindigkeit oder Ressourcen, ist 
nicht vorhanden, oder sogar negativ.

Der Zweck der OOP liegt darin es dem Programmierer einfacher zu machen, 
ein Mensch kann sich leichter ein Objekt mit all seinen Eigenschaften 
und Funktionen vorstellen und damit arbeiten als mit einer ewig langen 
Kette von Befehlen - er bekommt und behält leichter die Übersicht.

Man kann mit den Methoden und Eigenschaften eines Objekts viel leichter 
die zusammenhänge zwischen Variablen und Funktionen verstehen.

Ein Objekt fasst alles zusammen was zusammen gehört.

In einer Methode tauchen nicht plötzlich Variablen aus dem Globalen 
Namensbreich heraus auf, wo eigentlich keiner weiß wer sonst noch auf 
diese Variable zugreift - bzw. das ständige übergeben von Variablen 
entfällt.

Viele Vorteile der OOP sehen einzeln betrachtet nicht wichtig genug aus 
um auf OOP umzusteigen, aber man muss die Summe aller Vorteile die OOP 
bringt sehen (Kapselung, Vererbung, Morphismus, Factory, 
Zugriffsregelungen, ... ).

z. B.:

eine einfache Log-Klasse 'log_mysql'

diese erweitert 'log_db' welche wiederum 'log' erweitert

oder log -> log_file -> log_w3c_format

in der Anwendung heißt es immer:

$log = new Log::Factory( '[logmethode z. B.: mysql]' );

und alle weiteren Log::Methoden sind immer gleich:

$log->open( 'mylog' );
$log->write( 'message' );
$log->close();

dabei kann ich beliebig in der ersten Zeile zwischen MySQL, PostgreSQL, 
SSH, ftp, file, IRC, oder was auch immer hin und her wechseln ... 
zugegeben man kann dies auch ohne Klassen mit Funktionen realisieren ... 
aber wohl weitaus umständlicher ...

Der Hauptaugenmerk ist dabei weniger auf das Programmieren der Klassen 
zu legen, weil dort wohl eher mehr Aufwand ist als mit Funktionen, vor 
allem wenn man von vornherein alle Gegebenheiten berücksichtigen möchte, 
sondern viel mehr auf die einfache Verwendung der Klasse in der 
Applikation oder besser in jeder Applikation - auch ein Vorteil der OOP, 
die Wiederverwendbarkeit des Codes ist leichter/besser als bei Funktionen.

... ach, eigentlich ist das ein endloses Thema, man sollte einfach den 
Leuten die OOP anwenden vertrauen wenn sie sagen es ist besser - ich hab 
noch von keinem gehört der OOP richtig angewendet hat und danach wieder 
zu Funktionen gewechselt hat ;-)


-- 
Sebastian Mendel

www.sebastianmendel.de www.warzonez.de www.tekkno4u.de www.nofetish.com
www.sf.net/projects/phpdatetime        www.sf.net/projects/phptimesheet


php::bar PHP Wiki   -   Listenarchive