Ejemplo de interface para calcular área y perímetro de polígonos
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
Publicar un comentario