Verständnissfrage - OOP was in Klassen einteilen (gelöst)
Jeena Paradies
- menschelei
Hallo Leute,
Ich hatte ein Problem das ich durch intensives Nachdenken nicht lösen konnte. Also habe ich mir gedacht dass ich mal im Forum nachfrage. Und natürlich wie so oft (nur dass ich den Post sonst nicht abschicke) habe ich die Lösung wärend der Beschreibung meines Problemes selbst herausgefunden.
Ich wollte euch nur sagen dass es mir sehr oft so geht und ich mich dann zwar ärgere dass ich so viel umsonst geschrieben habe aber mich andererseits freue dass ich auf mein "schwieriges" Problem selbst die Lösung wusste. Vieleicht geht es euch auch manchmal so ;) wenn ihr aber noch was unten kommentieren wollt dann macht das ruhig denn ich fange das objektorientierte erst an zu verstehen.
Grüße
Jeena Paradies
Die Antwort:
" Ich muss zwei klassen machen, die eine kommentareeinfügen und die andere kommentareausgeben und anscheinend kann ich sie nicht zusammenfassen "
Die Frage:
" Welche Klassen soll ich machen und was soll ich zusammenfassen? "
Nachtrag zum unteren Post:
" Die Kommentare sollen auch ausgegeben werden "
Das ursprüngliche Posting
--------------------------------------------------------
Hallo liebe Leute die sich mit objektorientiertem Programmieren auskennen,
Ich habe mir für heute vorgenommen anzufangen meine eigene Weblog Software zu schreiben. Dies soll mittels PHP und MySQL geschehen. Dabei möchte ich es richtig machen und für Sachen die sich wiederholen nicht das gleiche zwei mal (unterschiedlich) schreiben sondern objektorientiert schreiben.
Anfangen will ich mit der Kommentarfunktion. Doch da bin ich auf ein Problem gestoßen was ich alleine nicht bewältigen kann. Ich möchte verschiedene Methoden auf verschiedenen Seiten meines Weblogs und auch in meinem Artikel-System - welches ähnlich funktionieren wird - verwenden.
* Es soll ein Formular ausgegeben werden welches voreingestellte Werte hat und bei Fehlern nach dem Validieren diese mit den Angaben des Users überschreibt. Das soll auf der Seite funktionieren wo man die Weblogeinträge kommentiert aber auch genau so auf der Seite wo man die Artikel kommentiert.
* Validieren der Eingaben
* Wenn Fehler beim validieren auftreten sollen sie ausgegeben werden
* Wenn keine Fehler beim validieren auftreten soll der Kommentar in die Datenbank eingefügt werden
* Wenn keine Fehler beim validieren auftreten soll eine Dankeantwort ausgegeben werden
* Es sollen zu jedem Artikel und jedem Eintrag ins Weblog die Kommentare gezählt und die Anzahl ausgegeben werden
* die letzten X Kommentare zum Weblog und die letzten Y Kommentare für die Artikel mit der Angabe zu was sie gehören sollen ausgegeben werden. Diese werde ich dann auf Z Zeichen begrenzen und so zum anlesen ausgeben.
* Wenn mir noch was einfällt soll es leicht einbaubar sein
Also noch mal kurz zusammengefasst:
1. Formularausgabe mit voreingestellten- und Usereingaben
2. Validierung
3. Fehlerausgabe
4. Datenbankeintrag
5. Danke Antwort
6. Anzahl der Kommentare
7. Ausgabe letzte X und Y Kommentare (getrennt)
######### Posting abgebrochen da ich mein Problem gelöst habe ##########
Ich habe mir für heute vorgenommen anzufangen meine eigene Weblog Software zu schreiben. Dies soll mittels PHP und MySQL geschehen. Dabei möchte ich es richtig machen und für Sachen die sich wiederholen nicht das gleiche zwei mal (unterschiedlich) schreiben sondern objektorientiert schreiben.
Ein entzückender Roman :)
Literatur-Tips (Titel / Verlag):
Object-Oriented System Development, Addison-Wesley
Professional Software Developmen, Addison-Wesley
Software Architect Bootcamp, Prentice Hall
Und vielleicht der eine oder andere Titel zu Design Pattern (Gamma et al., wobei Gamma zu der Zeit nur Praktikant war - die Gunst des Alphabets)
Hallo Hans aus Deutschland,
Object-Oriented System Development, Addison-Wesley
Professional Software Developmen, Addison-Wesley
Software Architect Bootcamp, Prentice Hall
Hab das mal unter Amazon angeguckt, ist wohl alles auf Englisch. Da werde ich mir vor allem am Anfang mit den Abstrakten sachen wohl sehr schweer tun. Wenn ich dann ein wenig durchbilcke dann müsste es mir einfacher fallen. Ich denke ich muss mir erst einmal ein Deutsches Buch kaufen/ausleihen.
Ich guck ert mal was unsere Leihbücherei zur Verfügung stellt. Vieleicht kann man da auch was per Fernleihe machen.
Jetzt habe ich natürlich wieder ein Problem. Das habe ich aber nicht durch die Problembeschreibung lösen können, und auch nicht anhan des Beispieles http://tut.php-q.net/klassen.html#u5:
Die Datei ../scripte/klassen.php
--------------------------
class Kommentieren {
// Eigenschaften
var $id;
// Konstruktor
function Kommentieren() {
}
// Methoden
function formular_ausgeben() {
?>
<form method="post" action="<?php echo basename($_SERVER["PHP_SELF"]).'#neu'; ?>">
<p>
<input type="text" name="id" value="<?php echo $this->id; ?>" />
<input type="submit" name="form_submitted" value="Absenden" />
</p>
</form>
<?php
}
function neue_id() {
$this->id = $_SERVER["REMOTE_ADDR"]."-".time();
}
}
Die Datei kommentar.php
--------------------------
include("../scripte/klassen.php");
$blogcomment = new Kommentieren();
$blogcomment->neue_id();
$blogcomment->formular_ausgeben();
------------------------------
Warum wird da die Neue ID nicht ins Formular eingesetzt?
Grüße
Jeena Paradies
Hallo Hans aus Deutschland,
Warum wird da die Neue ID nicht ins Formular eingesetzt?
Mensch bin ich blöd ich teste die ganze Zeit eine Andere Datei als ich bearbeite deswegen geht es nicht!
Grüße
Jeena Paradies
Hallo!
Hab das mal unter Amazon angeguckt, ist wohl alles auf Englisch. Da werde ich mir vor allem am Anfang mit den Abstrakten sachen wohl sehr schweer tun. Wenn ich dann ein wenig durchbilcke dann müsste es mir einfacher fallen. Ich denke ich muss mir erst einmal ein Deutsches Buch kaufen/ausleihen.
Leider sind die guten Sachen meist in englisch :)
Aber ich würde es mal probieren, es lohnt sich wirklich, zur Not muss halt mal http://dict.leo.org herhalten ;-)
http://www.sdphp.net/sdphp_talks/index.php?p=slides%2Fsdphp&id=sdphp_class
http://www.sitepoint.com/print/object-oriented-php
http://php-mag.net/itr/online_artikel/psecom,id,284,nodeid,114.html
http://de3.php.net/zend-engine-2.php (Neuerungen PHP5)
Grüße
Andreas
Hallo Hans aus Deutschland,
Aber ich würde es mal probieren, es lohnt sich wirklich, zur Not muss halt mal http://dict.leo.org herhalten ;-)
Dafür habe ich doch schon ding installiert :) http://www-user.tu-chemnitz.de/~fri/ding/
http://www.sdphp.net/sdphp_talks/index.php?p=slides%2Fsdphp&id=sdphp_class
Da funktioniert was nicht, ich komme da nicht weiter.
Ein sehr schöner Artikel den ich jetzt schon fast über die Hälfte durchgelesen und verstanden habe :) Der ist auch schön Einsteigerfreundlich geschrieben so dass sogar ich es verstehe.
http://php-mag.net/itr/online_artikel/psecom,id,284,nodeid,114.html
Phuh. Das ist dafür um so schweerer zu folgen.
http://de3.php.net/zend-engine-2.php (Neuerungen PHP5)
Naja ich werde erst mal versuchen mit PHP4 zurechtzukommen. Das ist ja auch auf dem Server auf dem meine Seite läuft. Ich glaube der wird auch nicht so schnell upgedatet. Obwohl diese privat Variablen anscheinend von allen gewollt werden warum habe ich aber noch nicht verstanden :)
Danke für die Links wenn ich nämlich mit google suche gibt es so viel dass ich dann nicht herausfinden kann was gut und was schlecht ist.
Grüße
Jeena Paradies
Hallo!
Hallo Hans aus Deutschland,
?
http://www.sdphp.net/sdphp_talks/index.php?p=slides%2Fsdphp&id=sdphp_class
Da funktioniert was nicht, ich komme da nicht weiter.
Hm, was genau siehst Du? Vielleicht mal so probieren: http://www.sdphp.net/talks/sdphp_class, musst oben rechts auf "overview" klicken und dann immer weiter, ist Javascript. Bei mir gehts mit Mozilla/Firefox.
http://www.sitepoint.com/print/object-oriented-php
Ein sehr schöner Artikel den ich jetzt schon fast über die Hälfte durchgelesen und verstanden habe :) Der ist auch schön Einsteigerfreundlich geschrieben so dass sogar ich es verstehe.
Jepp, ist ein guter Artikel, auf der Seite gibt es überhaupt viele gute Artikel ;-)
http://php-mag.net/itr/online_artikel/psecom,id,284,nodeid,114.html
Phuh. Das ist dafür um so schweerer zu folgen.
Der ist aber auch gut, musst man halt mehrmals lesen, oder vielleicht später nochmal, wenn Du ein bisschen Erfahrung mit OOP hast. Lies so viel wie möglich.
http://de3.php.net/zend-engine-2.php (Neuerungen PHP5)
Naja ich werde erst mal versuchen mit PHP4 zurechtzukommen.
Natürlich, aber mal einen Blick drauf werfen schadet nicht, auch mal hier gucken bzgl. PHP5: http://www.zend.com/php5/. OOP in PHP5 wurde wirklich deutlich verbessert, und es schadet sicher nicht das direkt richtig zu lernen, als nur diese "Möchtegern-OOP" von PHP4 ;-)
Das ist ja auch auf dem Server auf dem meine Seite läuft.
Natürlich. Aber PHP5 stable wird nicht mehr allzulange dauern bis es rauskommt, und auch wenn sich die Provider noch Monate Zeit lassen, für größere Projekte würde ich inzwischen direkt PHP5 einsetzen (wenn es nicht gerade in den nächsten paar Monaten produktiv laufen soll...)
Ich glaube der wird auch nicht so schnell upgedatet.
So schnell nicht, aber PHP5 wird auch schnell zu einem Verkaufs-Argument wenn einmal jemand mit angefangen hat.
Obwohl diese privat Variablen anscheinend von allen gewollt werden warum habe ich aber noch nicht verstanden :)
das steht in dem Artikel den Du nicht verstehst ;-) Ist zwar für PHP4 aber das ist das dort unter anderem beschriebene Konzept der Kapselung, das heißt, dass man von außen nicht auf die Variablen in einem Objekt zureifen sollte, sondern über entsprechende setEigenschaft($val) oder getEigenschaft() methoden zugreifen soll, denn somit werden diese Methoden zu einer definierten Schnittstelle, und Du kannst die Klasse intern verändern wie Du möchtest, ohne dass diese Änderung sich irgendwo anders in einem Script auswirken (im Gegensatz dazu wenn Du direkt von außen auf interne Variablen zugreifst). In PHP4 braucht man dazu Disziplin, da man den Zugriff von außen einfach nicht verhindern kann. In PHP5 schmückt man die interne Variable mit dem Attribut "private", womit der Zugriff von außen nicht mehr möglich ist, das heißt jeder Programmierer der damit arbeitet wird dazu gezwungen set...() und get...() Methoden zu verwenden, weil er anders nicht an die Werte kommt. Und in dieser Richtung gibt es noch ein paar Verbesserungen. Siehe Links oben.
OOP ist recht komplex, und eigentlich ist PHP4 keine geeignete Implementierung um "gute OOP" zu lernen. Besser eigenen sich IMHO Java oder eben PHP5. Im Bereich PHP gibt es halt noch recht wenig zum Thema, ganz anders sieht es bei Java aus, es lohnt sich IMHO z.B. folgendes Java-Tutorial über das OOP-Konzept mal zu lesen: http://java.sun.com/docs/books/tutorial/java/concepts/index.html
(keine Angst, man muss kein Java können :)
Danke für die Links wenn ich nämlich mit google suche gibt es so viel dass ich dann nicht herausfinden kann was gut und was schlecht ist.
Jepp, auf den genannten Seiten solltest Du mal suchen, und auch mal auf http://talks.php.net/
Grüße
Andreas
Hallo Hans aus Deutschland,
Hm, was genau siehst Du? Vielleicht mal so probieren: http://www.sdphp.net/talks/sdphp_class, musst oben rechts auf "overview" klicken und dann immer weiter, ist Javascript. Bei mir gehts mit Mozilla/Firefox.
Ach ja am JS hat es gelegen weil ich immer ohne surfe jetzt geht es.
Jepp, ist ein guter Artikel, auf der Seite gibt es überhaupt viele gute Artikel ;-)
Da muss ich wohl bei meinen Webdesign Bookmarks einen neuen Ordner PHP erstellen :)
Der ist aber auch gut, musst man halt mehrmals lesen, oder vielleicht später nochmal, wenn Du ein bisschen Erfahrung mit OOP hast. Lies so viel wie möglich.
Jo das werde ich machen aber es scheint so super viel zu sein. Ich lese jetzt schon seit neun Stunden und langsam will nichts mehr in meinen Kopf rein.
Natürlich, aber mal einen Blick drauf werfen schadet nicht, auch mal hier gucken bzgl. PHP5: http://www.zend.com/php5/. OOP in PHP5 wurde wirklich deutlich verbessert, und es schadet sicher nicht das direkt richtig zu lernen, als nur diese "Möchtegern-OOP" von PHP4 ;-)
Nun ja am besten wäre es wohl einfach Java zu lernen. Ein Java Buch über OOP hat mir unser Gittarist auch schon empfohlen. Anscheinend gibt es da einiges mehr.
Natürlich. Aber PHP5 stable wird nicht mehr allzulange dauern bis es rauskommt, und auch wenn sich die Provider noch Monate Zeit lassen, für größere Projekte würde ich inzwischen direkt PHP5 einsetzen (wenn es nicht gerade in den nächsten paar Monaten produktiv laufen soll...)
Phuch. Ich fange jetz trotzdem mal an mein Weblog in PHP4 zu schreiben und es dann wenn es anfängt zu funktionieren einzusetzen. Da ich ja objekt orientiert und modular arbeiten will denke ich dass ich dann so nach und nach einige funktionen hinzufügen werde. Was mich noch ein wenig von PHP5 fernhält ist dass es noch nicht einmal in Debian/sid ist. Dann müsste ich es mir selbst kompilieren und installieren und dann habe ich wieder dieses kuddelmuddel auf dem Rechner. Na die Ansätze werde ich jetzt mal mit PHP4 machen.
Ich glaube der wird auch nicht so schnell upgedatet.
So schnell nicht, aber PHP5 wird auch schnell zu einem Verkaufs-Argument wenn einmal jemand mit angefangen hat.
Das stimmt allerdings.
das steht in dem Artikel den Du nicht verstehst ;-) Ist zwar für [...]
Also kann man es ein bischen mit der strict variante in (X)HTML vergleichen dass es eigentlich auch in PHP4 funktioniert man aber saubereren Code hat und man wird zu einigen Sachen gezwungen die man sons hingepfuscht hätte?
OOP ist recht komplex,
Genau das merke ich gerade.
und eigentlich ist PHP4 keine geeignete Implementierung um "gute OOP" zu lernen. Besser eigenen sich IMHO Java oder eben PHP5. Im Bereich PHP gibt es halt noch recht wenig zum Thema, ganz anders sieht es bei Java aus, es lohnt sich IMHO z.B. folgendes Java-Tutorial über das OOP-Konzept mal zu lesen: http://java.sun.com/docs/books/tutorial/java/concepts/index.html
(keine Angst, man muss kein Java können :)
Na zum Glück! Unser Gitarrenmann hat das bei seinem Buch auch gesagt, leider habe ich das auch noch nicht gelesen. Na dann werde ich wohl in der nächsten Zeit rechteckige Augen bekommen ;)
Jepp, auf den genannten Seiten solltest Du mal suchen, und auch mal auf http://talks.php.net/
<img src="http://www.wodka-apfelsaft.de/ohnmacht.jpg" border="0" alt="">
Sorry bin gerade in Ohnmacht gefallen werde wohl für heute erst einmal schluss machen. Morgen ist ja auch noch ein Tag an dem ich mich damit beschäftigen kann :)
Grüße
Jeena Paradies