コーディングでは、メソッドと関数の違いは何ですか

公開: 2018-09-21

コーディングの用語

プログラミングでは、まったく同じものを説明するために使用されるさまざまな用語があります。また、同じものを参照しているように見えても実際にはそうではない用語もあります。 それをさらに混乱させるため。 一部の用語は、話している言語の種類に応じて、またはある言語から同じタイプの別の言語に移動する場合でも、使用方法が異なります。 したがって、「メソッド」、「関数」、「インターフェース」、「抽象クラス」などの用語は、あるコンテキストでは1つのことを意味し、別のコンテキストではまったく異なることを意味する可能性があるため、非常に混乱する可能性があります。

OOPメソッドの概要

メソッドは、基本的に、指定されたオブジェクトに対して実行される段階的な手順です。 メソッドは、C++などのオブジェクト指向プログラミング言語でのみ使用されます。 基本的に、メソッドは、メソッドを通過するオブジェクトの特性を変更するか、メソッドが通過するオブジェクトの既存の特性に基づいて特定の手順を実行することができます。 場合によっては、メソッドは、渡されたオブジェクトに影響を与えたり、オブジェクトの既存の特性によって変更されたりしないコードを実行することさえできます。 しかし、これはあまり一般的ではなく、メソッドを処理するための促進された方法ではありません。

読む–どのJavaScriptフレームワークを選択するか

手続き型コーディングの機能

一方、関数は、多くの入力を受け取り、いくつかの値を返すプロシージャを指す、はるかに一般的な用語です。 紛らわしいことに、関数とメソッドは、プログラミング時に同じことをしたり、同じ種類のプロシージャを参照したりするように聞こえますが、そうではありません。 関数はオブジェクトに関連付けられておらず、基本的にオブジェクト指向ではないすべての高級言語で使用されます。 一方、メソッドはオブジェクトにのみ関連付けられており、この用語は、オブジェクトを処理する場合、またはプロシージャがクラス内にある場合にのみ使用されます。 したがって、関数は指定された入力に基づいて値を返しますが、メソッドはオブジェクトの特性を変更するか、オブジェクトの既存の特性に基づいて値を返します。

コーディングインターフェースと抽象クラス

関数とメソッドの間の混乱に似ています。 インターフェイスと抽象クラスの間には多くの混乱があります。 ただし、関数やメソッドとは異なり、インターフェイスと抽象クラスには多くの共通点があり、それらの特性は簡単に混同されます。 この2つを区別する最も簡単な方法は、インターフェースがオブジェクト指向プログラミング言語にのみ存在することを理解することです。 一方、抽象クラスはほぼすべての高級言語に存在します。

詳細なインターフェース

インターフェイスは基本的に、クラス間のすべての類似点を説明するために作成するベースです。 したがって、さまざまなオブジェクトを作成したいが、それらはすべて動物であるとしましょう。 だから、人間、類人猿、そしてチンパンジー。 明らかに、これら3つの動物には多くの共通点があり、これらの類似点をすべて定義するのが賢明なので、各クラス全体ですべてが実装されていることを確認できます。 たとえば、それぞれに頭、4本の手足、口、鼻、舌などがあります。

したがって、インターフェイスでは、これらの特性を定義します。これは、インターフェイスで定義したためです。 各クラスがインターフェイスを実装する場合、インターフェイスで定義されたメソッドを使用してこれらの特性を定義および初期化する必要があります。 そうしないと、コードは実行されません。 抽象クラスの代わりにインターフェースを使用する主な理由は、各動物が同じ特性を持っているかどうかです。 しかし、それぞれの動物はそれらを異なって実装します。 たとえば、すべてのチンパンジー。 人間と類人猿には鼻がありますが、幅、長さ、用途はすべてわずかに異なる場合があります。 したがって、これらの違いは個々のクラスで定義されます。 しかし、彼らが鼻を持っているという事実は、インターフェースで定義されています。

読む–Laravelが2018年に最高のPHPフレームワークである理由

抽象クラスの使用方法

抽象クラスは、インターフェイスとまったく同じです。 ただし、インターフェイスとは異なり、メソッドと関数は実際に定義および初期化できますが、そうである必要はありません。 その上、抽象クラスを実装するクラスの代わりに、抽象クラスをスーパークラスにします。 これは、インターフェイスと比較した場合、実際には抽象クラスの大きな欠点です。クラスは必要な数のインターフェイスを実装できますが、スーパークラスは1つしか持てません。つまり、クラスは1つの抽象クラスしか利用できませんが、複数のインターフェイスを利用できます。

抽象クラスは素晴らしいです。 ただし、同じ実装方法を持つ同じ特性がいくつかある場合。 ただし、オブジェクト間で実装が異なるものもある場合。 たとえば、男性と女性の2つのクラスがあり、2つのクラスの類似点を定義したい場合は、抽象クラスを使用するのが最適な場合があります。 なんで? 性別間の特定の特性は同一であり、まったく同じ方法で実装されているためです。 たとえば、口はほぼ同じサイズで、同じ目的を果たします。 目はほぼ同じ大きさで、性別などで同じように機能します。

したがって、これらの特性については、それらを定義する関数またはメソッドを抽象クラスで初期化できます。 ただし、腰や眉毛などの特定の特性は、両方の性別に存在します。 しかし、これらの特性は2つの間で大きく異なります。 したがって、抽象クラスは、これらの特性を定義するメソッドまたは関数を初期化しません。 そしてそれをサブクラスに任せます。

概要

うまくいけば、これらの説明はあまり混乱したり、言葉になりすぎたりしませんでした。 プログラミングに不慣れな場合でも、混乱していても心配しないでください。 プログラミングの基礎といくつかの用語の微妙な違いを理解するために使用できるアクセス可能なリソースはたくさんあります。

あなたがプロのプログラマーになりたいのなら、それを言及することは非常に重要です。 手続き型プログラミングとオブジェクト指向プログラミング(OOP)の両方の概念を学ぶことは必須です。 それはそう。 多くのソフトウェアエンジニアは、OOPコーディングを行う前に、統一モデル言語を使用してプロジェクトまたはアプリケーションの要件をオブジェクトや図にマッピングします。 ソフトウェアエンジニアリングを学ぶためのオンラインリソースはたくさんあります。 10代の若者や高校生向けに、High SchoolTechnologyServicesではさまざまな実践的なトレーニングを提供しています。 大人と専門家のために、コーディングブートキャンプインスティテュートは、手続き型コーディングとOOPコーディングの両方に焦点を当てたプログラミングクラスを進めるための多くの基本を提供しています。

著者について

Matt Zandは、プログラマー、ビジネスマン、ITコンサルタント、およびライターです。 彼はWEG2Gグループの創設者であり所有者です。 彼はDCWebMakersの創設者でもあります。 彼の趣味は、ハイキング、サイクリング、アウトドアアクティビティ、旅行、登山です。