Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
16.05.10, 00:54
|
#1
|
Newbie
Registriert seit: Feb 2010
Beiträge: 70
Bedankt: 7
|
PHP Funktionen als Funktionen oder besser als Methoden?
Ich brächte mal eure Meinung zu Folgender Frage:
Gegeben ist ein Modul auf Basis von PHP. In diesen Modul gibt es mehre Klassen und ein paar Funktionen. Einige der Funktionen werden nur in den Klassen benutzt einige auch außerhalb.
Jetzt ist die Frage was die bessere und elegantere Lösung wäre.
Die Funktionen in einer (nennen wir es der einfachheitshalber) Basisklasse zupacken und die restlichen Klassen zu einen erben der Basisklasse machen.
oder dies als Funktionen so belassen?
|
|
|
16.05.10, 09:49
|
#2
|
Anfänger
Registriert seit: Jan 2010
Beiträge: 23
Bedankt: 4
|
Es wäre sehr Hilfreich wenn du Code zeigen würdest oder die ULM. Pauschal kann man dazu nichts sagen. Es kommt aus die Klassen an. In OOP spricht man von Methoden wenn du die Funktionen einer Klasse meinst.
Gruß
|
|
|
16.05.10, 12:33
|
#3
|
Newbie
Registriert seit: Feb 2010
Beiträge: 70
Bedankt: 7
|
Zitat:
Zitat von januschka
Es wäre sehr Hilfreich wenn du Code zeigen würdest oder die ULM. Pauschal kann man dazu nichts sagen. Es kommt aus die Klassen an.
|
Warum braucht man für eine Prinzip-frage ein Quellcode?
Zitat:
Zitat von januschka
In OOP spricht man von Methoden wenn du die Funktionen einer Klasse meinst.
Gruß
|
ist mir bekannt wie man auch im Titel sehen kann
|
|
|
16.05.10, 17:07
|
#4
|
Anfänger
Registriert seit: Jan 2010
Beiträge: 23
Bedankt: 4
|
Zitat:
Warum braucht man für eine Prinzip-frage ein Quellcode?
|
Hmmm also wenn du ne Klasse Auto hast und ne Klasse Person würde ich die ganz bestimmt getrennt halten.
Kannst ja schlecht eine Klasse Auto zur "Oberklasse" erstellen. Und die Klasse Mensch vererbt von dieser Oberklasse Methoden. Das wiederspricht dem Prinzip der OOP-Programmierung.
Sinnvoll ist es allerdings zum Beispiel.. Eine Klasse Mensch anzulegen dann "Unterklassen" Kunde, Mitarbeiter, User anzulegen.
Woher soll ich wissen welche Klssen in diesem Modul vorhanden sind ?
Gruß
|
|
|
16.05.10, 19:05
|
#5
|
Erfahrener Newbie
Registriert seit: Apr 2010
Beiträge: 172
Bedankt: 31
|
Alle Funktionen, die explizit auf Attribute der Objekte zugreifen, sollten gekapselt werden.
Als Beispiel: Du hast ein Klasse Mensch. Ein Mensch hat ein Gewicht und eine Größe. Möchtest du nun den BMI (Body-Mass-Index) errechnen, benötigst du beide Werte.
Es widerspricht nun grundsätzlich dem OOP-Gedanken eine Funktion zu implementieren, die ein "Mensch"-Objekt als Parameter übergeben bekommt, beide Werte ausliest, den BMI errechnet und zurückgibt. Sauberer wäre eine Kapselung der BMI-Berechnung als Methode in der Klasse.
Grundsätzliche Merkregel: Klassen sollten nur Methoden enthalten, die auch explizit mit den Attributen dieser zu tun hat.
Allgemeine Aufgaben, die unabhängig von den Klassenattributen erledigt werden (z.B. eine Methode, die die Anzahl der Merkmale eines Menschen (Größe, Gewicht, usw))) sollten als statische Methoden bzw. als Funktionen implementiert werden.
Es ist üblich, lose Sammlung von Funktionen zu einem Thema, die keinerlei Attribute benötigen, als statische Methoden einer Klasse zu implementieren. Natürlich sollte man dann die Klasse als abstrakt kennzeichnen, damit man sie nicht initiieren kann. Sie sollte dann keinerlei nicht-statische Methoden oder Attribute haben.
Ansonsten muss ich mich meinem Vorredner anschließen. Methoden sollten grundsätzlich nur in Vererbungshierarchien angelegt werden, wo sie auch Sinn machen. Einen BMI zu berechnen mag bei einem Menschen Sinn machen, aber bei einem allgemeinen Säugetier vielleicht noch nicht.
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr.
().
|