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

Vibe Coding (la programación vía IA): ¿el futuro de la programación?

Vibe Coding es un nuevo paradigma de programación, una nueva forma de crear código. Es un enfoque emergente en el desarrollo de sof...

Etiquetas

Archivo del blog