Fortran多態(tài)
左志華 zuo.zhihua@qq.com
Envir: ThinkPad S2(2018); Windows 10; GNU fortran 10; Git Bash Shell; Notepad++.
關(guān)鍵詞:Fortran斗埂,數(shù)值計(jì)算,面向?qū)ο筚旌#Z法
1. 背景
在學(xué)習(xí)Fortran的過程中蜜笤,對面向?qū)ο缶幊坍a(chǎn)生了興趣,想構(gòu)建健壯性的程序代碼盐碱。
Fortran主要應(yīng)用于科學(xué)計(jì)算把兔,在核心計(jì)算中往往用不到面向?qū)ο蟆T趹?yīng)對算法選擇瓮顽、IO文件操作等工作的時(shí)候县好,尤其是構(gòu)建相當(dāng)大的「大型」程序的時(shí)候,是有需求的暖混。
Fortran作為科學(xué)計(jì)算的基礎(chǔ)工具之一缕贡,對其熟悉和精通有必要提高代碼編寫的成熟性,健壯性拣播。
o_OOBase.gif
2. 代碼
Fortran多態(tài)的例子:
! 設(shè)置phoneCall模塊
module phone_mod
! 代碼維護(hù)者:左志華 zuo.zhihua@qq.com
private
! <type> <variableName> ! 描述|用途
type, public :: Nokia ! Nokia結(jié)構(gòu)體
! NONE
end type Nokia
type, public :: Iphone ! Iphone結(jié)構(gòu)體
! NONE
end type Iphone
interface phoneCall ! phoneCall接口
module procedure :: nokiaPhoneCall
module procedure :: iphoneCall
end interface phoneCall
private :: nokiaPhoneCall, iphoneCall ! 隱藏多態(tài)實(shí)現(xiàn)細(xì)節(jié)
public :: phoneCall ! 向外展示多態(tài)接口
contains
subroutine nokiaPhoneCall(n)
type(Nokia) :: n
print *, "I am Nokia."
end subroutine nokiaPhoneCall
subroutine iphoneCall(i)
type(Iphone) :: i
print *, "I am Iphone."
end subroutine iphoneCall
end module phone_mod
! 主程序
program main_prog
! 代碼維護(hù)者:左志華 zuo.zhihua@qq.com
use phone_mod, only: &
nokia, &
iphone,&
phoneCall
! <type> <variableName> ! 描述|用途
type(Iphone) :: i ! Iphone實(shí)例
type(Nokia) :: n ! Nokia實(shí)例
call phoneCall(i)
call phoneCall(n)
end program main_prog
Fortran多態(tài)
3. 分析
使用Fortran多態(tài)晾咪,可以將用戶編寫的if ... end if
結(jié)構(gòu)變成可復(fù)用性更高的Fortran代碼,并將if
判斷邏輯與操作工作在編譯后交給計(jì)算機(jī)贮配。
參考文獻(xiàn)
[1] Modern Fortran explained.
[2] 憶霜晨. Fortran實(shí)現(xiàn)多態(tài).
[3] 少秋. 面向?qū)ο蟮娜齻€(gè)基本特征