OOP??
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ahnung
array
beispiel
dank
datum
fell
frage
funktion
http
katze
klasse
kontrolle
laune
methode
objekt
problem
programm
programmieren
ren
teil
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich zitiere:
Streng gesehen ist PHP keine Programmiersprache die als Objektorientierte Programmiersprache bezeichnet werden kann, dennoch hat PHP einige M?glichkeiten, mit welchen man ann?hernd Objektorientiert Programmieren kann.
Zu deiner Frage wozu man OOp ?berhaupt braucht. Habe ich hier einen text f?r dich:
Bei der objektorientierten Programmierung, taucht der Begriff eines Objektes immerzu auf. Doch was ist ein Objekt ?berhaupt? Im Alltag wird die Bezeichnung eines Objektes oft verwendet, doch welche Eigenschaften hat ein solches Objekt.
Eine Maus ist zum Beispiel ein Objekt. Sie hat aber so viele Eigenschaften, und F?higkeiten, das man diese nicht mehr erfassen kann. Die Handlung der Maus sind nicht vorhersagbar, oder fest bestimmt.
Ein programmiertechnisches Objekt ist in dieser Hinsicht einfacher zu Handhaben. Diesen Objekten kann man ein festes Verhalten "einprogrammieren". Diese Strukturen und Funktionen lassen sich dann auf jedes andere Objekt anwenden, welches nach diesem Bauplan gebaut wurde.
Die Vielfalt dieser Programmiertechnik ist oft nicht leicht zu erkennen.
Schreibt man gew?hnliche Skripte oder Programme, dann werden die Daten in Variablen gespeichert, und diese dann z.B. ?ber Kontrollstrukturen verarbeitet, und neue Werte hinzugef?gt, oder ver?ndert.
Bei der Objektorientierten Programmierung gibt es solche Techniken nicht. Hier wird ein Objekt nicht als Speicherplatz, wie eine Variable, gesehen, sondern ist ein komplexes Konstrukt, das eigenst?ndig ist und welchem man beliebige Eigenschaften geben kann.
Objekte sind nur Ergebnisse aus einer Klasse. Eine Klasse ist wie ein festes Rezept, nach dem diese Objekte gebildet werden.
Hier ist auch schon einer der wichtigsten Aspekte der Objektorientierten Programmierung anzusiedeln. Diese Objekte sind eigenst?ndige K?rper, ein Objekt muss nicht dem anderen gleichen.
Ein Beispiel ist das Objekt eines neuen Benutzers, in einer Community. Der Besucher gibt seine Daten ein, Vorname, Nachname, Adresse,...
Nach diesem wird ein neues Objekt geformt, ein einmaliges Objekt, n?mlich das Objekt eben dieses Benutzers.
Nach dem Ablauf des Programms verlieren sich diese Objekte, wie Variablen. Sie werden nicht gespeichert. Hierzu m?ssen Datenbanken eingesetzt werden, in welchen die Daten gespeichert werden. Aus diesen Daten kann dann, z.B. bei einem Login das Objekt des Benutzers wieder gebildet werden.
Eine Klasse ist wie gesagt ein fest, doch auch das ist in der Hinsicht nicht richtig. Von dieser Klasse kann man weitere Klassen ableiten.
Ein einfaches Beispiel ist z.B. eine Klasse welche einen Baum als Objekt erzeugt. Das ganze h?rt sich ein wenig...an, man kann es aber so sehen.
Jetzt will man eine Klasse programmieren, die einen Apfelbaum als Objekt erstellt. Warum sollte man dann nicht die erste Klasse weiterverwenden, sodass man nur noch einige Funktionen f?r die Erstellung eines Apfels an diesem Baum programmieren muss.
Diese M?glichkeit nennt man in der Sprache der Objekte, "Vererbung". Die Daten einer Klasse werden an die einer anderen vererbt.
Die St?rke der Programmierung auf diese wei?e zeigt sich schnell. Objektorientierte Programme sind m?glichst einfach aufgebaut, sodass man von jeder Klasse die M?glichkeit hat, eine weitere abzuleiten.
In diesem ersten Teil sind die wichtigsten Begriffe in bezug auf OOP definiert werden. Im n?chsten Teil geht es an die Praxis mit PHP.
-
He Ren?,
entferne die letzten beiden S?tze lieber, bevor sie jemand liest....^^
OO hat nichts mit Platformunabh?ngigkeit zutun, jedenfalls nichts im engeren Sinne.
Gru?
Talpa -
He Ren?,
entferne die letzten beiden S?tze lieber, bevor sie jemand liest....^^
OO hat nichts mit Platformunabh?ngigkeit zutun, jedenfalls nichts im engeren Sinne.
Gru?
Talpa
Ren? ist ja auch keine Mod in PHP.
Und wenn er es drin l?st k?nnen sich noch anderen dar?ber am?sieren.
Also hier mal was wikipedia zu OOP schreibt.
http://de.wikipedia.org/wiki/Objektorientierte_Programmierung
lucas9991 schrieb:
hiho
hat wer ahnung von Objekt-Orientierter Programmierung im bezug auf php?
wozu brauch man das? lohnt es sich schon f?r kleinere websites?
kennt wer gute! tuts
bei den meisten blick noch nich so ganz durch :D
Also man kann nat?rlich alles ohne OOP machen.
Aber man kann mit OOP besser strukurierte Programme schreiben, da man mit Objekte arbeiten. Die meisten gro?en Projeckte benutzen OOP. Denn bei einen OOP-Programm reicht es zu verstegen was die Schnittstellen (Objeckte) machen. Man muss aber nicht verstehen wie die Objekte realisiert sind um die Funktionalit?t der Objekte zu benutzen.
Der Vorteil von Objekten ist auch das man sich eine Bibliothek erstellen kann.
Mal ein kleines Beispiel:
Ich habe einen ImageManager und einen FileManager.
Geschreiben, welcher bestimmte Funktionen realiesiert.
Beides sind Klassen.
Dann habe ich eine Gallerie geschreiben, welche mit Objekten dieser Klasse arbeite.
Was bringt das ganze jetzt?
Wenn ich was anderes schreibe, was aber die Funktionalit?t der beiden Klassen gebrauchen kann. Dann kann ich Problemlos diese Objekte wieder verwenden.
Jeder, der eine andere Gallerie als ich haben m?chte braucht nur das Gallerie Skript anzupassen. Und alles was er dazu muss ist die Schnittstelle zu verstehen.
Dazu br?chte man sogar nicht viel PHP kenntniss, wenn die Schnittstellen gut erkl?rt sind.
Hier kannst du das Gallerie-Skript finden.
http://wikicity.de.vu/index.php/Gallerie:php
Jens -
He Ren?,
entferne die letzten beiden S?tze lieber, bevor sie jemand liest....^^
OO hat nichts mit Platformunabh?ngigkeit zutun, jedenfalls nichts im engeren Sinne.
Gru?
Talpa
Ren? ist ja auch keine Mod in PHP.
Und wenn er es drin l?st k?nnen sich noch anderen dar?ber am?sieren.
Du sagst es :-) Ich habe ausversehen OOP mit etwas anderem kurz verwechselt. Ist bei mir schon ne kleine weile her wo ich das hatte. Wei? nat?rlich jetzt wieder was OOP ist :D
Edit jacr
Waren das vielleicht plattformunabh?ngige Programme. -
danke schonmal f?r die antworten
aber habt ihr vllt noch gute tuts?
aber speziell zu oop, die auch nen bisschen l?nger sind -
danke schonmal f?r die antworten
aber habt ihr vllt noch gute tuts?
aber speziell zu oop, die auch nen bisschen l?nger sind
Schau dir das mal an.
http://www.oszhdl.be.schule.de/gymnasium/faecher/informatik/oop/
Jens -
ich hatte aber was zu php gesucht ;)
trotzdem danke -
ich hatte aber was zu php gesucht ;)
trotzdem danke
http://de.php.net/manual/de/language.oop.php
Aber wenn du nicht weisst was OOP ist, dann n?tzt dir das auch nicht viel.
Das oben ist nur eine Anleitung wie man es in PHP macht.
Aber nicht wie man OOP macht. Darum ist der andere Link f?r dich wichtiger.
Jens -
na ja so bisschen versteh ichs schon, bloss mein php buch spricht das nich wirklich ausreichend an
und zum schluss des buches kommen dann auf einmal ganze biblotheken drin vor
hatte kleine script oder tuts gesucht, da ich den prinzipellen aufbau, glaub ich jedenfalls ;), verstanden hab
das problem is bloss, dass mit den variablen etc.
ich mach einfach noch ziemlich viele fehler, was ziemlich nervig is :D
aber danke f?r die vielen links :) -
Softwarehersteller haben halt vor allem das Problem das die Wartung und Bugsuche der Software den gr??ten Teil des Geld verschlingt (sind so ca. 70% des gesamten Geldaufwandes).
Die OOP schafft da ein gro?es St?ck die Kosten zu reduzieren. Durch gute Planung und dem Einsatz von Objekten ist dieser Teil von der Software schonmal fehlerfrei (na klar, das mu? alles bis ins Detail geplant sein, sonst ist es nichtmehr so effizient). Das einzige was jetzt noch Wartungsarbeit kostet ist das kommunizieren der Objekte untereinander.
Weiterer Vorteil f?r Softwarehersteller ist halt auch das man vershicedene Teams beauftragen kann. Ein Team hat dann die Aufgabe ein Grundlegendes Objekt zu erstellen, w?hrend ein anderes einfach nur noch das Objekt einbinden mu?.
einleuchtend ;)
PHP ist keine reine OOP, was aber in PHP 5 einen gro?en Schritt n?her gekommen ist (hat mir zumindets einer erz?hlt, der wirklich viel Ahnung davon hat!).
angeblich ja, aber ich sehe keine riesen unterschiede zu php4
na ja ich werd mich mal weiter damit besch?ftigen, da es sich interessant und unabdingbar scheint :)
danke f?r alle antworten -
PHP ist keine reine OOP, was aber in PHP 5 einen gro?en Schritt n?her gekommen ist (hat mir zumindets einer erz?hlt, der wirklich viel Ahnung davon hat!).
angeblich ja, aber ich sehe keine riesen unterschiede zu php4
na ja ich werd mich mal weiter damit besch?ftigen, da es sich interessant und unabdingbar scheint :)
danke f?r alle antworten
Die gibt es auch nicht bis auf: (vorsicht Ironie)
Die Sichtbarkeit von Variablen, das benutzen von Interfaces, Abstrakte Klassen, Klassen Variablen und Methoden, das Kopieren von Objekten, das Vergleichen von Objekten und dann noch andere Kleinigkeiten.
Das kannst du alles hier nachlesen:
http://de.php.net/manual/de/language.oop5.php
Also da kann man schon einiges mehr mit machen.
Jens -
Hiho lucas9991!
Objektorientiertes Programmieren in PHP(4) geht in etwa so:
Zuerst erstellst du eine Klasse mit einigen Grundeigenschaften:
class KATZE {
var $name;
var $fell;
var $laune;
var $traegheit;
function KATZE() {
$this->name = 'Garfield';
$this->fell = 'orange';
$this->laune = 0;
$this->traegheit = 'maximal';
}
// hier weitere Methoden hinzuf?gbar
}
Funktionen innerhalb der Klassendefinition hei?en Methoden.
Die Methode mit dem gleichen Namen wie die Klasse hei?t Konstruktor. Sie wird automatisch aufgerufen, wenn die eine neue Instanz der Klasse erstellt wird. Und das geht so:
$meine_katze = new KATZE;
Ermordet wird die KATZE brutal und einfach per unset($meine_katze), aber das lassen wir jetzt einfach mal weg.
Um den Zustand der Katze abzufragen, muss man Methoden definieren (in der Klassendefinition, nicht im Hauptprogramm), die dies tun:
function schnurrt() {
if( $this->laune > 0) return(TRUE);
return(FALSE);
}
So fragt man die Laune der Miez im Hauptprogramm ab:
if( $meine_katze->schnurrt() ) {
print('Die Miez schnurrt.');
}
else {
print('Die Miez gibt momentan keine Ger?usche von sich.');
}
Man kann nat?rlich auch Einfluss auf das Objekt nehmen:
function amSchwanzZiehen() {
$this->laune = -1;
}
Jetzt rufst du im Hauptprogramm auf:
$meine_katze->amSchwanzZiehen();
Wenn du jetzt die Laune abfragst, hat sich diese ge?ndert.
Nat?rlich kann man auch Parameter ?bergeben:
function umtaufen($neuer_name) {
$this->name = $neuer_name;
}
Katze umtaufen:
$meine_katze->umtaufen('Spot');
Jetzt h?rt Garfield nicht mehr auf den Namen Garfield. Aber das tun Katzen ja sowieso eher selten ...
So, das w?rs erstmal f?r den Anfang. Vererbung und andere Sachen vielleicht im n?chsten 5-Gulden-Tutorial.
MfG
alopex
-
herzlichen dank ;)
5 gulden tut - lol
k?nntest du aber echt in die tuts aufnehmen
hast du sehr einfach gehalten und noch nen bisschen lustig
amSchwanzZiehe() :D
-
So erkl?rt sich die Sache am einfachsten: OOP am (lebenden) Objekt. Da f?llt mir noch eine sch?ne Methode ein. Sie ist zwar aus einem Perl-Buch und f?r ein Auto-Objekt, aber unsere Miez hat ja auch eine Farbe (wie Autos):
function umlackieren($neue_farbe) {
$this->farbe = $neue_farbe;
$this->laune = -100;
}
MfG
alopex -
so ich poste ma gleich mein erstes prob hier rein ;)
also ich will eine klasse schreiben, die bei den arrays _GET, _POST, _SESSION und _COOKIE einmal htmlspecialchairs(); anwendet
also hier mein anfang ;)
class Daten
{
var $vars= array();
function kontrolle($was)
{
foreach($was as $_var_name => $_var_inhalt)
{
$this -> vars[$_var_name] = $_var_inhalt;
}
return $this -> vars;
}
}
$get_vars = array();
$post_vars = array();
$session_vars = array();
$cookie_vars = array();
$daten= new Daten;
$get_vars = $daten-> kontrolle($_GET);
$post_vars = $daten-> kontrolle($_POST);
$session_vars = $daten-> kontrolle($_SESSION);
$cookie_vars = $daten-> kontrolle($_COOKIE);
-
kann hier keiner oop?
-
kann hier keiner oop?
Zum einen solletst du einen Konstruktor schreiben.
Das macht sich immer gut. Und in den Kostruktor initalisiert du das Array.
Und dann weiss ich nicht was dein Problem ist.
Jens -
nun ja, au?er das du die classe als die etwas andre funktion 'misbrauchst'^^
w?re jetzt mal die frage was soll deine classe tun? was erwartest du als ergebniss?
und was liefert dein jetztiges 'beispiel' als eigebniss?
(vielleicht mal var_dump auf die 'fertigen objekte' anwenden?)
und dann will ich dir mal den stupps (wink mit dem zaunpfahl) in richtung 'mehrdimensionalesarray' geben bzw. rekrusion
tja bleibt noch die frage unter welcher php version willst du denn oop verwenden/entwickeln? 4 oder 5 (ist ein kleener unterschied^^) -
ich bin in oop n00b, also bitte nich so komische w?rter XD
jacr schrieb:
Zum einen solletst du einen Konstruktor schreiben.
Das macht sich immer gut. Und in den Kostruktor initalisiert du das Array.
joa aber das is ja nich das prob
Und dann weiss ich nicht was dein Problem ist.
Jens
es wird nichts ausgegeben
sacred schrieb:
nun ja, au?er das du die classe als die etwas andre funktion 'misbrauchst'^^
?hm ja....
w?re jetzt mal die frage was soll deine classe tun? was erwartest du als ergebniss?
das alle benutzereingaben "sicher" werden
also htmlspeiclchairs und mysql_query_string (oder wie auch immer ^^)
und was liefert dein jetztiges 'beispiel' als eigebniss?
(vielleicht mal var_dump auf die 'fertigen objekte' anwenden?)
es kommt nichts....
und dann will ich dir mal den stupps (wink mit dem zaunpfahl) in richtung 'mehrdimensionalesarray' geben bzw. rekrusion
ich = oop n00b
tja bleibt noch die frage unter welcher php version willst du denn oop verwenden/entwickeln? 4 oder 5 (ist ein kleener unterschied^^)
lima hat php4 also php4 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage