Was sind Unterschiede zwischen Methoden und Funktionen beim Codieren?
Veröffentlicht: 2018-09-21Terminologie in der Codierung
In der Programmierung gibt es viele verschiedene Begriffe, die verwendet werden, um genau dasselbe zu beschreiben, und es gibt auch einige Begriffe, die sich scheinbar auf dasselbe beziehen, es aber nicht tun. Um es noch verwirrender zu machen. Einige Begriffe werden unterschiedlich verwendet, je nachdem, über welche Art von Sprache Sie sprechen, oder sogar wenn Sie von einer Sprache zu einer anderen Sprache wechseln, die vom gleichen Typ ist. Daher können einige Begriffe wie „Methode“, „Funktion“, „Schnittstelle“ oder „abstrakte Klasse“ für manche Menschen sehr verwirrend sein, da sie in einem Kontext etwas bedeuten können, in einem anderen jedoch etwas völlig anderes.
Überblick über OOP-Methoden
Eine Methode ist im Wesentlichen eine Schritt-für-Schritt-Prozedur, die auf ein bestimmtes Objekt angewendet wird. Methoden werden nur in objektorientierten Programmiersprachen wie C++ verwendet. Im Wesentlichen kann eine Methode entweder die Eigenschaften des Objekts ändern, das durch die Methode geleitet wird, oder die Methode kann eine bestimmte Prozedur basierend auf den bereits vorhandenen Eigenschaften des Objekts ausführen, das sie durchläuft. Manchmal kann eine Methode sogar Code durchlaufen, der weder das durchlaufene Objekt beeinflusst noch durch bereits vorhandene Eigenschaften des Objekts verändert wird. Dies ist jedoch viel seltener und keine geförderte Art des Umgangs mit Methoden.
Lesen – Welches JavaScript-Framework zu wählen ist
Funktionen in der prozeduralen Codierung
Eine Funktion hingegen ist ein viel allgemeinerer Begriff, der sich auf eine Prozedur bezieht, die eine Reihe von Eingaben entgegennimmt und eine Reihe von Werten zurückgibt. Verwirrenderweise klingen eine Funktion und eine Methode so, als würden sie beim Programmieren dasselbe tun oder sich auf dieselbe Art von Prozedur beziehen, aber sie tun es nicht. Funktionen sind nicht mit Objekten verknüpft und werden in praktisch jeder Hochsprache verwendet, die nicht objektorientiert ist. Methoden hingegen sind nur mit Objekten verbunden und der Begriff wird nur verwendet, wenn es um Objekte geht oder wenn eine Prozedur innerhalb einer Klasse ist. Funktionen geben also Werte basierend auf den gegebenen Eingaben zurück, während Methoden entweder die Eigenschaften eines Objekts ändern oder Werte basierend auf den bereits vorhandenen Eigenschaften des Objekts zurückgeben.
Codierungsschnittstellen und abstrakte Klassen
Ähnlich wie die Verwechslung zwischen einer Funktion und einer Methode. Es gibt viel Verwirrung zwischen Interfaces und abstrakten Klassen. Im Gegensatz zu Funktionen und Methoden haben Schnittstellen und abstrakte Klassen jedoch viele Gemeinsamkeiten, und ihre Eigenschaften können leicht verwechselt werden. Der einfachste Weg, die beiden zu unterscheiden, besteht darin, zu verstehen, dass Schnittstellen nur in objektorientierten Programmiersprachen vorhanden sind. Während abstrakte Klassen in fast allen Hochsprachen vorhanden sind.
Schnittstellen im Detail
Eine Schnittstelle ist im Wesentlichen eine von Ihnen erstellte Basis, die alle Ähnlichkeiten zwischen Klassen berücksichtigt. Angenommen, Sie möchten verschiedene Objekte erstellen, die jedoch alle Tiere sind. Also Menschen, Affen und Schimpansen. Offensichtlich haben diese drei Tiere viel gemeinsam, und es wäre klug, alle diese Ähnlichkeiten zu definieren, damit Sie sicherstellen können, dass sie alle in jeder Klasse implementiert werden. Zum Beispiel hat jeder einen Kopf, vier Gliedmaßen, einen Mund, eine Nase, eine Zunge usw.
In der Schnittstelle definieren Sie also diese Merkmale und weil Sie sie in der Schnittstelle definiert haben. Wenn jede Klasse die Schnittstelle implementiert, muss sie diese Merkmale durch die definierten Methoden in der Schnittstelle definieren und initialisieren. Andernfalls wird der Code nicht ausgeführt. Der Hauptgrund, warum Sie eine Schnittstelle anstelle einer abstrakten Klasse verwenden würden, ist, wenn jedes Tier die gleichen Eigenschaften hat. Aber jedes Tier setzt sie anders um. Zum Beispiel alle Schimpansen. Menschen und Affen haben Nasen, aber die Breite, Länge und Verwendung für sie können alle leicht unterschiedlich sein. Daher werden diese Unterschiede in den einzelnen Klassen definiert. Aber die Tatsache, dass sie Nasen haben, wird in der Schnittstelle definiert.
Lesen – Gründe, warum Laravel das beste PHP-Framework 2018 ist
Verwendung abstrakter Klassen
Eine abstrakte Klasse ist genau wie eine Schnittstelle. Im Gegensatz zu einer Schnittstelle können Methoden und Funktionen jedoch tatsächlich definiert und initialisiert werden, müssen es aber nicht. Darüber hinaus machen sie, anstatt abstrakte Klassen zu implementieren, die abstrakte Klasse zur Oberklasse. Dies ist tatsächlich ein großer Nachteil für abstrakte Klassen im Vergleich zu Schnittstellen, da eine Klasse beliebig viele Schnittstellen implementieren kann, aber nur eine Oberklasse haben kann, was bedeutet, dass eine Klasse nur eine abstrakte Klasse, aber mehrere Schnittstellen verwenden kann.
Abstrakte Klassen sind großartig. Wenn es jedoch einige identische Merkmale gibt, die auf identische Weise implementiert werden. Aber wenn es auch einige gibt, die objektübergreifend unterschiedliche Implementierungen haben. Wenn Sie beispielsweise zwei Klassen hatten, Männer und Frauen, und Ähnlichkeiten zwischen den beiden definieren wollten, ist es möglicherweise am besten, eine abstrakte Klasse zu verwenden. Wieso den? Denn gewisse Merkmale zwischen den Geschlechtern sind identisch und werden exakt gleich umgesetzt. Zum Beispiel sind die Münder ungefähr gleich groß und dienen demselben Zweck; die Augen sind etwa gleich groß und funktionieren bei den Geschlechtern gleich usw.
Für diese Merkmale können also die sie definierenden Funktionen oder Methoden in der abstrakten Klasse initialisiert werden. Bestimmte Merkmale wie die Hüften oder Augenbrauen sind jedoch bei beiden Geschlechtern vorhanden. Aber diese Eigenschaften sind sehr unterschiedlich zwischen den beiden. Daher wird die abstrakte Klasse die Methoden oder Funktionen, die diese Eigenschaften definieren, nicht initialisieren. Und das überlasse ich den Unterklassen.
Zusammenfassung
Hoffentlich waren diese Erklärungen nicht zu verwirrend oder langatmig. Wenn Sie neu in der Programmierung sind, machen Sie sich keine Sorgen, wenn Sie immer noch verwirrt sind. Es gibt viele zugängliche Ressourcen, die Sie verwenden können, um die Grundlagen der Programmierung und die subtilen Unterschiede zwischen einigen Begriffen zu verstehen.
Es ist sehr wichtig, dies zu erwähnen, wenn Sie ein professioneller Programmierer werden möchten. Das Erlernen von Konzepten sowohl der prozeduralen als auch der objektorientierten Programmierung (OOP) ist ein Muss. In der Tat. Viele Softwareingenieure verwenden Unified Model Language, um Projekt- oder Anwendungsanforderungen Objekten und Diagrammen zuzuordnen, bevor sie OOP-Codierung durchführen. Es gibt viele Online-Ressourcen zum Erlernen von Software-Engineering. Für Teenager und Gymnasiasten bietet High School Technology Services verschiedene praktische Schulungen an. Für Erwachsene und Profis bietet das Coding Bootcamps Institute viele grundlegende bis fortgeschrittene Programmierkurse mit Schwerpunkt auf prozeduraler und OOP-Codierung an.
Über den Autor
Matt Zand ist Programmierer, Geschäftsmann, IT-Berater und Autor. Er ist Gründer und Eigentümer der WEG2G-Gruppe. Er ist auch der Gründer von DC Web Makers. Seine Hobbys sind Wandern, Radfahren, Outdoor-Aktivitäten, Reisen und Bergsteigen.