Demonstrieren Sie Nicht-Programmierern objektorientierte Prinzipien mit physischen Requisiten [geschlossen]


8

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?


1
Ich denke, dass Google viele Beispiele zurückgeben wird.
qwerty_so

2
Hallo Adam, versteh mich nicht falsch, aber dies ist eine typische Art von Frage, die entweder zu weit gefasst für diese Site ist oder Verweise auf Ressourcen von Drittanbietern benötigt, die ebenfalls nicht zum Thema gehören. Es fällt auch unter die Kategorie "Bildungsberatung ist nicht zum Thema". Ich empfehle, sich selbst zu löschen, bevor Sie unzählige Downvotes von der Community erhalten.
Doc Brown

3
Beachten Sie, dass Sie nicht "is-a" im Sinne von "is-an-instance-of" und "is-a" im Sinne von "erbt-von" verwechseln. Klassen sind Konzepte von Dingen, aber die Objekte um Sie herum im Schulungsraum sind Instanzen von Klassen.
Simon B

1
Bitte lassen Sie Ihre anderen Abteilungen nicht anfangen, Code für das Unternehmen zu schreiben.
Gardenhead

1
Übrigens habe ich nur bemerkt, dass niemand erklärt hat, was eine SCHNITTSTELLE ist. Um ehrlich zu sein, denke ich, dass es besser wäre, die Vererbung zu löschen und nur über die Schnittstelle zu sprechen. Da die Schnittstelle direkt auf Funktionen abgebildet werden kann, ist dies einfacher.
Walfrat

Antworten:


11

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:

  • Eine Reihe von iPhones verschiedener Versionen, seit dem ersten iPhone, über iPhone 6, 6+ usw.

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.

Geben Sie hier die Bildbeschreibung ein


Polyporphismus:

Requisiten:

  • Eine Reihe elektrischer Haushaltsgeräte wie eine Kaffeemaschine, ein Fernseher, ein Mixer, ein Radio und eine Schreibtischlampe. Auch eine Steckdose.

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.

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein


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.

Geben Sie hier die Bildbeschreibung ein

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.

Geben Sie hier die Bildbeschreibung ein


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.


3
Für die Vererbung mag ich eine andere Smartphone-Analogie: reine Android-Telefone gegen Android-Telefone mit Hersteller-Dingen an der Spitze. Letztere erben eindeutig von der ersten. Ihre Smartphoneserie ähnelt eher verschiedenen Versionen eines Produkts, weniger der Vererbung.
RemcoGerlich

@RemcoGerlich OP fragte nach physikalischen Beispielen . Sie sprechen von Software (Android OS). Außerdem sind ein LG-Telefon und ein HTC-Telefon nicht verwandte, unterschiedliche Implementierungen von etwas, was Biologen als konvergente Evolution bezeichnen. Sie verwenden nur eine Variante des gleichen Betriebssystems (wieder Software). Das iPhone-Beispiel handelt von physischen Dingen, die schrittweise über die Blaupause der vorherigen Generation aufgebaut wurden, anstatt jedes Mal alles von Grund auf neu zu erfinden.
Tulains Córdova

2
Das ist fantastisch. Ich muss mich an diesen Beitrag erinnern, wenn ich das nächste Mal erklären muss :)
Quentin

Ich denke nicht, dass die Telefone überhaupt hilfreich sind. Sie repräsentieren vor allem Versionen / Generationen. Und für diesen Zweck sind sie überhaupt zu nerdig.
Martin Maat

@ TulainsCórdova: Konvergente Evolution findet separat statt , aber HTC und LG sind sich sehr bewusst, was der andere tut und was ihren Prozess beeinflusst. Zweitens haben Sie Recht, dass das native Betriebssystem / Hersteller-Betriebssystem-Beispiel nicht physisch ist, aber es ist ein besseres Beispiel für Vererbung. Ihr IPhone-Beispiel scheint zu implizieren, dass jedes Telefon von seinem Vorgänger erbt, aber dies wäre keine gute Möglichkeit, dieses Verhalten zu modellieren. Wenn nicht das OS-Beispiel verwendet wird, schlage ich vor, ein besseres Vererbungsbeispiel zu finden, z. B. wie 3 verschiedene Personen (Manager, Hausmeister, Lehrer) alle dieselbe zugrunde liegende Person sind .
Flater

3

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).


Gute Idee und es sieht sehr nach Xtreme Programming CRC-Karten "Spiel" aus .
Tulains Córdova

1

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.


1

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.


+1 Für den Hinweis, dass Tieranalogien schlechte Beispiele sind.
Tulains Córdova

1

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 :

  1. 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 “.

  2. 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.)


Beachten Sie sicher über die Komposition, ich würde besser für so etwas wie einen Computer besteht aus CPU, .... Übrigens haben Sie vergessen, starke (Komposition) und schwache Aggregation zu unterscheiden. Wenn ich sterbe, stirbt auch meine Hand, aber nicht mein Computer. Override: mehr etwas in der Reihe: nicht Hund greift auf die gleiche Weise an.
Walfrat

1
Tierbeispiele zur Erklärung von OO-Konzepten sind nicht die beste Wahl. Zu undicht und jugendlich. Außerdem möchte OP physische Requisiten als didaktische Ressourcen verwenden.
Tulains Córdova

1
@ TulainsCórdova, Ihre eigene Antwort weist darauf hin, wie erfolglos Sie waren, nicht-technischen Leuten die Grundlagen von OO beizubringen. Tiere beschäftigen die Menschen mehr und die Biologie ist weder "undicht" noch jugendlich. In meiner Antwort werden auch Requisiten im Titel erwähnt.
Tim Grant

@TimGrant Ich habe Nicht-Programmierern OOP noch nie beigebracht oder erklärt, aber ich habe gesehen, wie andere anhand von Tierbeispielen versagten. Der Wissenschaftszweig der Biologie ist weder undicht noch jugendlich. Ich habe darüber gesprochen, OOP anhand von Tierbeispielen zu erklären. Es ist so banal. Keine Straftat beabsichtigt.
Tulains Córdova

@ TulainsCórdova, du sagst undicht, jugendlich und jetzt "banal"? Triteness würde erfordern, dass das Publikum es vorher gehört hat, und dieses Publikum hat es nicht. Haben Sie tatsächlich Einblicke zu bieten oder werfen Sie nur Schatten auf eine konkurrierende Antwort?
Tim Grant

-3

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)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.