Ejemplo de interface para calcular área y perímetro de polígonos

Ejemplo de interface en Kotlin

Para apoyar el contenido expuesto en la entrada Introducción a las interfaces en Kotlin, el siguiente programa expone un ejemplo sencillo del uso de interface aplicado al cálculo del perímetro y del área en distintos tipos de figuras geométricas.

En el código siguiente vemos que a partir de una interface ('Poligono') con una propiedad y métodos abstractos además de un método concreto (implementado), se crean dos clases ('Cuadrado' y 'Rectangulo') que implementan la interfaz, y por tanto ambas deben implementar la propiedad y métodos abstractos de esa interfaz.

Una vez que se crean instancias de esas clases ('cuadrado1' y 'rectangulo1'), ambos objetos llaman a una función ('mostrarDatos') que recibe como parámetros la interface y un número variable de argumentos (ya vimos el modificador vararg en Introducción a las funciones en Kotlin). Desde esta función el objeto llama tanto a las propiedades y métodos sobrescritos por cada clase como al método implementado en la misma interface.

Por otra parte, también vemos que esa función utiliza el condicional if como expresión (Instrucciones condicionales I: if) para asignar un valor a la variable 'lado2' en función del número de argumentos pasados.

/*
 * Kotlin Doc
 * Uso de interface para calcular área y perímetro de polígonos
*/

interface Poligono {

    val nombre: String

    fun calcularArea(): Int

    fun calcularPerimetro(): Int

    fun tituloResultado() {
        println("Datos del Polígono")
    }
}

class Cuadrado(val lado: Int) : Poligono {

    override val nombre: String = "Cuadrado"

    override fun calcularArea(): Int {
        return lado * lado
    }

    override fun calcularPerimetro(): Int {
        return lado * 4
    }
}

class Rectangulo(val base: Int, val altura: Int) : Poligono {

    override val nombre: String = "Rentángulo"

    override fun calcularArea(): Int {
        return base * altura
    }

    override fun calcularPerimetro(): Int {
        return (base * 2) + (altura * 2)
    }
}

fun mostrarDatos(figura: Poligono, vararg input: Int) {

    figura.tituloResultado()

    print("${figura.nombre} ")
    val lado2 = if (input.size > 1) input[1] else input[0]
    println("${input[0]} x $lado2")

    println("Perímetro = ${figura.calcularPerimetro()}")
    println("Área = ${figura.calcularArea()}")
    println()
}

fun main() {

    val cuadrado1 = Cuadrado(20)
    mostrarDatos(cuadrado1, cuadrado1.lado)

    val rectangulo1 = Rectangulo(20, 15)
    mostrarDatos(rectangulo1, rectangulo1.base, rectangulo1.altura)
}
Datos del Polígono
Cuadrado 20 x 20
Perímetro = 80
Área = 400

Datos del Polígono
Rentángulo 20 x 15
Perímetro = 70
Área = 300

Comentarios

Entradas populares

I/O: entrada y salida de datos en consola

Recursos gratis para aprender Kotlin

Lectura y escritura de archivos