javascript - Wie antworte ich elegant auf „Was ist objektorientiert'?

WBOY
Freigeben: 2023-03-01 18:18:01
Original
1108 Leute haben es durchsucht

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
prozessorientierte Programmierideen

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

点赞

Am Ende habe ich die dritte Schreibweise verwendet. Sie werden wissen, wie Sie sie umsetzen, sobald Sie Ihren Daumen ausstrecken.
<code>// 1.文章被用户点赞
$article->votedBy($user);
// 2.用户给某篇文章点赞
$user->voteArticle($article);
// 3.用户伸出大拇指给某篇文章点赞
$user->thumbUp()->voteToArticle($article);
//$user->thumbUp()->voteToDiscuss($discuss);</code>
Nach dem Login kopieren

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
  • Eine davon ist die objektorientierte Programmierung.
  • Die Kernidee des objektorientierten Designs ist Modularität, während die Kernidee der objektorientierten Programmierung schnittstellenorientiert ist. Es gibt auch eine Verwandte namens objektbasierte Programmierung oder Prototypprogrammierung (JavaScript). ist eins). Daher erfordert die objektorientierte Programmierung im Allgemeinen Unterstützung auf Sprachebene, wie z. B. Kapselung, Vererbung und Polymorphismus, wie Sie oben erwähnt haben.

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.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!