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 Dinherit A rename g as f -- g was effective in A undefine f export { NONE } all { ANY } capacity end endclass 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?