sábado, 11 de octubre de 2014

Programando en Ceylon ... no. 4

Continuamos con la programación en Ceylon. En esta ocasión veremos un ejemplo de interfaces y clases abstractas.


Ejemplo. Programa que calcule el área de un triángulo, un cuadrado, y un circulo. 

Áreas (fórmulas):

Triángulo => (base*altura)/2 
Cuadrado => lado^2
Circulo => 3.14159*(radio^2)


Crearemos:
  1. Una interface
  2. Una clase base abstracta
  3. Tres clases hijas
 ¿Cómo creo una interface en Ceylon?
 shared interface NombreInterface{ ... }

Llamaremos 'Operaciones' a nuestra interface, escribimos un método 'area', el cual nos servirá más adelante.

shared interface Operaciones{
   shared formal Float area();
}

Es muy similar a Java, aunque es obvio que las anotaciones y palabras reservadas van a cambiar.

La clase base abstracta quedará así:

abstract class Figura() of Triangulo|Cuadrado|Circulo satisfies Operaciones{ }

La parte  "of Triangulo|Cuadrado|Circulo"  nos indica las clases hijas, la parte "satisfies Operaciones" es similar al implements de Java.


Las clases hijas quedarán de la siguiente forma:
shared class Triangulo(base,altura) extends Figura(){
     shared Float base;
    shared Float altura;

    shared actual Float area(){
        return (base*altura)/2.0;
    }

    shared String description = "Triangulo(base: ``base``, altura: ``altura``)"

}
shared class Cuadrado(lado) extends Figura(){
shared Float lado;

    shared actual Float area(){
        return lado^2;
    }

    shared String description = "Cuadrado(lado: ``lado``)";


}
shared class Circulo(radio) extends Figura(){
  shared Float radio;

    shared actual Float area(){
        return 3.14159*(radio^2);
    }

    shared String description = "Circulo(radio:  ``radio``)"


}

Finalmente el método principal del programa.
shared void run(){

    Triangulo triangulo=Triangulo(12.9,20.0);
    Cuadrado cuadrado=Cuadrado(3.7);
    Circulo circulo=Circulo(2.9);
    print(" ``triangulo.description``");
    print(" ``cuadrado.description``");
    print(" ``circulo.description``");
    print(" area triangulo: ``triangulo.area()``");
    print(" area cuadrado: ``cuadrado.area()``");
    print(" area circulo: ``circulo.area()``");
}

Compilamos: ceylon compile source/elefante.ceylon
Ejecutamos: ceylon run default


No hay comentarios:

Publicar un comentario

Claude Code: un nuevo enfoque de la programación por pares

Claude Code es una herramienta de inteligencia artificial creada por Anthropic que funciona directamente en la terminal. Sirve para acele...

Etiquetas

Archivo del blog