¡Descubre Cómo Declarar y Usar Métodos en Programación Orientada a Objetos como un Experto!post-template-default single single-post postid-46 single-format-standard et_pb_button_helper_class et_fixed_nav et_show_nav et_secondary_nav_enabled et_primary_nav_dropdown_animation_fade et_secondary_nav_dropdown_animation_fade et_header_style_left et_pb_footer_columns4 et_cover_background et_pb_gutter et_pb_gutters3 et_right_sidebar et_divi_theme et-db
771 715 4434

La Programación Orientada a Objetos (POO) es un paradigma de programación, es decir, un modelo o un estilo de programación que nos da unas guías sobre cómo trabajar con él. Se basa en el concepto de clases y objetos. Este tipo de programación se utiliza para estructurar un programa de software en piezas simples y reutilizables de planos de código (clases) para crear instancias individuales de objetos.

En la POO, los objetos tienen atributos que representan sus características o propiedades, y métodos que definen las acciones que pueden realizar. Los métodos en la programación orientada a objetos son lo que en la programación estructurada o modular se les conoce como los procedimientos o funciones.

Todo el código que define un método se llama declaración de método. En programación, método se le llama a un bloque de código que tiene definido en su interior un conjunto de instrucciones, estas instrucciones realizan una determinada tarea. Cuando se necesita hacer uso de la función definida en el método simplemente se lo llama por su nombre.

Componentes de la Declaración de un Método

Para definir un método hay que indicar si tendrá o no parámetros de salida, es decir si el método produce un dato como resultado de su ejecución y en caso afirmativo indicar ese tipo de dato. Luego se debe definir un nombre de identificación, por convención debe comenzar con la primera letra en mayúscula, además de intentar que el nombre sea representativo de la función que desempeña. Luego debemos indicar si tiene o no parámetros de entrada, en caso afirmativo, para cada parámetro de entrada incluir el tipo de cada uno y el nombre con el que se conocerá dicho parámetro dentro del método. Finalmente dentro del método se insertan todas las instrucciones de código a ejecutar, estas instrucciones pueden incluir la llamada a otros métodos.

La sintaxis es el conjunto de reglas establecidas en un lenguaje para escribir el código. La siguiente tabla ilustra las propiedades básicas de un método, incluyendo su visibilidad, nombre, parámetros de entrada y salida, y el bloque de instrucciones:

Lea también: ¿Qué es el Acuse de Recibo de la Declaración?

Componente Descripción
Visibilidad Indica si el método es público o privado.
Nombre del método Identificador único del método, representativo de su función.
Parámetros de entrada Valores requeridos por el método para realizar su tarea.
Parámetros de salida Dato producido como resultado de la ejecución del método.
Instrucciones Bloque de código a ejecutar por el método.

Modificador de Acceso

El modificador de acceso siempre se indica primero. Es la forma en cómo clasificamos nuestras propiedades o métodos para hacerlos visibles o invisibles a quienes usen un objeto de una clase que creamos. Los modificadores de acceso son: Public, Private, Protected. En Java, hay otros modificadores. No todos permiten el uso de métodos en otras clases. Los métodos públicos podremos ejecutarlos desde otros Scripts por ejemplo, o podremos ejecutarlos desde un componente en la jerarquía. Los métodos privados no serán accesibles desde contextos externos al Script donde está definido.

En el contexto de los métodos, la visibilidad normalmente se define pública (public) para el método, a diferencia del atributo que se mantiene privado (private).

La palabra clave static

La palabra clave static es parte de la declaración del método y ya sabemos su significado. Si un método es static, entonces se puede usar sin una referencia a un objeto específico de la clase. Recuerde que en lecciones recientes hablamos sobre variables estáticas (de clase). Cuando se aplica a métodos, esta palabra clave tiene aproximadamente el mismo significado. Si este método no fuera estático, primero necesitaríamos crear un objeto para poder ejecutarlo.

El método como public static void main (String args) que ya conoces, recibe el nombre o se clasifica como un método de clase o static, ya que se invoca dentro de una clase y no requiere de la instanciación de un objeto para que se ejecute. Por otro lado, los métodos de instancia solo pueden ser invocados mediante un objeto previamente instanciado de una clase que los contenga.

Tipo de Valor de Retorno

