Nella codifica, quali sono le differenze tra metodi e funzioni

Pubblicato: 2018-09-21

Terminologia nella codifica

Nella programmazione, ci sono molti termini diversi usati per descrivere la stessa cosa esatta e ci sono anche alcuni termini che sembrano riferirsi alla stessa cosa ma in realtà non lo fanno. Per renderlo ancora più confuso. Alcuni termini vengono usati in modo diverso a seconda del tipo di lingua di cui si parla o anche quando si passa da una lingua all'altra dello stesso tipo. Pertanto, alcuni termini come "metodo", "funzione", "interfaccia" o "classe astratta" possono creare molta confusione per alcune persone poiché possono significare una cosa in un contesto ma una cosa completamente diversa in un altro.

Panoramica dei metodi OOP

Un metodo è essenzialmente una procedura passo passo che viene attuata su un oggetto designato. I metodi vengono utilizzati solo nei linguaggi di programmazione orientati agli oggetti come C++. In sostanza, un metodo può alterare le caratteristiche dell'oggetto che viene passato attraverso il metodo, oppure il metodo può eseguire una determinata procedura in base alle caratteristiche preesistenti dell'oggetto passato attraverso di esso. A volte, un metodo può persino eseguire codice che non influisce sull'oggetto passato attraverso di esso o viene modificato dalle caratteristiche già esistenti dell'oggetto. Ma questo è molto meno comune e non è un modo promosso di gestire i metodi.

Leggi: quale framework JavaScript scegliere

Funzioni nella codificazione procedurale

Una funzione, d'altra parte, è un termine molto più generico che si riferisce a una procedura che accetta un numero di input e restituisce un certo numero di valori. In modo confuso, una funzione e un metodo suonano come se farebbero la stessa cosa o si riferirebbero allo stesso tipo di procedura durante la programmazione, ma non lo fanno. Le funzioni non sono associate agli oggetti e sono utilizzate praticamente in tutti i linguaggi di alto livello che non sono orientati agli oggetti. I metodi d'altra parte sono associati solo agli oggetti e il termine è usato solo quando si ha a che fare con oggetti o quando una procedura è all'interno di una classe. Pertanto, le funzioni restituiscono valori in base agli input forniti, mentre i metodi alterano le caratteristiche di un oggetto o restituiscono valori in base alle caratteristiche preesistenti dell'oggetto.

Interfacce di codifica e classi astratte

Simile alla confusione tra una funzione e un metodo. C'è molta confusione tra interfacce e classi astratte. Tuttavia, a differenza di funzioni e metodi, le interfacce e le classi astratte hanno molto in comune e le loro caratteristiche sono facili da confondere. Il modo più semplice per differenziare i due è capire che le interfacce sono presenti solo nei linguaggi di programmazione orientati agli oggetti. Mentre le classi astratte sono presenti in quasi tutte le lingue di alto livello.

Interfacce in profondità

Un'interfaccia è essenzialmente una base che crei che tiene conto di tutte le somiglianze tra le classi. Quindi, supponiamo di voler creare oggetti diversi ma che siano tutti animali. Quindi, umani, scimmie e scimpanzé. Ovviamente, questi tre animali hanno molto in comune e sarebbe intelligente definire tutte queste somiglianze, così puoi assicurarti che siano tutti implementati in ogni classe. Ad esempio, ognuno ha una testa, quattro arti, una bocca, naso, lingua, ecc.

Quindi, nell'interfaccia, definisci queste caratteristiche e perché le hai definite nell'interfaccia. Quando ogni classe implementa l'interfaccia, deve definire e inizializzare queste caratteristiche attraverso i metodi definiti nell'interfaccia. In caso contrario, il codice non verrà eseguito. Il motivo principale per cui useresti un'interfaccia invece di una classe astratta è se ogni animale ha le stesse caratteristiche. Ma ogni animale li implementa in modo diverso. Ad esempio, tutti gli scimpanzé. Gli esseri umani e le scimmie hanno il naso, ma la larghezza, la lunghezza e l'uso possono essere leggermente diversi. Pertanto, queste differenze sono definite nelle singole classi. Ma il fatto che abbiano il naso è definito nell'interfaccia.

Leggi - Motivi per cui Laravel è il miglior framework PHP nel 2018

Come utilizzare le classi astratte

Una classe astratta è esattamente come un'interfaccia. Tuttavia, a differenza di un'interfaccia, metodi e funzioni possono essere effettivamente definiti e inizializzati, ma non è necessario che lo siano. Inoltre, invece di classi che implementano classi astratte, fanno della classe astratta la superclasse. Questo è in realtà uno dei principali svantaggi per le classi astratte rispetto alle interfacce, poiché una classe può implementare tutte le interfacce che desidera, ma possono avere solo una superclasse, il che significa che una classe può utilizzare solo una classe astratta ma più interfacce.

Le lezioni astratte sono fantastiche. Tuttavia, se ci sono alcune caratteristiche identiche che hanno modalità identiche di essere implementate. Ma se ce ne sono anche alcuni che hanno implementazioni diverse tra gli oggetti. Ad esempio, se avevi due classi, uomini e donne, e volevi definire somiglianze tra i due, potrebbe essere meglio usare una classe astratta. Come mai? Perché alcune caratteristiche tra i sessi sono identiche e sono implementate esattamente allo stesso modo. Ad esempio, le bocche hanno all'incirca le stesse dimensioni e servono allo stesso scopo; gli occhi hanno all'incirca le stesse dimensioni e funzionano allo stesso modo tra i sessi, ecc.

Quindi, per queste caratteristiche, le funzioni oi metodi che le definiscono possono essere inizializzate nella classe astratta. Tuttavia, alcune caratteristiche, come i fianchi o le sopracciglia, sono presenti su entrambi i sessi. Ma queste caratteristiche sono molto diverse tra i due. Pertanto, la classe astratta non inizializzerà i metodi o le funzioni che definiscono queste caratteristiche. E lo lascerò alle sottoclassi.

Sommario

Si spera che queste spiegazioni non fossero troppo confuse o prolisse. Se sei nuovo nella programmazione, non preoccuparti se sei ancora confuso. Ci sono molte risorse accessibili che puoi usare per comprendere i fondamenti della programmazione e le sottili differenze tra alcuni termini.

È molto importante ricordare che se ti piace diventare un programmatore professionista. Apprendere sia i concetti procedurali che quelli di programmazione orientata agli oggetti (OOP) sono un must. Infatti. Molti ingegneri del software utilizzano Unified Model Language per mappare i requisiti del progetto o dell'applicazione su oggetti e diagrammi prima di eseguire la codifica OOP. Ci sono molte risorse online per l'apprendimento dell'ingegneria del software. Per adolescenti e studenti delle scuole superiori, High School Technology Services offre una varietà di formazione pratica. Per adulti e professionisti, l'istituto Coding Bootcamps offre molti corsi di programmazione di base e avanzati con focus sia sulla codifica procedurale che su quella OOP.

Informazioni sull'autore

Matt Zand è un programmatore, uomo d'affari, consulente IT e scrittore. È il fondatore e proprietario del Gruppo WEG2G. È anche il fondatore di DC Web Makers. I suoi hobby sono l'escursionismo, la bicicletta, le attività all'aperto, i viaggi e l'alpinismo.