Was ist eine gute Herausforderung, um Ihre Fähigkeiten in der objektorientierten Programmierung zu verbessern?
Die Idee hinter dieser Umfrage ist es, eine Vorstellung davon zu geben, welche Übungen zum Erlernen von OOP nützlich sind.
Die Herausforderung sollte so sprachunabhängig wie möglich sein und entweder nur wenig oder gar keine Verwendung bestimmter Bibliotheken oder nur die gängigsten Bibliotheken erfordern. Versuchen Sie, nur eine Herausforderung pro Antwort einzuschließen, damit eine Abstimmung allein den Vorzügen dieser Herausforderung entspricht. Wäre auch schön, wenn ein erforderliches Niveau angegeben würde und auch die Gründe dafür, warum es eine nützliche Übung ist.
Lösungen für die Herausforderungen könnten dann als Antworten auf eine "How to ..." - Frage veröffentlicht und von hier aus verlinkt werden.
Zum Beispiel:
- Herausforderung - Implementieren Sie einen Last-In-First-Out-Stack
- Schwierigkeitsgrad - Anfänger
- Begründung - gibt Erfahrung in der Referenzierung von Objekten
Antworten:
Building Skills in Object-Oriented Design ist ein kostenloses Buch, das möglicherweise von Nutzen ist.
[ BEARBEITEN: Das ursprüngliche Buch scheint bitrotted zu sein (404s für alle Formate), aber das Internetarchiv hat Versionen wie HTML , PDF und MOBI ]
Die Beschreibung lautet wie folgt:
"Die Absicht dieses Buches ist es, dem beginnenden Designer zu helfen, indem er ihm eine Reihe interessanter und mäßig komplexer Übungen im OO-Design gibt. Dieses Buch kann Managern auch dabei helfen, ein gewisses Maß an Komfort beim Prozess der OO-Softwareentwicklung zu entwickeln. Die Anwendungen, die wir verwenden werden Builds sind ein Schritt über das Triviale hinaus und erfordern einige sorgfältige Überlegungen und Entwürfe. Da die Anwendungen größtenteils Freizeitaktivitäten sind, sind sie interessant und ansprechend. Dieses Buch ermöglicht es dem Leser, die Prozesse und Artefakte des OO-Entwurfs vor Projektschluss zu untersuchen gutes Design unmöglich erscheinen lassen. "
quelle
Schreiben Sie ein herausforderndes Programm von Grund auf neu . Versuchen Sie, einige Leute (gegen fünf, das sollte machbar sein) dazu zu bringen, es zu benutzen. Reagieren Sie auf ihre Änderungswünsche.
Passen Sie das Design Ihres Programms an. Fangen Sie klein an und sehen Sie dann zu, wie es wächst. Verwalten Sie dieses Wachstum. Das ist schwer. Sie müssen auch Fehler beheben und die Sache im Laufe der Zeit warten, was für mich eine sehr wertvolle Lektion war.
quelle
Herausforderung: Schreiben Sie einen Wrapper für Ihre Website / Service-API Ihrer Wahl in der Sprache Ihrer Wahl, die noch nicht vorhanden ist (z. B. ein in C # geschriebener ZenDesk-API- Wrapper). Geben Sie den Wrapper als Open Source frei, damit andere ihn verwenden können.
Schwierigkeitsgrad: Anfänger bis Fortgeschrittene
Begründung: Erfahren Sie, wie Sie eine Webdienst-API eines Drittanbieters in einen aussagekräftigen Satz von Objekten / Klassen extrapolieren, um die Wiederverwendung dieser API in der von Ihnen gewählten Sprache zu vereinfachen.
quelle
Nachdem Sie die Grundlagen erlernt haben, lesen Sie das Designmusterbuch "Gang of Four".
http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1221488916&sr=8-1
Dies ist ein Klassiker und ein Muss für jeden Codierer, der verstehen möchte, wie man mit OO elegante Lösungen für häufig auftretende Codierungsprobleme entwickelt.
quelle
Nehmen Sie einen prozeduralen geschriebenen Code und versuchen Sie, ihn in eine OOP-basierte Lösung umzuwandeln. Lesen Sie während des Prozesses ein Buch über Refactoring und Entwurfsmuster. Ein Freund von mir konnte einen großen Schritt nach vorne machen, um objektorientierte Konzepte genau auf diese Weise zu verstehen. Wie bei allem funktioniert dies möglicherweise nicht für alle.
quelle
Ich habe festgestellt, dass CRC-Karten beim Lernen, Lehren und Erstellen eines guten OO-Designs sehr effektiv sind.
quelle
Sicherlich besteht eine gute Herausforderung darin, vorhandenen Code, der entweder keine Vererbung verwendet oder nicht viel davon verwendet, um die Vererbung stärker zu nutzen, umzugestalten, obwohl dies weniger zugänglich ist als eine Zuweisung von vorne. Der Prozess des Refactorings wird viele der Vorteile und Fallstricke von oop aufdecken, wie es sicherlich für mich bei meinem jüngsten Projekt der Fall ist. Es hat mich auch dazu gebracht, die Konzepte besser zu verstehen als in früheren Projekten, in denen ich meine eigenen objektorientierten Designs erstellt habe.
quelle
Eine bestimmte Aufgabe hat sehr wenig damit zu tun, "OOP" zu sein, sondern eher damit, wie Sie sie bewerten.
Ich würde mir das Refactoring-Buch, Kapitel 3, ansehen und sicherstellen, dass keiner der schlechten Code-Gerüche in der Lösung vorhanden ist. Oder, was noch wichtiger ist, gehen Sie diejenigen durch, die zutreffen.
Achten Sie vor allem auf die Existenz von Setzern und Gettern (was darauf hinweist, dass Sie mit Werten aus einer Klasse arbeiten und die Klasse nicht auffordern, mit ihren eigenen Werten zu arbeiten) - oder verwenden Sie "Erweitert", ohne das Liskov-Substitutionsprinzip anzuwenden Das.
quelle