# Objektorientierte Programmierung in PHP



## NiclasB11 (21. Mai 2020)

Hallo Leute, ich weiß dieses Forum ist hauptsächlich für Fragen rund um Java entstanden. Ich habe allerdings kein geeignetes Forum für meine Frage gefunden, deshalb richte ich mich hier an euch!

Auf Grund der momentanen Situation finden keine schriftlichen Prüfungen statt, weshalb wir in allen Fächern ein Portfolio anhand von gestellten Fragen ausarbeiten müssen. 

Die erste Frage lautet: 
Erstellen Sie bitte drei Szenarien von Software Entwicklungsprojekten und beschreiben Sie für jedes Szenario, welche Rolle die OOP dort einnimmt und inwieweit die OOP für deren Durchführung überhaupt geeignet ist: 
- Szenario 1: OOP nicht geeignet
- Szenario 2: OOP bedingt geeignet
- Szenario 3: OOP stark geeignet

Das Szenario in dem die OOP stak geeignet ist, ist ja sehr logisch. Einfach ein Online Shop mit der Elternklasse Produkt, welches seine Attribute an Kinderklassen (wie z.B. Klamotten, Schuhe) vererbt und daraus dann die jeweiligen Instanzen (z.B. T-shirt, blaue Farbe, Größe M) entsteht.

Allerdings fallen mir spontan keine Szenarios ein bei denen OOP nicht sinnvoll ist. Habt ihr hier ein paar Beispiele für mich, bei denen es nicht sinnvoll ist objektorientiert zu programmieren?

 Hinweis: Alle Szenarios sollen zinnhaltig sein aber nicht immer geeignet für OOP


----------



## mihe7 (21. Mai 2020)

Ich würde mal an Code-Komplexität denken...


----------



## mrBrown (21. Mai 2020)

Wo ist denn der Zusammenhang mit PHP?


----------



## M.L. (21. Mai 2020)

> Szenario 1: OOP nicht geeignet


Blick in die Wikipedia: https://de.wikipedia.org/wiki/Objektorientierte_Programmierung#Grenzen_der_OOP   (vielleicht lohnt auch ein Blick in andere Paradigmen )


----------



## White_Fox (21. Mai 2020)

NiclasB11 hat gesagt.:


> - Szenario 1: OOP nicht geeignet
> - Szenario 2: OOP bedingt geeignet


Mir fällt da ein sehr großes Tätigkeitsfeld ein, in dem OOP schon strukturell wenig bis gar keinen Sinn macht, dir das hier vorzukauen wäre zu einfach.

Daher: Lasse dir doch mal Tätigkeiten einfallen, wo es kaum bis gar keine Objekte zu modellieren gibt.


----------



## AndiE (21. Mai 2020)

Wie ist denn, wenn nicht OOP? Typischerweise liegen die Funktionen in Modulen vor, die je nach Sprache mal als Library oder als Klasse angesprochen werden. Oder eben zum Funktionskernel gehören.


----------



## NiclasB11 (22. Mai 2020)

M.L. hat gesagt.:


> Blick in die Wikipedia: https://de.wikipedia.org/wiki/Objektorientierte_Programmierung#Grenzen_der_OOP   (vielleicht lohnt auch ein Blick in andere Paradigmen )


Danke für die Antwort!


----------



## NiclasB11 (22. Mai 2020)

White_Fox hat gesagt.:


> Mir fällt da ein sehr großes Tätigkeitsfeld ein, in dem OOP schon strukturell wenig bis gar keinen Sinn macht, dir das hier vorzukauen wäre zu einfach.
> 
> Daher: Lasse dir doch mal Tätigkeiten einfallen, wo es kaum bis gar keine Objekte zu modellieren gibt.


Danke für die Hilfe


----------



## NiclasB11 (22. Mai 2020)

mrBrown hat gesagt.:


> Wo ist denn der Zusammenhang mit PHP?


wir programmieren objektorientiert bis jetzt nur in PHP


----------



## temi (22. Mai 2020)

NiclasB11 hat gesagt.:


> Das Szenario in dem die OOP stak geeignet ist, ist ja sehr logisch. Einfach ein Online Shop mit der Elternklasse Produkt, welches seine Attribute an Kinderklassen (wie z.B. Klamotten, Schuhe) vererbt und daraus dann die jeweiligen Instanzen (z.B. T-shirt, blaue Farbe, Größe M) entsteht.



Solche Beispiele werden zwar für Anfänger gerne hergenommen (und dafür ist es auch in Ordnung), genauso wie Tier => Säugetier => Igel usw., aber in der Praxis bezweifle ich, dass so etwas in einem halbwegs ernsthaften Programm jemals auftauchen wird.

Nehmen wir den Online-Shop. Das wäre ja viel zu unflexibel für jedes neue Produkt eine Unterklasse zu erstellen. Der Benutzer der Shop-Software ist schließlich kein Programmierer, sondern normaler Anwender.


----------



## AndiE (22. Mai 2020)

PHP halte ich für solche Überlegungen ungeeignet. Es fehlt mir die Trennung zwischen physische Ausgabe und Verarbeitung. In einem PHP-Scrpit habe ich den HTML-Code und dessen Verarbeitung in einem Script. In einem Perl-Script habe ich das getrennt, in einem Modul die Verarbeitung in einem anderen die Darstellung. Dabei kann ich Perl-Scripte auch vom BS-Prompt starken, so dass sie mir den zu erwartenden HTML-Code anzeigen, den ich auf Fehler testen kann. Das geht eben bei PHP nicht. Andere Scriptsprachen wie Python erwarten regelrecht eine Hauptklasse mit einer main-Methode, ähnlich wie Java. Python kann man ebenso wie Perl ausproieren, ohne ein zusätzliches Programm, wie den Internetbrowser zu benutzen. 

Ebenso ist das Zusammenspiel von Eingabe und Verarbeitung bei PHP etwas besonderes. Üblicherweise hole ich mir dabei die Informationen aus einer "HTML"-Form.


----------



## mrBrown (22. Mai 2020)

AndiE hat gesagt.:


> PHP halte ich für solche Überlegungen ungeeignet. Es fehlt mir die Trennung zwischen physische Ausgabe und Verarbeitung. In einem PHP-Scrpit habe ich den HTML-Code und dessen Verarbeitung in einem Script. In einem Perl-Script habe ich das getrennt, in einem Modul die Verarbeitung in einem anderen die Darstellung. Dabei kann ich Perl-Scripte auch vom BS-Prompt starken, so dass sie mir den zu erwartenden HTML-Code anzeigen, den ich auf Fehler testen kann. Das geht eben bei PHP nicht. Andere Scriptsprachen wie Python erwarten regelrecht eine Hauptklasse mit einer main-Methode, ähnlich wie Java. Python kann man ebenso wie Perl ausproieren, ohne ein zusätzliches Programm, wie den Internetbrowser zu benutzen.
> 
> Ebenso ist das Zusammenspiel von Eingabe und Verarbeitung bei PHP etwas besonderes. Üblicherweise hole ich mir dabei die Informationen aus einer "HTML"-Form.


Man kann PHP auch über CLI nutzen und muss keineswegs alles in html einbetten.


----------

