25 - POO - Llamada de métodos desde otro método de la misma clase

Hasta ahora todos los problemas planteados hemos llamado a los métodos desde donde definimos un objeto de dicha clase, por ejemplo:

    val persona1 = Persona("Juan", 12)
    persona1.imprimir()
    persona1.esMayorEdad()

Utilizamos la sintaxis:

[nombre del objeto].[nombre del método]

Es decir antecedemos al nombre del método el nombre del objeto y el operador punto.

Ahora bien que pasa si queremos llamar dentro de la clase a otro método que pertenece a la misma clase, la sintaxis es la siguiente:

[nombre del método]

O en forma larga:

this.[nombre del método]

Es importante tener en cuenta que esto solo se puede hacer cuando estamos dentro de la misma clase.

Problema 1

Plantear una clase Operaciones que en un método solicite la carga de 2 enteros y posteriormente llame a otros dos métodos que calculen su suma y producto.

Proyecto117 - Principal.kt

class Operaciones {
    var valor1: Int = 0
    var valor2: Int = 0

    fun cargar() {
        print("Ingrese primer valor:")
        valor1 = readln().toInt()
        print("Ingrese segundo valor:")
        valor2 = readln().toInt()
        sumar()
        restar()
    }

    fun sumar() {
        val suma = valor1 + valor2
        println("La suma de $valor1 y $valor2 es $suma")
    }

    fun restar() {
        val resta = valor1 - valor2
        println("La resta de $valor1 y $valor2 es $resta")
    }
}

fun main(parametro: Array<String>) {
    val operaciones1 = Operaciones()
    operaciones1.cargar()
}

Nuestro método cargar además de cargar los dos enteros en las propiedades procede a llamar a los métodos que calculan la suma y resta de los dos valores ingresados.

La llamada de los métodos de la misma clase se hace indicando el nombre del método.

Desde donde definimos un objeto de la clase Operaciones llamamos a sus métodos antecediendo el nombre del objeto:

    val operaciones1 = Operaciones()
    operaciones1.cargar()

Problema propuesto

  • Declarar una clase llamada Hijos. Definir dentro de la misma un arreglo para almacenar las edades de 5 personas.
    Definir un método cargar donde se ingrese por teclado el arreglo de las edades y llame a otros dos método que impriman la mayor edad y el promedio de edades.
Solución
Proyecto118

class Hijos {
    val edades = IntArray(5)

    fun cargar() {
        for(i in edades.indices) {
            print("Ingrese edad:")
            edades[i] = readln().toInt()
        }
        mayorEdad()
        promedio()
    }

    fun mayorEdad() {
        var mayor = edades[0]
        for(i in edades.indices)
            if (edades[i] > mayor)
                mayor = edades[i]
        println("El hijo con mayor edad es $mayor")
    }

    fun promedio() {
        var suma = 0
        for(i in edades.indices)
            suma += edades[i]
        val promedio = suma / edades.size
        println("La edad promedio de los hijos es $promedio")
    }
}

fun main(parametros: Array<String>) {
    val hijos1 = Hijos()
    hijos1.cargar()
}