Si nuestro método debe devolver algo, entonces especificamos el tipo del valor de retorno. Por ejemplo, puede devolver un String. Si el método no devuelve ningún valor, se utiliza la palabra clave void.

Lea también: Aprende a declarar el IVA correctamente

Lista de Parámetros (Firma del Método)

Los parámetros de un método especifican la lista de valores que la subrutina espera recibir cuando sea invocada. Consiste en escribir dentro de los paréntesis de la declaración de un método los tipos y datos que se esperan recibir, en una especie de lista que separa a cada uno de los elementos con una coma. A diferencia de los atributos, a los métodos debe agregarse una lista de parámetros al final que es el medio de comunicación con el exterior; los paréntesis se escriben aunque no haya parámetros.

Los dos últimas partes de la firma son muy importantes (el identificador de método y los tipos de datos de los argumentos) al considerar que pueden existir métodos que tengan el mismo nombre o identificador. Si el método Person de la clase sayYourAge() toma una cadena y un número como entrada, ¡entonces este es el orden en que estos argumentos deben pasarse al método! Si los pasamos en un orden diferente, entonces el compilador generará un error y la persona no podrá decir su edad.

Cuando (String... nombres) se usa como parámetro, indica que se pasará una colección de cadenas al método. Dentro del método, iteramos sobre todos los argumentos y mostramos frases formateadas con nombres. La notación (String... nombres) en realidad significa que el compilador coloca todos los argumentos pasados en una matriz. Como resultado, podemos trabajar con nombres de variables como trabajaríamos con una matriz, incluso iterándola en un bucle. ¡Además, funcionará con cualquier cantidad de cadenas pasadas!

Cuerpo del Método

El cuerpo del método puede ser una sentencia nula (no hace nada), una sentencia simple o varias sentencias. En el interior estarán todas las instrucciones del método. Además de agrupar instrucciones, un método debe tener un propósito bien establecido y que sea coherente con el nombre que le dimos, de esta forma podremos saber rápidamente cuál es su función y qué tipo de instrucciones puede contener.

Métodos con el Mismo Nombre: Sobrecarga (Overloading)

Hay situaciones en las que querremos varias formas diferentes de llamar a un método. Esto se llama sobrecarga de métodos. La sobrecarga de métodos permite que nuestro programa sea más flexible y se adapte a varias formas de trabajar. Por ejemplo, podríamos tener un método sayHi() que salude a una persona y otra versión que salude a dos personas:

Lea también: SAT: Anulación y Corrección

