Wann ist OOP besser geeignet?
Da begann ich mein Studium der Objekt-orientierten Programmierung, die ich Häufig Lesen Sie Artikel/blogs sagen-Funktionen besser sind, oder nicht alle Probleme sollten modelliert werden als Objekte. Aus Ihrer persönlichen Programmierung Abenteuer, wenn Sie denken, ein problem besser lösen, indem OOP?
InformationsquelleAutor der Frage jfs | 2008-08-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine harte und schnelle Regel. Ein problem ist das besser gelöst mit OOP, wenn Sie besser Probleme lösen können und denken in einer OO-Mentalität. Objektorientierung ist nur ein weiteres Werkzeug, die zusammen durch den Versuch zu machen, computing ein besseres Werkzeug für die Lösung der Probleme.
Allerdings kann es ermöglichen eine bessere Wiederverwendung von code, und kann auch dazu führen, dass ordentlicher code. Aber oft werden diese hochgelobten Qualitäten, in-relity, der wenig realen Wert. Anwendung von OO-Techniken, um eine vorhandene funktionelle Anwendung kann wirklich verursachen eine Menge Probleme. Die Fertigkeit besteht darin, viele verschiedene Techniken und die Anwendung der am besten geeigneten, um das problem an der hand.
OO wird oft zitiert als ein Nirwana-ähnlichen Lösung für die software-Entwicklung, aber es gibt viele Male, wenn es nicht angebracht ist, angewendet werden, um die Frage auf der hand. Es kann oft führen zu over-engineering eines Problems zu erreichen, die perfekte Lösung, oft ist es wirklich nicht notwendig.
Im wesentlichen, OOP ist nicht wirklich objektorientiert Programmieren, aber das mapping der Objekt-Orientierten Denken zu einem Programmier-Sprache zur Unterstützung von OO-Techniken. OO-Techniken unterstützt werden können, von den Sprachen, die sind nicht von Natur aus OO und es gibt Techniken, die Sie verwenden können, in funktionalen Sprachen zu nutzen.
Als Beispiel, ich habe die Entwicklung von OO software für über 20 Jahre jetzt, so Neige ich dazu zu denken OO Bedingungen bei der Lösung von Problemen, unabhängig von der Sprache, die ich Schreibe. Derzeit bin ich die Implementierung Polymorphismus mit Perl 5.6, die nicht nativ unterstützen. Ich habe entschieden, dies zu tun, da es die Wartung und Erweiterung des Codes eine einfache Konfiguration Aufgabe, sondern als eine Frage der Entwicklung.
Nicht sicher, ob das ist klar. Es gibt Menschen, die sind hart in der OO-Gericht, und es gibt Menschen, die sind schwer in die Funktionale Gericht. Und dann gibt es Leute, die versucht haben, die beiden und versuchen, den besten von jedem. Weder ist vollkommen, aber beide haben einige sehr gute Eigenschaften, die Sie nutzen können, egal welche Sprache.
Wenn Sie versuchen zu lernen, OOP, don ' T konzentrieren sich nur auf OOP, sondern versuchen, die Nutzung der Objekt-Orientierten Analyse und Allgemeine OO-Prinzipien, um das ganze Spektrum der Lösung des Problems.
InformationsquelleAutor der Antwort Xetius
Ich bin ein Oldtimer, haben aber auch OOP programmiert für eine lange Zeit. Ich persönlich bin gegen die Verwendung von OOP einfach, es zu benutzen. Ich bevorzuge Objekte haben bestimmte Gründe für die bestehenden, dass Sie das Modell etwas konkretes, und dass Sie Sinn machen.
Das problem, dass ich habe eine Menge neuer Entwickler ist, dass Sie haben keine Vorstellung von den Ressourcen, die Sie verbrauchen mit dem code, den Sie erstellen. Beim Umgang mit einer großen Menge von Daten und den Zugriff auf Datenbanken, die "perfekte" Objekt-Modell kann das Schlimmste, was Sie tun können, für Leistung und Ressourcen.
Mein Fazit ist, ob es Sinn macht, als ein Objekt, Programmieren Sie es als ein Objekt, solange man bedenkt, das die Leistung/Ressource Auswirkung der Umsetzung Ihres Objekt-Modell.
InformationsquelleAutor der Antwort bruceatk
Ich denke, es passt am besten, wenn man die Modellierung etwas zusammenhalt mit den Staats-und zugehörigen Maßnahmen auf diese Staaten. Ich denke, das ist ziemlich vage, aber ich bin nicht sicher, es gibt eine perfekte Antwort hier.
Ist die Sache mit der OOP ist, dass es lässt Sie die Kapseln und abstrakte Daten und Informationen entfernt, das ist ein echter Segen in den Bau einer großen Anlage. Sie können das gleiche tun mit anderen Paradigmen, aber es scheint OOP ist vor allem hilfreich in dieser Kategorie.
Es auch eine Art hängt von der Sprache, die Sie verwenden. Wenn es eine Sprache mit reicher OOP-Unterstützung, sollten Sie wahrscheinlich verwenden, dass zu Ihrem Vorteil. Wenn nicht, dann müssen Sie möglicherweise auf andere Mechanismen zu brechen, die das problem in kleinere, leichter testbar Stücke.
InformationsquelleAutor der Antwort Mike Stone
Ich bin verkauft zu OOP.
Jederzeit können Sie definieren, ein Konzept für ein problem, es kann wohl sein, eingewickelt in ein Objekt.
Das problem mit der OOP ist, dass manche Menschen überbeansprucht und Ihren code noch schwieriger zu verstehen. Wenn Sie vorsichtig, was Sie in Objekte und was Sie in Dienstleistungen (statische Klassen), Sie profitieren von der Nutzung von Objekten.
Einfach nicht etwas, das ihm nicht gehört, um ein Objekt in das Objekt, weil Sie Sie brauchen Ihrer Gegenstand, etwas neues zu tun, die Sie gar nicht denken zunächst, umgestalten und den besten Weg finden, um diese Funktionalität hinzufügen.
InformationsquelleAutor der Antwort mbillard
Gibt es 5 Kriterien, ob Sie bevorzugen sollten Objekt-Orientiert über Objekt-Basierten,Funktionalen oder Prozeduralen code. Denken Sie daran, alle diese Arten sind in allen Sprachen verfügbar, Sie sind Stile. Alle diese aber sind geschrieben in einem Stil, der "Sollte ich zugunsten OO in dieser situation?"
Das system ist sehr Komplex und verfügt über etwa 9k LOC (Nur ein beliebiger Ebene). -- Da die Systeme immer komplexer, die Vorteile, die Sie durch die Kapselung Komplexität gehen bis ganz ein bisschen. Mit OO, im Gegensatz zu den anderen Techniken, neigen Sie, Sie Kapseln sich mehr und mehr von der Komplexität, die sehr wertvoll ist auf dieser Ebene. Objekt-Basiert oder Verfahren sollten bevorzugt werden, vor diesem. (Dies ist kein Plädoyer für eine bestimmte Sprache Verstand Sie. OO C passt diese Funktionen mehr als OO C++ in meinem Kopf, eine Sprache, die mit einem berüchtigten Ruf für leaky Abstraktionen und die Fähigkeit zu Essen, Geschäfte mit noch 1 mittelmäßig/eigensinnig Programmierer für das Mittagessen).
Dem code keine Operationen auf Daten (also Datenbank-basiert oder Mathematik/analysis based). Datenbank-basierten code ist oft leichter dargestellt prozeduralen Stil. Analyse-basierten code ist oft einfacher, dargestellt in einem funktionalen Stil.
Ihre Modell ist eine simulation von etwas (OO zeichnet sich bei Simulationen).
Du tust etwas für die Objekt-basierte Subtyp Versand OO wertvoll ist (aka, die Sie benötigen, um eine Nachricht zu senden, um alle Objekte eines bestimmten Typs und verschiedenen Subtypen und erhalten eine entsprechende, aber anders, die Reaktion von allen von Ihnen).
Ihre app ist nicht multi-threaded ist, vor allem in einem nicht-worker-task-Methode Art der codebase. OO ist ziemlich problematisch, auf welche Programme sind multithreaded und erfordern unterschiedliche threads für unterschiedliche Aufgaben. Wenn Ihr Programm ist so strukturiert, mit einem oder zwei Haupt-threads und viele worker-threads tun, die gleiche Sache, die verworren Ablaufsteuerung von OO-Programmen ist einfacher zu handhaben, da alle worker-threads isoliert werden, was Sie berühren, und kann als eine monolithische code-Abschnitt. Betrachten Sie jeden anderen Paradigma tatsächlich. Funktional zeichnet sich bei multithreading (fehlen von Nebenwirkungen ist ein großer Segen) und Objekt-basierte Programmierung kann Ihnen Wohltaten, mit einigen der Kapselung von OO, allerdings mit mehr nachvollziehbar prozeduralen code in kritische Abschnitte Ihrer Codebasis. Prozedurale natürlich zeichnet sich in diesem Bereich als gut.
InformationsquelleAutor der Antwort Michael Langford
Einige Orte, an denen OO nicht so gut sind, wo man sich mit "Sets" von Daten, wie in SQL. OO neigt zu machen, basierend Operationen schwieriger, weil es ist nicht wirklich entwickelt, um optimal die Schnittmenge zweier sets oder die Obermenge von zwei Sätzen.
Auch, es gibt Zeiten, wenn ein funktionaler Ansatz würde mehr Sinn machen, wie dieses Beispiel aus MSDN:
InformationsquelleAutor der Antwort lomaxx
Ich finde, es hilft, zu denken, ein bestimmtes problem in Bezug auf die 'Dinge'.
Wenn das problem gedacht werden kann, als mit einem oder mehreren 'Dingen', wobei jedes 'Ding' hat eine Anzahl von Attributen oder Stücke von Informationen, die auf seinen Zustand, und eine Reihe von Operationen, die durchgeführt werden können - dann OOP ist wahrscheinlich der Weg zu gehen!
InformationsquelleAutor der Antwort Chris Roberts
Den Schlüssel, um zu lernen der Objekt-Orientierten Programmierung lernen über Design Pattern. Durch das lernen über design-patterns kann man besser sehen, wenn der Unterricht erforderlich und Wann nicht. Wie alles andere in der Programmierung verwendet, die Verwendung von Klassen und andere features von OOP-Sprachen hängt von Ihrem design und Anforderungen. Wie algorithmen, Entwurfsmuster, sind einer höheren Ebene Konzept.
Einem Design-Pattern spielt, ähnelt der Rolle von algorithmen für klassische Programmiersprachen. Ein Entwurfsmuster lernen Sie, wie das erstellen und kombinieren von Objekt, das eine bestimmte nützliche Aufgabe. Wie die besten algorithmen die besten design patterns sind allgemein genug, um die Anwendung auf eine Vielzahl von gemeinsamen Probleme.
InformationsquelleAutor der Antwort RS Conley
Meiner Meinung nach ist es mehr eine Frage über dich als person. Bestimmte Menschen besser denken in funktionalen Bedingungen und andere lieber mit Klassen und Objekten. Ich würde sagen, dass OOP eignet sich besser, wenn Sie mit Ihrer internen (subjektiven) mentalen Modell der Welt.
InformationsquelleAutor der Antwort fluffels
Objektorientierten code und prozeduralen code haben unterschiedliche Erweiterungspunkte. Objekt-orientierte Lösungen, die es leichter machen, neue Klassen hinzufügen, ohne änderungen der bestehenden Funktionen (siehe die Offen-Geschlossen-Prinzip), während prozedurale code ermöglicht das hinzufügen von Funktionen ohne änderung der bestehenden Datenstrukturen. Oft sind verschiedene Teile eines Systems erfordern unterschiedliche Ansätze je nach Art der Veränderung, die zu erwarten ist.
InformationsquelleAutor der Antwort Rob Scott
OO ermöglicht die Logik im Zusammenhang mit einem Objekt platziert werden, in einem einzigen Ort (in der Klasse oder Objekt), so dass es entkoppelt werden können und leichter zu Debuggen und zu warten.
Was ich beobachtet habe, ist, dass jede app ist eine Kombination aus OO-und prozedurale code, wo die prozeduralen code ist der Leim, der Sie alle Gegenstände zusammen (zumindest der code in der main-Funktion). Die mehr können Sie Ihre prozeduralen code in OO, desto leichter wird es sein zu halten yor-code.
InformationsquelleAutor der Antwort Juan Mendes
Wieso OOP verwendet wird, für die Programmierung:
InformationsquelleAutor der Antwort Ashok N
Es hängt von dem problem: das OOP-Paradigma ist sinnvoll in die Gestaltung distribuited Systeme oder Rahmen mit einer Menge von Person zu Leben, während die Aktionen des Benutzers (zum Beispiel: web-Anwendung).
Aber wenn Sie haben ein Mathe-problem, das Sie bevorzugen eine funktionale Sprache (LISP); für eine performance-kritische Systeme, die Sie verwenden, ADA oder C, etc etc.
Die Sprache OOP ist nützlich, weil es auch verwenden, probabily der garbage collector (automatische Speicherbelegung) im Vorfeld des Programms: Sie Programmieren Sie in C eine Menge Zeit, Sie müssen Debuggen und korrigieren Sie manuell ein problem der Speicher.
InformationsquelleAutor der Antwort
OOP ist nützlich, wenn Sie die Dinge haben. Eine Steckdose, ein Taster, eine Datei. Wenn Sie am Ende einer Klasse, in der er es fast immer eine Funktion, die vorgibt, eine Klasse. TestRunner mehr als wahrscheinlich sein sollte, eine Funktion, die führt tests(und wohl auch benannt, tests).
InformationsquelleAutor der Antwort stonemetal
Persönlich, ich denke OOP ist praktisch eine Notwendigkeit für irgendeine große Anwendung. Ich kann mir nicht vorstellen, dass ein Programm über 100k Zeilen code ohne Verwendung von OOP, es wäre eine Pflege und Gestaltung Alptraum.
InformationsquelleAutor der Antwort rbrc
Ich Ihnen sagen, wenn es OOP ist, ist schlecht.
Wenn der Architekt schreibt wirklich kompliziert ist, ist nicht dokumentiert OOP-code. Blätter auf halbem Weg durch das Projekt. Und viele seiner gemeinsamen code-Stücke, die er in verschiedenen Projekt code fehlt. Ich danke Gott für .NET Reflector.
Und die Organisation wurde nicht ausgeführt, Visual Source Safe oder Subversion.
Und tut mir Leid. 2 Seiten code-login ist eher lächerlich, auch wenn es goldig OOPed....
InformationsquelleAutor der Antwort etm1109