Eiffel -- a language with assertions

B


  • bottom-up development -- class design
  • contracts -- specify client/server relationships

Design principles -- correctness

  • static typing -- type secure
  • multiple inheritance -- polymorphism
  • dynamic binding -- refinement
  • generic classes -- abstraction

slide: The language Eiffel


The language Eiffel -- keywords


slide: Eiffel -- terminology


Type expressions -- conformance

  • basic types -- Boolean, Integer
  • formal parameter types -- Array[T], List[T]
  • class types -- user-defined
  • anchored types -- like current

Value expressions

  • arithmetic, comparison, method evaluation -- o.m(...)

Assignment

  • var := expression

slide: Eiffel -- type expressions


Control -- method refinement


slide: Eiffel -- control



    class  counter  export  inc val  feature 
   count : Integer
   create  is do  count := 0  end 
   inc( n : Integer )  is 
  	 require  n > 0  do 
  	count := count + n
  	 ensure  count =  old  count + n
  	 end 
   val : Integer  is do   Result  := count  end 
    invariant  count >= 0
    end  -- class counter
  

slide: Eiffel -- objects


Multiple inheritance


  class Fixed_List[T] export ...
  inherit
  	List[T]
  	Array[T]
  feature
   ...
  end
  

slide: Eiffel -- inheritance


Rename and/or redefine


  class C export ... inherit
    A rename   m   as m1 redefine p
    B rename   m   as m2 redefine q
  feature
  ...
  end
  

slide: Eiffel -- techniques


The language Eiffel

B



slide: Eiffel -- summary