System.out.println("Good evening, " + name + ".

System.out.println("Good evening, " + firstGuest + " and " + secondGuest + ".

Excelente, ambas versiones funcionaron. El comportamiento de nuestro método depende de los datos que le pasemos. Por cierto, los constructores, que cubrimos en la última lección, ¡también son métodos! También puede sobrecargarlos (es decir, crear varios constructores con diferentes conjuntos de parámetros) y el orden de los argumentos pasados también es fundamentalmente importante para ellos.

Un problema que puede surgir es la ambigüedad al invocar métodos con parámetros similares. Por ejemplo, si tenemos dos versiones de un método introduce(), una con un String como segundo argumento y otra con un Integer como segundo argumento: ambas pueden ser null.

System.out.println("My name is " + name + ".

System.out.println("My name is " + name + ".

Si pasamos null como segundo parámetro, ¡obtendremos un error de compilación! El compilador no puede averiguar qué versión del método debe llamar. La solución a este problema es bastante simple. Null se puede convertir explícitamente a un tipo de referencia específico. Por lo tanto, cuando llama a un método, puede indicar entre paréntesis el tipo de datos que desea para el segundo argumento:

System.out.println("My name is " + name + ".

System.out.println("My name is " + name + ".

Si el parámetro numérico fuera un primitivo int, en lugar de una instancia del tipo de referencia Integer, no habría habido tal error. Esto se debe a que las primitivas no pueden ser null. Ahora el compilador solo tiene una opción, es decir, llamar al método introduce() con dos cadenas.

Métodos Especiales: Getters y Setters

Por el principio de encapsulamiento, los datos que se encuentran almacenados en una instancia u objeto de una clase están protegidos del acceso desde el mundo exterior. La encapsulación contiene toda la información importante de un objeto dentro del mismo y solo expone la información seleccionada al mundo exterior. Esta propiedad permite asegurar que la información de un objeto esté oculta para el mundo exterior, agrupando en una Clase las características o atributos que cuentan con un acceso privado, y los comportamientos o métodos que presentan un acceso público.

El mecanismo de acceso para recuperar la información de un atributo almacenado es a partir de un método que responde al verbo “recuperar” u “obtener” en español. Todas las variables de salida que se implementen en atributos dentro de la clase deben tener un método get, también se le llama «getter». Este verbo get se escribe previo al nombre del atributo, el cual debe capitalizarse (poner la primera letra en mayúsculas). La visibilidad normalmente se define pública (public) para el método, a diferencia del atributo que se mantiene privado (private). La función de un getter es proporcionar el valor del atributo al exterior del objeto de forma ordenada, por lo cual la visibilidad es generalmente public. Los getters son generalmente públicos ya que, por el principio de encapsulamiento, todos los atributos deben ser privados. Otra recomendación que es útil atender es generar getters para todos los atributos: entradas, salidas y valores intermedios, siempre que sea posible.

De manera análoga a los getters, el mecanismo de acceso para modificar la información de un atributo almacenado es a partir de un método que responde al verbo “asignar” en español. Como tiene muchas letras suele utilizarse el verbo en inglés: “set”. Todas las variables de entrada que se implementen con atributos dentro de una clase deben tener un método set, también se le llama «setter». Este verbo set se escribe previo al nombre del atributo, el cual debe capitalizarse (poner la primera letra en mayúsculas). La visibilidad normalmente se define pública (public) para el método, a diferencia del atributo que se mantiene privado (private). Para cada atributo, agrega la palabra set como prefijo, y el nombre del atributo capitalizado.

Una vez que se garantiza como recuperar información (getters) y cómo modificar los atributos (setters) de un objeto se procede a realizar la codificación del comportamiento del objeto. Fuera de los getters y los setters, se colocan otros métodos dentro del dominio del problema.

Invocación y Ejemplos Prácticos

Una vez que el método está definido podemos hacer que se ejecute desde cualquier parte del script, incluso podemos invocarlo desde otros scripts. Para invocar un método se escribe su nombre y se abren y cierran paréntesis. La instrucción se cierra con punto y coma. Haciendo esto estamos logrando que se ejecuten todas las instrucciones del método.

Ejemplo 1 - Método void que no requiere parámetros

Este es un método público que no requiere parámetros y no devuelve parámetros. Observamos que ha sido declarado como privado en lugar de público, seguidamente encontramos la palabra «void» con la que indicamos que este método no va a devolver parámetros. Luego el nombre del método: «placePlayerRandomly». Se abre y se cierran paréntesis con lo que se indica que este método no necesita que le demos parámetros. El comienzo y final del método se indica utilizando llaves. En el interior estarán todas las instrucciones del método.

Ejemplo 2 - Método void con parámetros de entrada

En este caso tenemos la estructura de un método que no devuelve parámetros pero si los requiere para funcionar. Este método requiere dos parámetros para funcionar: un valor entero m que indicará los minutos del timer y un valor entero s que indicará los segundos. Si se invoca desde otro Script es necesario agregar el nombre de la instancia del objeto, seguido de un punto, antes de escribir el nombre del método.

Ejemplo 3 - Método con parámetro de salida pero no de entrada

Pasamos a los métodos que devuelven parámetros. Un método que devuelve un dato y no requiere parámetros para funcionar. El dato que devuelve este método se indica en la declaración, luego del modificador de acceso. Luego se hacen algunos cálculos y al final del método se escribe: return position; indicando que devolvemos ese valor. El resultado de esa invocación es un dato que, por ejemplo, puede ser asignado a otra variable.

Ejemplo 4 - Métodos con parámetros de entrada y salida

Este es un método que devuelve un dato y requiere parámetros para funcionar. Vemos que en la declaración decimos que el método devuelve un dato tipo bool y requiere un dato tipo int que llamamos val. La invocación a este método se puede hacer directamente como argumento de una sentencia if, debido a que el resultado de la invocación es equivalente a tener un valor verdadero o falso.

tags: #declaracion #de #metodos #en #programacion #orientada