Wir sind dabei, bei meiner Arbeit mit einem neu zu codierenden Bootcamp zu helfen, in dem Leute aus anderen Abteilungen lernen können, wie man von den IT-Mitarbeitern codiert. Während das großartig ist, bin ich in einer Essiggurke. Ich wurde gebeten, einen Weg zu finden, um die Konzepte von Vererbung, Polymorphismus, Has-a und Is-a-Beziehungen zu einer physischen Demo physisch zu demonstrieren. Tatsächlich bitten sie mich, Requisiten zu verwenden, um diese Konzepte Leuten zu demonstrieren, die nichts über Programmierung und Informatik wissen!
Gibt es gute Analogien oder Demonstrationen, die Sie verwendet oder gesehen haben, um diese Prinzipien zu demonstrieren?
object-oriented
concepts
demonstration
Adam Wells
quelle
quelle
Antworten:
Das Unterrichten von OO-Prinzipien für Nicht-Programmierer ist wie das Unterrichten von Tauchen für Menschen, die nicht schwimmen können.
Das heißt , hier sind einige Möglichkeiten mit vorgeschlagenen Requisiten, die Sie in den Unterricht mitnehmen und herumreichen (oder zumindest zeigen) können, um die Konzepte zu veranschaulichen:
Erbe:
Requisiten:
Erläuterung: Sagen Sie ihnen, dass jedes neue iPhone eine schrittweise Verbesserung seines unmittelbaren Vorgängers darstellt. Dass die meisten Innereien gleich sind, aber einige wurden verbessert. Gleiches gilt für Funktionalitäten. Sagen Sie dann sogar, dass einige Teile buchstäblich die gleichen Teile des allerersten iPhone sein könnten, die keinen Grund hatten, sich zu ändern.
Polyporphismus:
Requisiten:
Erläuterung: Da alle Geräte dieselbe Schnittstelle aufweisen (alle haben Stecker mit Zinken, die in die Wandsteckdosenlöcher passen), werden alle Artefakte von einem solchen Stecker mit Strom versorgt. Aus Sicht des Sockets spielt es keine Rolle, welchen Gerätetyp Sie an das Stromnetz anschließen, solange er mit der "Schnittstelle" des Sockets übereinstimmt.
Ist ein:
Requisiten: die oben genannten iPhones
Erläuterung: Jedes iPhone 7 ist ein iPhone, jedes iPhone ist ein Smartphone, jedes Smartphone ist ein Telefon.
Has-a: Zusammensetzung
Requisiten: die oben genannten iPhones sowie ein abgenommenes Touchscreen-Panel.
Erläuterung: Jedes iPhone verfügt über ein Touchscreen-Panel (das transparente Gerät mit einem seitlich angebrachten Flachkabel). Das vom iPhone getrennte Touchscreen-Panel ist nicht sehr nützlich. Sie sehen keine Personen, die in ihren Taschen abgetrennte Touchscreen-Panels mit heraushängendem Flachkabel tragen.
Has-a: Aggregation
Requisiten: Ein Schlüsselbund mit Schlüsseln, Laserpointer, einem Kappenöffner, einem Flashdrive, einer Autoalarmsteuerung und anderen Schmuckstücken und Anhängern.
Erläuterung: Ein Schlüsselbund ist ein zusammengesetztes Objekt, an dem viele Schlüssel angebracht sind. Die Schlüssel, Laserpointer und Dosenöffner können von selbst funktionieren, ohne an einen Schlüsselbund gebunden zu sein, und weder der Schlüsselbund noch das Werkzeug (Schlüssel usw.) bleiben darin ein instabiler Zustand. Sie können diese Elemente zum Schlüsselbund hinzufügen und daraus entfernen, sie können jedoch selbst als funktionale Werkzeuge vorhanden sein. Der Schlüsselbund selbst kann epmty sein, und man kann nicht sagen, dass er deswegen kaputt ist.
HINWEIS: In diesen Klassen wird OOP nicht wirklich unterrichtet, genauso wie in der Chineasy- Methode kein Mandarin unterrichtet wird. Es wird nur ein lustiger (hoffentlich) Einblick in eine fremde Denkweise sein.
quelle
Beginnen Sie mit den Grundlagen. Verwenden Sie keine physischen Objekte als Requisiten, um Dinge vorzuschlagen, die Objekte sein könnten, da dies eine irreführende Art ist, über objektorientierte Systeme nachzudenken. Nehmen Sie stattdessen ein Blatt aus den Weihnachtsvorträgen der Royal Institution und verwenden Sie Ihr Publikum als Requisiten. Bringen Sie mehrere von ihnen dazu, sich freiwillig zu melden, und weisen Sie einigen von ihnen die Rolle zu, Objekte in einem tatsächlichen, realistischen objektorientierten System zu sein. Vielleicht muss einer von ihnen eine Warteschlange sein und ein paar andere Produzenten und Konsumenten oder so etwas. Zeigen Sie ihnen, dass das Wichtigste an einem Objekt sein Verhalten in Bezug auf andere Objekte ist, nicht das , was es modelliert (weil es in vielen Fällen nichts Greifbares modelliert).
quelle
Meine persönliche Erfahrung ist, dass selbst einige Nachwuchsentwickler ohne akademischen Hintergrund in der Informatik, die gerade das Programmieren durch Suchen im Internet gelernt haben, die Details von OOP nicht richtig verstehen können. Verwenden Sie beispielsweise Eigennamen für Eigenschaften oder schreiben Sie kurze Methoden, und die Liste wird fortgesetzt. Ich denke, dass das Unterrichten von OOP-Konzepten für Leute, die noch nie mit Programmieren vertraut waren, ein Overkill ist und schnell zu Enttäuschungen führen würde.
Ich würde vorschlagen, mit einigen Grundlagen der Programmierung in der Sprache Ihrer Wahl zu beginnen und dann langsam zu verstehen, warum Sie beispielsweise von einer anderen Klasse erben oder warum Sie verschachtelte Klassen erstellen, und ihnen schließlich zu sagen: "Ok, dieses Ding ist Is-A Beziehung und das Ding ist Has-A-Beziehung "usw.
quelle
Sie sollten sich auf die wichtigsten Funktionen von OO konzentrieren. Dies sind Kapselung, Unterscheidung zwischen Schnittstelle und Implementierung und lose Kopplung.
Was Sie nicht tun sollten, ist, aus Vererbungshierarchien eine große Sache zu machen und Taxonomien als Metapher dafür zu verwenden. Erstens ist Vererbung in OO kein so wichtiges Konzept, zweitens sind die populären Metaphern eher irreführend als aufschlussreich. Klassen sind eigentlich nichts anderes als Tier- oder Obstarten oder was auch immer.
Ich denke, eine Küche wäre eine nützliche Metapher. Eine Küche erfordert viele komplexe Funktionen, um Essen kochen zu können. Es ist jedoch nicht als eine große miteinander verbundene Maschine gebaut. Vielmehr besteht es aus Komponenten wie Backofen, Kühlschrank, Spüle usw. Jede Komponente hat einen einzigen genau definierten Zweck. Sie sind austauschbar - Sie können den Ofen gegen einen anderen Ofen eines anderen Herstellers austauschen, und er passt sogar in denselben Raum und hat im Grunde dieselbe Schnittstelle. Sie sind alle mit denselben Rohren und Auslässen verbunden. Die Komponenten sind lose miteinander verbunden: Durch Ändern des Ofens ändert der Kühlschrank sein Verhalten nicht. Ein Konstruktionsfehler im Kühlschrank wirkt sich nicht auf die anderen Komponenten aus. Der Ofenreparaturmann muss nur ein Experte für Öfen sein.
Überlegen Sie nun, ob eine Küche als eine große "Maschine" mit all diesen Funktionen (Back-, Gefrier-, Rühr-, Kühl- usw.) gebaut, aber nicht in Komponenten unterteilt wurde. Sie können keine Komponenten verschiedener Hersteller ersetzen oder hinzufügen. Möglicherweise ist ein Teil der Funktionalität in dieser speziellen Küche unterdurchschnittlich, aber Sie können nichts tun. Der Reparaturmann muss alles verstehen , weil es eine große Maschine ist. Es besteht ein hohes Risiko, dass ein Konstruktionsfehler im Ofen dazu führt, dass die Spüle explodiert. Und so weiter.
Beachten Sie, dass dies niemandem hilft, das Codieren zu lernen. Sie lernen nicht, durch Metaphern zu codieren - Sie lernen, durch Schreiben von Code zu codieren, um Probleme zu lösen.
quelle
Verwenden Sie die Tierklassifikation und Kuscheltiere, wenn Sie möchten
Dies schafft das richtige Gleichgewicht zwischen unscharfer Annäherung mit dem Gefühl, dass dies ernstes „wissenschaftliches Zeug“ ist. Verwenden Sie einige billige Kuscheltiere als Requisiten, wenn Sie möchten, und verwenden Sie möglicherweise eine PowerPoint-Präsentation mit häufigen Tierfotos - Menschen mögen Tiere, und die meisten werden „munter“, wenn sie ein gutes Tierbild haben.
Es hilft, dass das biologische Klassifizierungssystem eine „echte Sache“ ist und dass sich die meisten Abiturienten ein wenig daran erinnern werden.
CAVEATS :
Die einzige Einschränkung ist, dass Sie gelegentlich auf eine Person treffen können, deren Weltanschauung durch die Erörterung eines evolutionären Themas in Frage gestellt wird. Sie können diesen Personen versichern, dass Sie „nur über die Klassifizierung von Tieren sprechen “.
Die Tiermetapher funktioniert am besten, wenn Sie etwas über Biologie und das Tierklassifizierungssystem wissen. Wenn Sie sich wirklich nicht an Ihre High-School-Biografie erinnern und die gemeinsamen Eigenschaften von Säugetieren vergessen, ist es möglicherweise besser, ein Beispiel zu verwenden, über das Sie maßgeblich sprechen können.
Vermeiden Sie auf jeden Fall Hightech-Themen für Ihr Beispiel. Die meisten Laien interessieren sich wirklich nicht für Computermodelle oder Peripheriegeräte. Diese Motive werden nur die Vorstellung verstärken, dass Ihr Publikum wahrscheinlich bereits beim Betreten davon ausgehen wird, dass dieses ganze Thema „nur für Technikfreaks“ ist.
Zu beschreibende Konzepte:
Klassen und Objekte - Das Ideal von Hund gegen einzelne Hunde.
Methode und Eigenschaften - Hunde sind pelzig. Hunde können bellen.
Überschreibungen - Nicht alle Hunde haben Haare.
Vererbung - Hunde sind Säugetiere. Hunde können im Allgemeinen das tun, was Säugetiere können (Methodenvererbung), haben Attribute, die Säugetiere haben (Attributvererbung).
Abstrakte Klassen - Kein wirkliches Tier ist nur ein Säugetier.
Inheritence von einer konkreten Klasse - Scottish deerhounds sind Hunde , die keine Rinde haben Methode .
Zusammensetzung - Ein Hund oder ein anderes Tier kann hat einen Kragen, sondern ein Bund ist nicht Teil des Tieres.
Etwas fortgeschrittenere Konzepte
Das Obige ist so weit, wie ich es jemals mit einem ersten Gespräch aufgenommen habe, aber Sie können fortfahren:
Verband - Ein Hund oder eine Katze kann hat einen Kragen. Der Kragen ist aber auch ein eigenständiges Objekt. Sie können den Hund verschenken, aber das Halsband behalten.
Aggregation - Ein Fisch kann zu einer Schule gehören . Wenn die Schule von einem Wal verschluckt wird, wird die Schule zusammen mit allen Fischen darin zerstört.
Vererbungsketten - Hund ist ein Säugetier ist ein Vertibrat ist ein Tier ist eine Lebensform. (Und weisen Sie darauf hin, dass Computersysteme auch so komplex sein können.)
Binden Sie Ihr Publikum ein
Dies sind alles schwierige Konzepte, und Sie werden wahrscheinlich viele glasige Blicke bekommen, wenn Sie die Leute nicht aktiv einbeziehen und reden.
Listen Sie beispielsweise keine Hundeattribute und -methoden selbst auf, sondern fordern Sie die Gruppe zur Eingabe auf. (Die Menschen sind fest verdrahtet, um sich für Tiere zu interessieren, das hilft.)
quelle
LEGO
Holen Sie sich etwas Lego und bauen Sie ein Auto (Basisklasse)
Dann haben Sie das gleiche Auto mit Lichtern (zusätzliche Funktionalität)
Dann das gleiche Auto mit großen Rädern (Overrides)
Dann holen Sie sich ein Motorrad (andere Basisklasse)
Dann holen Sie sich ein Auto mit den Reifen von zwei Rädern und einem Licht. lass es schrecklich aussehen. (versuchen, die Motorradfunktionalität in ein bestehendes System zu integrieren)
quelle