Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Objekt Orientiertes Design - Argumentation

Empfohlene Antworten

Hi!

Ich weiß nicht ob ich hier in der richtigen Rubrik bin, aber ich habe irgendwie nichts besseres gefunden:

Wenn man die Wahl zwischen Objektorientiertem- und Strukturiertem Softwaredesign hat, wie kann man argumentieren, dass man sich für das OOD entschieden hat? Was spricht dafür?

Objektorientiertem- und Strukturiertem Softwaredesign

Das eine schließt das andere nicht unbedingt aus. Zwar rechnet man structured programming klassischer Weise dem prozeduralen Paradigma zu; doch im weitesten Sinne kann man davon sprechden, dass OOP eine Weiterentwicklung darstellt. Die Kontrollstrukturen existieren auch im OOP-Paradigma, die klassische Sequenz findet sich bei OOP e.g. als method chaining, template pattern oder ähnlichem wieder. Typischerweise spricht man nicht mehr von Subroutinen, sondern von Methodenaufrufen. Iterationen existieren in der erweiterten Form von forEach(...) und dem Iterator-Konzept weiter. Beide haben das Ziel durch Modularisierung den code reuse zu erhöhen. Der Vorteil durch OOP besteht nun darin, dass man komponenten basiert entwickeln kann, i.e. durch das Prinzip der Datenkapselung: Daten und Funktionen die diese Daten manipulieren werden in einem sauberen OOD zusammen gefasst (http://de.wikipedia.org/wiki/Prinzipien_objektorientierten_Designs#SOLID-Prinzipien ). Somit können komplexe Softwareprojekte nicht nur in beliebig viele Teilprobleme zerlegt, und entsprechend an beliebig viele Teams delegiert werden, sondern man hat sogar den Vorteil, dass die Funktionalität eine Objekts durch ein fest definiertes API genutzt werden kann. Dabei ist die tatsächliche Implementierung unabhängig vom Gebrauch. Ein großer Vorteil wurde zum Zeitpunkt der Entwicklung von OO-Sprachen in der sog. Vererbung gesehen. Aus historischer Sicht macht es nur bedingt Sinn, ganze Klassenbäume aufzumalen. Was in der Praxis genutzt wird, ist die sog. Interface-Vererbung / Traits in Scala. Im Grunde geht es darum, dass Klassesvererbung eine Reihe von ähnlichen Objekten beschreibt, während Interfacecererbung lediglich ein API beschreibt an welches sich implmentierende Klassen halten müssen. Alle Implementierung findet an der implementierenden Klasse selbst statt, somit hat man zwei Vorteile a) Überblick und <ahttp://devipb.fachinformatiker.de/uploads/emoticons/default_cool.png' alt='B)'> Flexibilität. Entsprechend baut man Klassen aus einzelnen Komponenten auf, die entsprechendes Verhalten mitbingen. Das dahinter stehende Prinzip lautet Bevorzuge Komposition statt Vererbung. )

Das dritte Verkaufsargument für OOP ist die sog. Polymorphie, was es erlaubt, verschiedenartige Komponenten auf gleiche Weise anzusprechen. Wichtig ist hier eben das API(Sonderfall: Duck-Typing in dynamisch typisierten Sprachen).

Ein gemeinsamer Nachteil beider Programmierparadigmen ist die Behandlung von Zustandsinformationen (State: https://youtu.be/7Zlp9rKHGD4?t=4m8s). Das Problem ist implizit durch das funktionale Paradigma gelöst, da es dort Zustandsinformation existiert. Man hat lediglich Input für Funktionen und entsprechenden Output. Zwar kann man sich in verschiedenen Programmiersprachen funktionaler Prinzipien bedienen, teilweise sogar mit sog. immutable collections behelfen. Aber das kann zu Laufzeitschwierigkeiten führen, wenn der Garbage Collector nicht mit dem Aufräumen hinter her kommt.

Zusammenfassend kann man sagen: OOP ist strukturierte Programmierung on steroids.

  • Autor

Das geht natürlich schon sehr ins Detail. Ich dachte eher an eine etwas allgemeinere Argumentation, für die man selbst nicht zwangsweise Programmierkenntnisse braucht. Quasi auf einer höheren Entscheidungsebene, ohne dass man jetzt mit der tatsächlichen programmatischen Umsetzung argumentiert. Dabei dachte ich an so Punkte wie Wartbarkeit durch einen fremden Entwickler, oder Erweiterbarkeit der Anwendung. So etwas wären ja zum Beispiel Punkte die eher für Objekt Orientiertes Design sprechen würden, oder?

Du hast natürlich Recht, dass OOP quasi eine Spezialform der strukturierten Programmierung ist. Ich meinte wohl eher prozedurale Programmierung.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.