Fortran多态基础

作者: zoziha | 来源:发表于2021-01-26 16:37 被阅读0次

    Fortran多态

    左志华 zuo.zhihua@qq.com
    Envir: ThinkPad S2(2018); Windows 10; GNU fortran 10; Git Bash Shell; Notepad++.
    关键词:Fortran,数值计算,面向对象,语法

    1. 背景

    在学习Fortran的过程中,对面向对象编程产生了兴趣,想构建健壮性的程序代码。
    Fortran主要应用于科学计算,在核心计算中往往用不到面向对象。在应对算法选择、IO文件操作等工作的时候,尤其是构建相当大的「大型」程序的时候,是有需求的。
    Fortran作为科学计算的基础工具之一,对其熟悉和精通有必要提高代码编写的成熟性,健壮性。


    o_OOBase.gif

    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
    
    Fortran多态

    3. 分析

    使用Fortran多态,可以将用户编写的if ... end if结构变成可复用性更高的Fortran代码,并将if判断逻辑与操作工作在编译后交给计算机。

    参考文献

    [1] Modern Fortran explained.
    [2] 忆霜晨. Fortran实现多态.
    [3] 少秋. 面向对象的三个基本特征

    相关文章

      网友评论

        本文标题:Fortran多态基础

        本文链接:https://www.haomeiwen.com/subject/pgngzktx.html