


javascript - Wie antworte ich elegant auf „Was ist objektorientiert'?
Ich habe festgestellt, dass viele Interviewer diese Frage gerne stellen (ich bin Student), aber jedes Mal habe ich das Gefühl, dass meine Antwort auf diese Frage unbefriedigend ist.
Meine Antwort lautet normalerweise
Seine Designmerkmale sind: Vererbung, Kapselung, Polymorphismus
Von konkret bis abstrakt. Eigenschaften werden zu Variablen und Verhaltensweisen werden zu Methoden
Der Interviewer scheint jedoch nicht sehr zufrieden zu sein. Ich frage mich, ob es relativ elegante Antworten von verschiedenen Experten gibt.
Antwortinhalt:
Ich habe festgestellt, dass viele Interviewer diese Frage gerne stellen (ich bin Student), aber jedes Mal habe ich das Gefühl, dass meine Antwort auf diese Frage unbefriedigend ist.
Meine Antwort lautet normalerweise
Seine Designmerkmale sind: Vererbung, Kapselung, Polymorphismus
Von konkret bis abstrakt. Eigenschaften werden zu Variablen und Verhaltensweisen werden zu Methoden
Der Interviewer scheint jedoch nicht sehr zufrieden zu sein. Ich frage mich, ob es relativ elegante Antworten von verschiedenen Experten gibt.
Die erste Antwort ist ein Programmierparadigma.
Beschreiben Sie dann die drei von Ihnen genannten Funktionen ausführlich, zum Beispiel:
Vererbung: Unterklassen können von der übergeordneten Klasse bereitgestellte Variablen und Methoden wiederverwenden
Kapselung: Eine Reihe von Details abschirmen. Sie müssen die Existenz dieser Methode nur kennen, wenn Sie extern aufrufen
-
Polymorphismus: Die Methoden der übergeordneten Klasse können nach der Vererbung durch die Unterklasse auf unterschiedliche Weise implementiert werden;
Dann können Sie über die Vor- und Nachteile der Objektorientierung sprechen. Dann gibt es keine absoluten Vor- und Nachteile einer Sache und es ist ein Vergleich erforderlich. Deshalb muss man über
sprechen. Ich bin zurück und habe meinen Artikel verloren
Ich habe gesehen, dass die Frage von lz abgelehnt wurde. Ich habe sie in der Community überprüft und festgestellt, dass es tatsächlich relevante Antworten gibt. Mein Artikel ist eine kleine Ergänzung. Wenn Sie Fragen haben, weisen Sie diese bitte darauf hin.
Objektorientiertes Denken
Lassen Sie mich vor einiger Zeit eine sehr einfache Funktion hinzufügen.
Es ist zwar eine sehr einfache Funktion, aber die Like-Funktion ist nicht auf eine bestimmte Zeit beschränkt Kommentare, Sie können Artikel, Fragen usw. mit „Gefällt mir“ markieren, und „Gefällt mir“-Angaben können eine Reihe von Ereignissen auslösen (Benachrichtigung relevanter Benutzer usw.). Zunächst dachte ich an drei Schreibweisen
点赞
<code>// 1.文章被用户点赞 $article->votedBy($user); // 2.用户给某篇文章点赞 $user->voteArticle($article); // 3.用户伸出大拇指给某篇文章点赞 $user->thumbUp()->voteToArticle($article); //$user->thumbUp()->voteToDiscuss($discuss);</code>
Das ist wirklich eine interessante Frage, haha. Natürlich wird jeder ein anderes Verständnis haben. Schließlich wird auch das Konzept der Objektorientierung gehypt.
Mein Verständnis umfasst zwei Aspekte:
- Eine davon ist objektorientiertes Design
-
Als das objektorientierte Konzept populär war, sprach man oft über die Wiederverwendung von Software, und Vererbung war eine direkte Manifestation der Wiederverwendung von Software. Später entdeckten die Leute jedoch, dass Komposition anstelle von Vererbung verwendet werden sollte, und dann wurde schnittstellenorientierte Programmierung populär.
Ich bin ein bisschen weit gegangen, also lasst uns hier aufhören.
Alles ist ein Objekt.
objektorientiert
Alles ist Objekt
Verwenden Sie unbedingt Beispiele
Zum Beispiel Tiere – „Furu-Tiere – Menschen“, Löwen, Tiger
Fügen Sie beispielsweise Polymorphismus hinzu, er heißt
Vererbung, wie Furu-Tiere lebendgebärend usw.
Bei der Implementierung eines Projekts müssen Sie das Geschäft in Code abstrahieren. Dieser Abstraktionsprozess ist das Programmierparadigma, und objektorientiert ist eines davon. Ähnliche umfassen die prozessorientierte und funktionale Programmierung.
Objektorientierte Funktionen sind 继承
, 多态
, 封装
.
Dann kann der Interviewer beginnen, 继承
, 多态
, 封装
zu fragen.
Perfekt! ~~~
Es wäre besser, wenn Sie wissen, was prozessorientierte und funktionale Programmierung ist.
In sich geschlossen, wenn er es nicht versteht, können Sie einfach gehen. Dieser Interviewer ist zu gut!
JS sagte: Alles ist ein Objekt, und Objekte sind auch Objekte – nichts Falsches
Ja, alles ist ein Objekt
Ich erinnere mich, dass ich eine Antwort auf zhihu gelesen habe. Sein Verständnis ist, dass (in der Praxis) die Wiederverwendung von Code das Wichtigste ist.
Kapselung: Sie können die gekapselten Codeblöcke direkt verwenden, was einer Wiederverwendung entspricht.
Vererbung: Vorhandene Attribute verwenden, das ist Wiederverwendung.
Polymorphismus: unterschiedliche Details, erfordert aber im Grunde immer noch eine erste Wiederverwendung.
Ohne auf fortgeschrittene Programmierung, Paradigmen und andere theoretische Dinge einzugehen, besteht der unmittelbarste Vorteil und die Erfahrung beim Schreiben von Code selbst darin, dass der Code aufgrund der häufigeren Wiederverwendung prägnanter wird.
Stellen Sie sich Ihrem Partner (allgemein bekannt als Freund/Freundin) gegenüber, nehmen Sie eine elegante Haltung ein und sagen Sie ihm/ihr dann liebevoll: „Schauen Sie mich an ...“ Dies bedeutet, dass Sie Ihrem Partner anmutig gegenüberstehen
Verpackungsdaten und damit verbundene Verhaltensweisen
Interessante Frage. Ich bin auch Student und möchte etwas von meinem eigenen Verständnis mitteilen.
Ein großartiges Merkmal der Objektorientierung ist, dass sie Daten und Verhalten (Operationen auf Daten) gleichzeitig kombiniert Es ähnelt eher der Betriebslogik der realen Welt.
Warum ich so denke, basiert auf dem Vergleich mit traditionellen Methoden (prozessorientiert usw.).
Zum Beispiel ist die Verarbeitung von Daten und Verhalten in der C-Sprache tatsächlich etwas getrennt und schenkt dem Verhalten mehr Aufmerksamkeit. Es gibt darin kein Konzept namens „Objekt“, sondern eine Welt voller Aktionen (Funktionen). Hauptsächlich rufen Funktionen Funktionen auf, und die Ergebnisse werden von Anfang bis Ende angegeben ... Das Wichtigste auf dieser Welt sind verschiedene Aktionen.
Das „Objekt“ von C++ ähnelt insbesondere einer Sache, beispielsweise einer Person. Seine Welt ist eine Welt voller Objekte. Hauptsächlich die Beziehungen zwischen Objekten (Menschen und Objekte, Menschen und Menschen usw.), diese Beziehungen oder Kollisionen führen zum Endergebnis ... Die wichtigsten Dinge auf dieser Welt sind verschiedene Objekte.
Die Objekte selbst tragen Daten und Funktionen; nur die Beziehung zwischen Objekten regt die Welt an. An diesen beiden Punkten ähnelt die objektorientierte Programmierung eher der realen Welt.
Die oben genannten „Vererbung, Kapselung, Polymorphismus“ und andere Merkmale können auch zur Simulation der realen Welt verwendet werden, um sie besser zu verstehen. Lassen Sie mich Ihnen nur einige Beispiele nennen...
Vererbung: Bücher & Lehrbücher & Computerlehrbücher – das ist die Vererbungsbeziehung in der realen Welt.
Kapselung: Mobiltelefon – es ist gekapselt, und wenn Sie es verwenden, müssen Sie die Schaltlogik im Inneren nicht kennen.
Polymorphisch: People.Look (Schönheit) und People.Look (starkes Licht) – die Parametertypen sind unterschiedlich und auch die Ausführung ist unterschiedlich.
Die Vorteile der Objektorientierung sind ebenfalls leicht zu verstehen. Die eine besteht darin, die Verständlichkeit zu verbessern, da Objekte gemäß den Regeln des menschlichen Weltverständnisses dargestellt werden und der gängigen Denkweise entsprechen. Die zweite besteht darin, die Entwicklung und Wartung des Systems zu einem großen Teil zu erleichtern gleichbedeutend mit einem neuen Verständnis von Objektdaten und -funktionen. Ändern Sie einige Dinge basierend auf dem Original.
Bitte kritisieren und korrigieren Sie mich, wenn ich etwas Falsches sage...!
Es kann nicht ausgeschlossen werden, dass einige Interviewer selbst sehr dumm sind. Das ist ein so großes verdammtes Thema, dass wir es nicht beenden können, selbst wenn wir tagelang zusammensitzen und reden
Scrollen Sie weniger auf Zhihu und schreiben Sie mehr Code
Alles ist ein Objekt.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

