Eiffel 引介 Part IV (2)

原创 2003年03月04日 08:56:00

Eiffel Introduction<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

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

 

 

Eiffel 引介 Part IV

Eiffel IntroductionEiffel 引介 Rensselaer, 2000James C. McKim, Jr, Rensselaer at Hartford K ][ N G of ...
  • kingofark
  • kingofark
  • 2003年03月04日 08:56
  • 1233

Eiffel 引介 Part IV

Eiffel IntroductionEiffel 引介 Rensselaer, 2000James C. McKim, Jr, Rensselaer at Hartford K ][ N G o...
  • hejishan
  • hejishan
  • 2008年04月08日 23:32
  • 154

Eiffel 引介 Part IV (1)

Eiffel IntroductionEiffel 引介 Rensselaer, 2000James C. McKim, Jr, Rensselaer at Hartford K ][ N G of ...
  • kingofark
  • kingofark
  • 2003年03月04日 08:56
  • 1098

Eiffel 引介 Part IV (1)

Eiffel IntroductionEiffel 引介 Rensselaer, 2000James C. McKim, Jr, Rensselaer at Hartford K ][ N G o...
  • hejishan
  • hejishan
  • 2008年04月08日 23:32
  • 159

Eiffel 引介 Part V (2)

5.5 常量使用如下语法形式声明常量:constant_name : CLASS_NAME is value比如:pi : DOUBLE is 3.14159base : INTEGER is 10h...
  • kingofark
  • kingofark
  • 2003年03月04日 08:56
  • 1066

Eiffel 引介 Part V (2)

5.5 常量使用如下语法形式声明常量:constant_name : CLASS_NAME is value比如:pi : DOUBLE is 3.14159base : INTEGER is 1...
  • hejishan
  • hejishan
  • 2008年04月08日 23:34
  • 214

Eiffel 引介 Part III

Eiffel IntroductionEiffel 引介 Rensselaer, 2000James C. McKim, Jr, Rensselaer at Hartford K ][ N G o...
  • hejishan
  • hejishan
  • 2008年04月08日 23:35
  • 152

Eiffel 引介 Part III

Eiffel IntroductionEiffel 引介 Rensselaer, 2000James C. McKim, Jr, Rensselaer at Hartford K ][ N G of ...
  • kingofark
  • kingofark
  • 2003年03月03日 18:08
  • 1099

Eiffel 引介 Part V

Eiffel IntroductionEiffel 引介 Rensselaer, 2000James C. McKim, Jr, Rensselaer at Hartford K ][ N G o...
  • hejishan
  • hejishan
  • 2008年04月08日 23:33
  • 180

Eiffel 引介 Part V

Eiffel IntroductionEiffel 引介 Rensselaer, 2000James C. McKim, Jr, Rensselaer at Hartford K ][ N G of ...
  • kingofark
  • kingofark
  • 2003年03月04日 08:56
  • 1038
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Eiffel 引介 Part IV (2)
举报原因:
原因补充:

(最多只允许输入30个字)