zoukankan      html  css  js  c++  java
  • Eiffel小抄

    class


    note
    description: "Simple bank accounts"
     
    class
    ACCOUNT
     
    feature -- Access
     
    balance: INTEGER
    -- Current balance
     
    deposit_count: INTEGER
    -- Number of deposits made since opening
    do
    if all_deposits /= Void then
    Result := all_deposits.count
    end
    end
     
    feature -- Element change
     
    deposit (sum: INTEGER)
    -- Add `sum' to account.
    require
    non_negative: sum >= 0
    do
    if all_deposits = Void then
    create all_deposits
    end
     
    all_deposits.extend (sum)
    balance := balance + sum
    ensure
    one_more_deposit: deposit_count = old deposit_count + 1
    updated: balance = old balance + sum
    end
     
    feature {NONE} -- Implementation
     
    all_deposits: DEPOSIT_LIST
    -- List of deposits since account's opening.
     
    invariant
    consistent_balance:
    (all_deposits /= Void) implies (balance = all_deposits.total)
    zero_if_no_deposits:
    (all_deposits = Void) implies (balance = 0)
     
    end -- class ACCOUNT

    inheritance


    note
    description: "Savings accounts"
     
    class
    SAVINGS_ACCOUNT
     
    inherit
    ACCOUNT
    redefine
    deposit
    end
     
    feature -- Element change
     
    deposit (sum: INTEGER)
    -- Add sum to account.
    do
    ... New implementation (see below) ...
    end
     
    ... Other features ...
     
    end -- class SAVINGS_ACCOUNT

    class D
    inherit
    A
    rename
    g as f
    -- g was effective in A
    undefine
    f
    export
    {NONE} all
    {ANY} capacity
    end
    end

    class TEACHING_ASSISTANT
     
    inherit
    TEACHER
    rename
    computer_account as faculty_account
    select
    faculty_account
    end
     
    STUDENT
    rename
    computer_account as student_account
    end
    end

    deferred class

    deferred class
    LIST [G]
     
    feature -- Access
     
    count: INTEGER
    -- Number of items in list
    do
    ... See below; this feature can be effective ...
    end
     
    feature -- Element change
     
    extend (x: G)
    -- Add `x' at end of list.
    require
    space_available: not full
    deferred
    ensure
    one_more: count = old count + 1
    end
     
    ... Other feature declarations and invariants ...
     
    end -- class LIST

    operator

        infix "<=" (other: like Current): BOOLEAN
    -- Is current object less than or equal to `other'?
    require
    other_exists: other /= Void
    do
    Result := (Current < other) or is_equal (other)
    ensure
    definition: Result = (Current < other) or is_equal (other)
    end

    create

                create x.make (2000)
    create x
                create {SAVINGS_ACCOUNT} x.make (2000)
    some_routine (create {ACCOUNT}.make (2000))

    if

                if ... then
    ...
    elseif ... then
    ...
    else
    ...
    end

    switch

                inspect
    exp
    when v1 then
    inst
    when v2 then
    inst2
    ...
    else
    inst0
    end

    loop

                from
    initialization
    until
    exit
    invariant -- optional
    inv
    variant -- optional
    var
    loop
    body
    end

    assert

                check
    x_not_void: x /= Void end
    -- Because x was obtained as a clone of y,
    -- and y is not void because [etc.]
    end

    exception

            local
    attempts: INTEGER
    do
    last_character := low_level_read_function (f)
    rescue
    attempts := attempts + 1
    if attempts < Max_attempts then
    retry
    end
    end
  • 相关阅读:
    网络检查思路和步骤
    查看网络状态
    【Linux常见命令】lsof命令
    【Linux常见命令】ip命令
    【Linux常见命令】ifconfig命令:配置与查看网络信息
    【Linux常见命令】netstat命令
    Java-MD5
    Java发送邮件
    Maven基础02
    Maven基础01
  • 原文地址:https://www.cnblogs.com/frankbadpot/p/1582787.html
Copyright © 2011-2022 走看看