In Bezug auf das Problem der Entfernung des Python -Dolmetschers, das mit Linux -Systemen ausgestattet ist, werden viele Linux -Verteilungen den Python -Dolmetscher bei der Installation vorinstallieren, und verwendet den Paketmanager nicht ...

Lösung für die Erkennung von Pylanztypen bei der Verwendung des benutzerdefinierten Dekorators in der Python -Programmierung ist Decorator ein leistungsstarkes Werkzeug, mit dem Zeilen hinzugefügt werden können ...

Über Pythonasyncio ...

Verwenden Sie Python im Linux -Terminal ...

Laden Sie die Gurkendatei in Python 3.6 Umgebungsfehler: ModulenotFoundError: Nomodulenamed ...

Senden Sie HTTP/2 mit der HTTPX -Bibliothek von Python ...

Kompatibilitätsprobleme zwischen asynchronen Python -Bibliotheken in Python, asynchrones Programmieren ist zum Prozess der hohen Parallelität und der I/O geworden ...

Das Problem und die Lösung des Kinderprozesses werden weiterhin ausgeführt, wenn Signale zum Töten des übergeordneten Prozesses verwendet werden. In der Python -Programmierung, nachdem er den übergeordneten Prozess durch Signale getötet hatte, ist der Kinderprozess immer noch ...
