Lenguaje de programación Eiffel
Keywords: Lenguaje de programación Eiffel, Clase, Herencia (programación orientada a objetos), Lenguaje de programación, Lenguaje de programación Pascal, Precondición, Programación orientada a objetos, Recolección de basura
Eiffel fue ideado en 1985 por Bertrand Meyer. Es un lenguaje de programación orientado a objetos centrado en la construcción de software robusto. Su sintaxis es parecida a la de Pascal.Una característica que lo distingue del resto de los lenguajes es que permite el diseño por contrato desde la base, con precondiciones, postcondiciones, invariantes y variantes de bucle, invariantes de clase y asertos.
Eiffel es un lenguaje con tipos fuertes, pero relajado por herencia. Implementa administración automática de memoria, generalmente mediante algoritmos de recolección de basura. Las claves de este lenguaje están recogidas en el libro de Meyer, Construcción de Software Orientado a Objetos.
| Tabla de contenidos |
Ejemplos de código
Hola mundo
class HOLA_MUNDO
create
make
feature
make is
do
io.put_string("%nHola mundo%N")
end
end -- HOLA_MUNDO
Una clase más compleja
Esta clase pertenece a la libreria estándar de SmartEiffel e implementa el reloj del sistema.
expanded class CLOCK
--
-- Time and date facilities: year, month, day, hour and seconds.
--
feature
value: INTEGER is
-- Get the CPU clock periods if available (-1 if not).
do
Result := basic_clock
end
periods_per_second: INTEGER is
-- The number of clock periods per seconds.
require
value >= 0
do
Result := basic_clock_per_sec
end
feature {NONE}
basic_clock: INTEGER is
external "SmartEiffel"
end
basic_clock_per_sec: INTEGER is
external "SmartEiffel"
end
end -- CLOCK
class
GENERICA[G->COMPARABLE]--Clase (G (->)va a ser necesariamente comparable)
inherit
ARRAY[G]--Clase generica es un tipo de array
end
feature
n_datos:INTEGER -- lleva el número de datos
ingresar(dato:G;pos:INTEGER) is -- guarda los datos en el vector generico
do
n_datos:=n_datos+1
resize(1,pos) -- modifica el tamaño del vector según el numero de datos
put(clone(dato),pos) -- guarda el dato
end
----------------------------------------------------------------------------------------------------
seleccion is
local
i,j:INTEGER
aux:G
do
from i:=1 -- bucle que lleva todos los datos
until i=n_datos -- de uno a uno
loop
from j:=i+1 -- bucle que lleva todos los datos siguientes
until j=n_datos+1 -- del dato del bucle anterior
loop
if item(i) > item(j) then -- verifica si el dato 'i' es mayor a algunos de los
aux:=item(i) -- datos siguientes, lo guarda al dato 'i'
put(item(j),i) -- si cumple, lo guarda en una variable local
put(aux,j) -- y los cambia de posición
end
j:=j+1
end
i:=i+1
end
end
---------------------------------------------------------------------------------------------------
end -- class GENERICA[G]
Enlaces externos
- SmartEiffel Compilador GPL de Eiffel
- Eiffel Software: la compañía de Bertrand Meyer
- NICE: Consorcio internacional para el lenguaje Eiffel
Eiffel
- REDIRECT Plantilla:Lenguajes de programación
