myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

PHP Funktionen als Funktionen oder besser als Methoden?

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 16.05.10, 00:54   #1
Irolight
Newbie
 
Registriert seit: Feb 2010
Beiträge: 70
Bedankt: 7
Irolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt Punkte
Standard 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?
Irolight ist offline   Mit Zitat antworten
Ungelesen 16.05.10, 09:49   #2
januschka
Anfänger
 
Registriert seit: Jan 2010
Beiträge: 23
Bedankt: 4
januschka ist noch neu hier! | 0 Respekt Punkte
Standard

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ß
januschka ist offline   Mit Zitat antworten
Ungelesen 16.05.10, 12:33   #3
Irolight
Newbie
 
Registriert seit: Feb 2010
Beiträge: 70
Bedankt: 7
Irolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt PunkteIrolight leckt gerne myGully Deckel in der Kanalisation! | 496004 Respekt Punkte
Standard

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

Gruß
ist mir bekannt wie man auch im Titel sehen kann
Irolight ist offline   Mit Zitat antworten
Ungelesen 16.05.10, 17:07   #4
januschka
Anfänger
 
Registriert seit: Jan 2010
Beiträge: 23
Bedankt: 4
januschka ist noch neu hier! | 0 Respekt Punkte
Standard

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ß
januschka ist offline   Mit Zitat antworten
Ungelesen 16.05.10, 19:05   #5
kramido
Erfahrener Newbie
 
Registriert seit: Apr 2010
Beiträge: 172
Bedankt: 31
kramido ist noch neu hier! | 0 Respekt Punkte
Standard

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.
kramido ist offline   Mit Zitat antworten
Antwort


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

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:08 Uhr.


Sitemap

().