Fortran多态
左志华 zuo.zhihua@qq.com
Envir: ThinkPad S2(2018); Windows 10; GNU fortran 10; Git Bash Shell; Notepad++.
关键词:Fortran,数值计算,面向对象,语法
1. 背景
在学习Fortran的过程中,对面向对象编程产生了兴趣,想构建健壮性的程序代码。
Fortran主要应用于科学计算,在核心计算中往往用不到面向对象。在应对算法选择、IO文件操作等工作的时候,尤其是构建相当大的「大型」程序的时候,是有需求的。
Fortran作为科学计算的基础工具之一,对其熟悉和精通有必要提高代码编写的成熟性,健壮性。
2. 代码
Fortran多态的例子:
! 设置phoneCall模块
module phone_mod
! 代码维护者:左志华 zuo.zhihua@qq.com
private
! <type> <variableName> ! 描述|用途
type, public :: Nokia ! Nokia结构体
! NONE
end type Nokia
type, public :: Iphone ! Iphone结构体
! NONE
end type Iphone
interface phoneCall ! phoneCall接口
module procedure :: nokiaPhoneCall
module procedure :: iphoneCall
end interface phoneCall
private :: nokiaPhoneCall, iphoneCall ! 隐藏多态实现细节
public :: phoneCall ! 向外展示多态接口
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
! 代码维护者:左志华 zuo.zhihua@qq.com
use phone_mod, only: &
nokia, &
iphone,&
phoneCall
! <type> <variableName> ! 描述|用途
type(Iphone) :: i ! Iphone实例
type(Nokia) :: n ! Nokia实例
call phoneCall(i)
call phoneCall(n)
end program main_prog
3. 分析
使用Fortran多态,可以将用户编写的if ... end if
结构变成可复用性更高的Fortran代码,并将if
判断逻辑与操作工作在编译后交给计算机。
参考文献
[1] Modern Fortran explained.
[2] 忆霜晨. Fortran实现多态.
[3] 少秋. 面向对象的三个基本特征