oop - vorteile - unterschied objektorientierte programmierung




Wann ist OOP besser geeignet? (11)

Einige Orte, wo OO nicht so gut ist, sind wo Sie mit "Sets" von Daten wie in SQL zu tun haben. OO tendiert dazu, satzbasierte Operationen schwieriger zu machen, weil es nicht wirklich dazu gedacht ist, den Schnittpunkt von zwei Mengen oder der Obermenge von zwei Mengen optimal zu nehmen.

Es gibt auch Zeiten, in denen ein funktionaler Ansatz sinnvoller wäre, wie dieses Beispiel aus MSDN :

Denken Sie zum Beispiel daran, ein Programm zu schreiben, um ein XML-Dokument in eine andere Form von Daten umzuwandeln. Während es sicherlich möglich wäre, ein C # -Programm zu schreiben, das das XML-Dokument analysiert und eine Reihe von if-Anweisungen verwendet, um zu bestimmen, welche Aktionen an verschiedenen Stellen des Dokuments ausgeführt werden sollen, ist ein überlegener Ansatz die Transformation als eXtensible Stylesheet zu schreiben. Sprachumwandlungsprogramm (XSLT). Es ist nicht überraschend, dass XSLT eine große Anzahl von Funktionalitäten in sich trägt.

Seit ich begonnen habe, objektorientierte Programmierung zu studieren, lese ich häufig Artikel / Blogs, die besagen, dass Funktionen besser sind oder nicht alle Probleme als Objekte modelliert werden sollten. Was denkst du von deinen persönlichen Programmierabenteuern, wenn ein Problem von OOP besser gelöst wird?


Ich bin an OOP verkauft.

Jedes Mal, wenn Sie ein Konzept für ein Problem definieren können, kann es wahrscheinlich in ein Objekt eingepackt werden.

Das Problem mit OOP ist, dass einige Leute es überstrapazierten und ihren Code noch schwieriger zu verstehen machten. Wenn Sie vorsichtig sind mit dem, was Sie in Objekte einfügen und was Sie in Services (statische Klassen) einfügen, profitieren Sie von der Verwendung von Objekten.

Legen Sie einfach nicht etwas, das nicht zu einem Objekt im Objekt gehört, da Sie Ihr Objekt benötigen, um etwas Neues zu tun, an das Sie ursprünglich nicht gedacht haben, refactor und finden Sie den besten Weg, diese Funktionalität hinzuzufügen.


Ich halte es für hilfreich, an ein gegebenes Problem in Sachen "Dinge" zu denken.

Wenn das Problem als ein oder mehrere "Dinge" aufweisend angesehen werden kann, wobei jedes "Ding" eine Anzahl von Attributen oder Teilen von Informationen hat, die sich auf seinen Zustand beziehen, und eine Reihe von Operationen, die darauf ausgeführt werden können - dann OOP ist wahrscheinlich der Weg zu gehen!


Ich bin ein alter Timer, habe aber auch schon lange OOP programmiert. Ich persönlich bin gegen die Verwendung von OOP, nur um es zu benutzen. Ich bevorzuge Objekte, die spezifische Gründe für das Bestehen haben, dass sie etwas Konkretes modellieren und dass sie Sinn machen.

Das Problem, das ich mit vielen der neueren Entwickler habe, ist, dass sie keine Vorstellung von den Ressourcen haben, die sie mit dem Code konsumieren, den sie erstellen. Wenn Sie mit einer großen Datenmenge arbeiten und auf Datenbanken zugreifen, kann das "perfekte" Objektmodell das Schlimmste sein, was Sie für Leistung und Ressourcen tun können.

Meine Schlussfolgerung ist, dass es Sinn macht, ein Objekt als Objekt zu programmieren und es dann als Objekt zu programmieren, solange Sie die Auswirkungen der Implementierung Ihres Objektmodells auf Leistung und Ressourcen berücksichtigen.


Meiner Meinung nach geht es eher um dich als Person. Bestimmte Leute denken besser in funktionaler Hinsicht und andere bevorzugen Klassen und Objekte. Ich würde sagen, dass OOP besser geeignet ist, wenn es Ihrem internen (subjektiven) mentalen Modell der Welt entspricht.


Es hängt von dem Problem ab: Das OOP-Paradigma ist nützlich beim Entwerfen von verteilten Systemen oder Frameworks mit einer Menge von Entity-Living während der Aktionen des Benutzers (Beispiel: Webanwendung).

Aber wenn Sie ein mathematisches Problem haben, bevorzugen Sie eine funktionale Sprache (LISP); für ein leistungskritisches System verwenden Sie ADA oder C usw.

Die Sprache OOP ist nützlich, weil auch sie wahrscheinlich den Garbage Collector (automatische Verwendung von Speicher) in der Ausführung des Programms verwenden: Sie programmieren in C viel Zeit Sie müssen manuell debuggen und ein Speicherproblem beheben.


OOP ist nützlich, wenn Sie Dinge haben. Ein Socket, eine Schaltfläche, eine Datei. Wenn Sie eine Klasse in äh beenden, ist es fast immer eine Funktion, die vorgibt, eine Klasse zu sein. TestRunner sollte mehr als wahrscheinlich eine Funktion sein, die Tests ausführt (und wahrscheinlich Run-Tests nennt).


