Eiffel 引介 Part IV (2)

类别:编程语言 点击:0 评论:0 推荐:

Eiffel Introduction

Eiffel 引介

 

Rensselaer, 2000

James C. McKim, Jr, Rensselaer at Hartford

 K ][ N G of @ R K 译

 

 

4.4 TEST_STACK

class TEST_STACK

creation make_test

feature{NONE}

  si : MY_STACK[ INTEGER ] ; ss : MY_STACK[ STRING ]

  make_test is

    do

      test_integer_stack

      test_string_stack

  end

  test_integer_stack is

    do

      !!si.make( 3 )

      si.push( 3 )

      si.push( 2 )

      si.push( 1 )

      io.putint( si.depth ) io.new_line

      io.putint( si.top ) io.new_line

      si.pop

      io.putint( si.top ) io.new_line

      si.pop

      io.putint( si.top ) io.new_line

      si.pop

  end

  test_string_stack is

    do

       !!ss.make( 10 )

       ss.push( " in Dixie." )

       ss.push( " I was" )

       ss.push( "Oh, I wish" )

       io.putstring( ss.top )

       ss.pop

       io.putstring( ss.top )

       ss.pop

       io.putstring( ss.top ) io.new_line

  end

end

 

4.5 STACK class(另一种实现)

class MY_STACK[ G ]

creation make

feature{ANY}

  capacity : INTEGER

  depth : INTEGER is

    do

      Result := current_depth

  end

  push( x : G ) is

    -- Make x the top item.

    require

      not_full: depth < capacity

    do

      current_depth := current_depth + 1

      s.put( x, current_depth )

      top := x

    ensure

      depth = old depth + 1 ; top = x

  end -- push

  top : G

    -- The item that has been on the stack for the least

    -- amount of time.

    -- require

    -- not_empty: depth > 0

  pop is

    -- Remove the top item.

    require

      not_empty: depth > 0

    do

      current_depth := current_depth - 1

      if current_depth > 0 then

        top := s.item( current_depth )

      end

    ensure

      depth = old depth - 1

        -- top = the item remaining on the stack (if any)

        -- that has been there the least amount of time.

  end -- pop

feature{NONE}

  s : ARRAY[ G ]

  current_depth : INTEGER

  make( c : INTEGER ) is

    -- Initialize an empty stack with capacity c.

    require

      c > 0

    do

      capacity := c

      !!s.make( 1, capacity )

      current_depth := 0

    ensure

      capacity = c

      depth = 0

  end -- make

end

 

 

本文地址:http://com.8s8s.com/it/it29367.htm