Ich habe in den letzten Monaten OOP in Verbindung mit der MVC-Implementierung von Zend studiert. Ich bin im Allgemeinen ziemlich neu in der Programmierung, aber ich bin der festen Überzeugung, dass ich die Dinge auf die „richtige“ Weise lernen sollte, was für mich bedeutet, sicherzustellen, dass ich verstehe, warum die Dinge so gemacht werden, wie sie sind. Das heißt, ich habe festgestellt, dass beim Lernen, wie man etwas macht (irgendetwas, sagen wir Musik), der beste Weg, um zu lernen, wie man etwas macht, darin besteht, zu wissen, warum es überhaupt so gemacht wird.
Wie auch immer, ich hatte große Probleme damit, zu verstehen, wie ich meine eigenen Geschäftsmodelle (dh das M von MVC) entwickeln kann, und ich habe entschieden, dass dies nicht daran liegt, dass ich OOP im Allgemeinen nicht verstehe, sondern daran, dass ich es für mehrere studiert habe Monate und ich denke nicht, dass die Konzepte sehr schwer zu verstehen sind. Ich finde die Beispiele, die ich studiert habe, eigentlich sehr intuitiv. Ich denke, das Problem liegt in der Umsetzung meiner eigenen Probleme in objektorientierte Lösungen. Die Beispiele in Büchern (die ich bisher gelesen habe) sind zu offensichtlich, so dass der Prozess der Übersetzung des Problems in Objekte nicht sehr schwierig ist. Was ich zu vermissen glaube, ist ein abstrahierter Prozess auf hoher Ebene. Eine Liste von Schritten oder Fragen, die jede objektorientierte Lösung auf höchster Ebene beantworten muss.
Wenn Sie einen solchen Prozess in nicht mehr als fünf Schritten beschreiben müssten, welche wären das und warum? Was ist der effektivste Prozess, um ein Problem in eine objektorientierte Lösung umzusetzen?
quelle
Antworten:
Ein geeignetes Modell zu finden ist nicht immer einfach. Es ist eines dieser Dinge, die mehr Erfahrung erfordern als einfaches Wissen. Das folgende einfache Rezept kann Ihnen jedoch helfen, eine anfängliche mentale Blockade zu überwinden.
Es wurde ursprünglich in diesem Artikel von Abbott beschrieben und wird häufig als "Abbotts Textanalyse" bezeichnet.
Beispiel:
Substantive , Verben und
adjectives
sind markiert.Eine erste Analyseiteration würde ergeben:
Klassen:
Von hier an können Sie überlegen, welche Klasse welche Attribute und Methoden benötigt, um das Verhalten zu implementieren, und dieses Modell dann zunehmend verfeinern.
quelle
Meiner Meinung nach ist der TDD-Ansatz natürlich und effizient:
Mit diesem Verfahren können Sie schrittweise testbaren Code mit Sounddesign erstellen. Sie könnten zunächst denken, dass ein Schreibtest nicht erforderlich ist, aber diese Aktivität hilft Ihnen tatsächlich beim Aufbau einer soliden Architektur.
quelle
Hier sind die Schritte, die ich in C ++ - Code verwende:
Der Grund für (1) ist, dass es den Umfang definiert, welche Funktionalität zur Klasse gehört. Der Grund für (2) ist, dass es definiert, wie die Klasse mit der Außenwelt kommuniziert. Der Grund für (3) ist, dass definiert wird, wie ausgewählt werden soll, welche Funktionalität der Klasse in jeder Situation benötigt wird. Der Grund für (4) ist, dass die Klasse in vielen verschiedenen Situationen verwendet werden kann. Der Grund für (5) ist, dass es die Grenze zwischen Design und Implementierung definiert.
quelle