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

Eiffel

  1. REDIRECT Plantilla:Lenguajes de programación


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