En codificación, ¿cuáles son las diferencias entre métodos y funciones?
Publicado: 2018-09-21Terminología en codificación
En programación, hay muchos términos diferentes que se usan para describir exactamente lo mismo y también hay algunos términos que parecen referirse a lo mismo pero en realidad no lo hacen. Para hacerlo aún más confuso. Algunos términos se usan de manera diferente según el tipo de idioma del que se esté hablando o incluso cuando se pasa de un idioma a otro del mismo tipo. Por lo tanto, algunos términos como "método", "función", "interfaz" o "clase abstracta" pueden ser muy confusos para algunas personas, ya que pueden significar una cosa en un contexto pero una cosa completamente diferente en otro.
Descripción general de los métodos de programación orientada a objetos
Un método es esencialmente un procedimiento paso a paso que se aplica a un objeto designado. Los métodos solo se usan en lenguajes de programación orientados a objetos como C++. Esencialmente, un método puede alterar las características del objeto que se pasa a través del método, o el método puede realizar un determinado procedimiento en función de las características preexistentes del objeto que se pasa a través de él. A veces, un método puede incluso ejecutarse a través de código que no afecta al objeto que pasa a través de él o que es modificado por las características ya existentes del objeto. Pero esto es mucho menos común y no es una forma promocionada de manejar métodos.
Leer: qué marco de JavaScript elegir
Funciones en la codificación de procedimientos
Una función, por otro lado, es un término mucho más genérico que se refiere a un procedimiento que toma una cantidad de entradas y devuelve una cantidad de valores. De manera confusa, una función y un método suenan como si hicieran lo mismo o se refirieran al mismo tipo de procedimiento al programar, pero no es así. Las funciones no están asociadas con objetos y se usan básicamente en todos los lenguajes de alto nivel que no están orientados a objetos. Los métodos, por otro lado, solo están asociados con objetos y el término solo se usa cuando se trata de objetos o cuando un procedimiento está dentro de una clase. Por lo tanto, las funciones devuelven valores en función de las entradas proporcionadas, mientras que los métodos alteran las características de un objeto o devuelven valores en función de las características preexistentes del objeto.
Codificación de interfaces y clases abstractas
Similar a la confusión entre una función y un método. Hay mucha confusión entre interfaces y clases abstractas. Sin embargo, a diferencia de las funciones y los métodos, las interfaces y las clases abstractas tienen mucho en común y sus características son fáciles de confundir. La forma más fácil de diferenciar los dos es comprender que las interfaces solo están presentes en los lenguajes de programación orientados a objetos. Mientras que las clases abstractas están presentes en casi todos los lenguajes de alto nivel.
Interfaces en profundidad
Una interfaz es esencialmente una base que creas que da cuenta de todas las similitudes entre las clases. Entonces, digamos que quieres crear diferentes objetos pero que todos son animales. Entonces, humanos, simios y chimpancés. Obviamente, estos tres animales tienen mucho en común, y sería inteligente definir todas estas similitudes, para que pueda asegurarse de que se implementen en todas las clases. Por ejemplo, cada uno tiene cabeza, cuatro extremidades, boca, nariz, lengua, etc.
Entonces, en la interfaz, usted define estas características y porque las definió en la interfaz. Cuando cada clase implementa la interfaz, debe definir e inicializar estas características a través de los métodos definidos en la interfaz. De lo contrario, el código no se ejecutará. La razón principal por la que usaría una interfaz en lugar de una clase abstracta es si cada animal tiene las mismas características. Pero cada animal los implementa de manera diferente. Por ejemplo, todos los chimpancés. Los humanos y los simios tienen narices, pero el ancho, la longitud y el uso de ellas pueden ser ligeramente diferentes. Por lo tanto, estas diferencias se definen en las clases individuales. Pero el hecho de que tengan narices se define en la interfaz.

Leer: Razones por las que Laravel es el mejor marco PHP en 2018
Cómo usar clases abstractas
Una clase abstracta es exactamente como una interfaz. Sin embargo, a diferencia de una interfaz, los métodos y las funciones pueden definirse e inicializarse, pero no es necesario. Además de eso, en lugar de que las clases implementen clases abstractas, hacen que la clase abstracta sea la superclase. En realidad, esta es una gran desventaja para las clases abstractas en comparación con las interfaces, ya que una clase puede implementar tantas interfaces como quiera, pero solo puede tener una superclase, lo que significa que una clase solo puede utilizar una clase abstracta pero múltiples interfaces.
Las clases abstractas son geniales. Sin embargo si hay algunas de idénticas características que tienen idénticas formas de ser implementadas. Pero si también hay algunos que tienen diferentes implementaciones entre objetos. Por ejemplo, si tuviera dos clases, hombres y mujeres, y quisiera definir similitudes entre las dos, puede ser mejor usar una clase abstracta. ¿Por qué? Porque ciertas características entre los géneros son idénticas y se implementan exactamente de la misma manera. Por ejemplo, las bocas tienen aproximadamente el mismo tamaño y sirven para el mismo propósito; los ojos son aproximadamente del mismo tamaño y funcionan de la misma manera entre los géneros, etc.
Entonces, para estas características, las funciones o métodos que las definen pueden inicializarse en la clase abstracta. Sin embargo, ciertas características, como las caderas o las cejas, están presentes en ambos sexos. Pero estas características son muy diferentes entre los dos. Por lo tanto, la clase abstracta no inicializará los métodos o funciones que definen estas características. Y dejaré eso a las subclases.
Resumen
Esperemos que estas explicaciones no hayan sido demasiado confusas o prolijas. Si eres nuevo en la programación, no te preocupes si todavía estás confundido. Hay muchos recursos accesibles que puede usar para comprender los fundamentos de la programación y las sutiles diferencias entre algunos términos.
Es muy importante mencionar que si te gusta convertirte en un programador profesional. Aprender conceptos de Programación Orientada a Objetos (POO) y procedimentales es imprescindible. En efecto. Muchos ingenieros de software utilizan el Lenguaje de modelo unificado para asignar requisitos de proyectos o aplicaciones a objetos y diagramas antes de realizar la codificación OOP. Hay muchos recursos en línea para aprender ingeniería de software. Para adolescentes y estudiantes de secundaria, High School Technology Services ofrece una variedad de capacitación práctica. Para adultos y profesionales, el instituto Coding Bootcamps ofrece muchas clases de programación básicas y avanzadas con enfoques en la codificación de procedimientos y OOP.
sobre el autor
Matt Zand es programador, hombre de negocios, consultor de TI y escritor. Es el fundador y propietario del Grupo WEG2G. También es el fundador de DC Web Makers. Sus pasatiempos son el senderismo, andar en bicicleta, actividades al aire libre, viajar y escalar montañas.