Es gibt 5 Kriterien, ob Sie objektorientiert über objektbasierten, funktionalen oder prozeduralen Code bevorzugen sollten. Denken Sie daran, dass alle diese Stile in allen Sprachen verfügbar sind, es sind Stile . Alle diese sind in einem Stil von "Soll ich OO in dieser Situation bevorzugen?"

Das System ist sehr komplex und hat mehr als 9k LOC (nur ein beliebiges Level). - Je komplexer die Systeme werden, desto besser werden die Vorteile der Komplexitätseinkapselung. Mit OO kapseln Sie im Gegensatz zu den anderen Techniken immer mehr Komplexität, was auf dieser Ebene sehr wertvoll ist. Object Based oder prozedurale sollte vor diesem bevorzugt werden. (Das spricht nicht für eine bestimmte Sprache, sondern für Sie. OO C passt zu diesen Merkmalen mehr als OO C ++, eine Sprache mit berüchtigtem Ruf für undichte Abstraktionen und die Möglichkeit, Geschäfte mit nur einem mittelmäßigen / hartnäckigen Programmierer zum Mittagessen zu essen).

Ihr Code ist keine Operation auf Daten (dh Datenbank basiert oder Mathematik / Analyse basiert). Datenbankbasierter Code wird oft einfacher über einen prozeduralen Stil dargestellt. Analysebasierter Code wird oft einfacher in einem funktionalen Stil dargestellt.

Ihr Modell ist eine Simulation von etwas (OO zeichnet sich durch Simulationen aus).

Sie tun etwas, wofür der objektbasierte Untertyp-Versand von OO wertvoll ist (Sie müssen also eine Nachricht an alle Objekte eines bestimmten Typs und an verschiedene Subtypen senden und von allen eine passende, aber unterschiedliche Reaktion erhalten) ..

Ihre App ist nicht multithreaded, insbesondere in einem Nicht-Worker-Task-Methodentyp der Codebasis. OO ist ziemlich problematisch in Programmen, die Multithreaded sind und verschiedene Threads benötigen, um verschiedene Aufgaben auszuführen. Wenn Ihr Programm mit ein oder zwei Hauptthreads strukturiert ist und viele Arbeitsthreads das Gleiche tun, ist der verworrene Kontrollfluss von OO-Programmen einfacher zu handhaben, da alle Arbeitsthreads in dem, was sie berühren, isoliert sind und als ein monolithischer Abschnitt des Codes. Betrachten Sie ein anderes Paradigma. Funktional zeichnet sich durch Multithreading aus (der Mangel an Nebeneffekten ist ein großer Segen), und objektbasierte Programmierung kann Ihnen mit einigen der Verkapselung von OO, jedoch mit mehr nachvollziehbarem prozeduralen Code in kritischen Abschnitten Ihrer Codebasis, einen Vorteil verschaffen. Verfahrensweise zeichnet sich natürlich auch in dieser Arena aus.


Persönlich denke ich, dass OOP praktisch eine Notwendigkeit für jede große Anwendung ist. Ich kann mir nicht vorstellen, ein Programm über 100k Codezeilen zu haben, ohne OOP zu verwenden, es wäre ein Albtraum für Wartung und Design.


Ich sage dir, wenn OOP schlecht ist.

Wenn der Architekt wirklich komplizierten, nicht dokumentierten OOP-Code schreibt. Lässt die Hälfte des Projekts hinter sich. Und viele seiner üblichen Code-Teile, die er in verschiedenen Projekten verwendet hat, haben fehlenden Code. Gott sei Dank für .NET Reflector.

Und die Organisation führte nicht Visual Source Safe oder Subversion aus.

Und es tut mir Leid. 2 Seiten Code zum Login ist ziemlich lächerlich, auch wenn es k ...


Warum OOP für die Programmierung verwendet wird:

  1. Seine Flexibilität - OOP ist wirklich flexibel in Bezug auf Nutzungsimplementierungen.
  2. Es kann Ihre Quellcodes um mehr als 99,9% reduzieren - es mag sich anhören, als ob ich übertreibe, aber es ist wahr.
  3. Es ist viel einfacher, Sicherheit zu implementieren - Wir alle wissen, dass Sicherheit eine der wichtigsten Voraussetzungen für Web-Entwicklung ist. Die Verwendung von OOP kann die Sicherheitsimplementierungen in Ihren Webprojekten vereinfachen.
  4. Es macht die Codierung organisierter - Wir alle wissen, dass ein sauberes Programm eine saubere Codierung ist. Die Verwendung von OOP anstelle von Prozeduren macht die Dinge (offensichtlich) organisierter und systematisierter.
  5. Es hilft Ihrem Team, leicht miteinander zu arbeiten - ich weiß, einige von Ihnen hatten / hatten Teamprojekte und einige von euch wissen, dass es wichtig ist, die gleiche Methode, Implementierungen, Algorithmen usw. usw. zu haben.






oop