myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   PHP Funktionen als Funktionen oder besser als Methoden? (https://mygully.com/showthread.php?t=2044258)

Irolight 16.05.10 00:54

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?

januschka 16.05.10 09:49

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ß

Irolight 16.05.10 12:33

Zitat:

Zitat von januschka (Beitrag 20770789)
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 (Beitrag 20770789)
In OOP spricht man von Methoden wenn du die Funktionen einer Klasse meinst.

Gruß

ist mir bekannt wie man auch im Titel sehen kann ;)

januschka 16.05.10 17:07

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ß

kramido 16.05.10 19:05

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.