fortran OOP(1) class_Date.f90

本文介绍了一个使用Fortran编写的日期类模块,该模块定义了Date类型并提供了构造函数、打印和读取日期的方法。通过封装Month、Day和Year字段,并提供公共接口,确保了日期数据的一致性和正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

module class_Date        ! filename: class_Date.f90
 
implicit none
 public  
:: Date ! and everything not "private"
! private :: month, day, year

 
type Date
   
private
   integer 
:: month, day, year ; end type Date

contains ! encapsulated functionality

 
function Date_ (m, d, y) result (x) ! public constructor
   
integerintent(in) :: m, d, y    ! month, day, year
   
type (Date)         :: x          ! from intrinsic constructor
   
x = Date (m, d, y) ; end function Date_

subroutine  print_Date (x)    ! check and pretty print a date
  
type (Date), intent(in)     :: x
  
character (len=*),parameter :: month_Name(12) = &
  
(/ "January  ""February ""March    ""April    ",&
     
"May      ""June     ""July     ""August   ",&
     
"September""October  ""November ""December "/)
  
if ( x%month < 1 .or. x%month > 12 ) print *, "Invalid month"
  
if ( x%day   < 1 .or. x%day   > 31 ) print *, "Invalid day  "
  
print *, trim(month_Name(x%month)),' ', x%day, ", ", x%year;
end subroutine  print_Date 

 
subroutine  read_Date (x)        ! read month, day, and year
   
type (Date), intent(out) :: x  ! into intrinsic constructor
   
read *, x ; end subroutine  read_Date 

 
function set_Date (m, d, y) result (x)     ! manual constructor
   
integeroptionalintent(in) :: m, d, y ! month, day, year
   
type (Date)                   :: x
   x = 
Date (1,1,1997)           ! default, (or use current date)
   
if present(m) ) x%month = m ; if present(d) ) x%day   = d 
   
if present(y) ) x%year  = y ; end function set_Date 
 

end module class_Date 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yueliang2100

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值