การเรียนรู้แนวคิดของการเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming - OOP) เป็นหัวใจสำคัญของการพัฒนาซอฟต์แวร์สมัยใหม่ หนึ่งในคุณสมบัติหลักของ OOP คือการสืบทอดคุณลักษณะ (inheritance) ที่ช่วยให้เราสามารถสร้างคลาสใหม่ที่ขยายหรือปรับเปลี่ยนคลาสที่มีอยู่ได้ ในบทความนี้เราจะมาพูดถึงแนวคิดการใช้งาน inheritance ในภาษาโปรแกรมมิ่ง Fortran ซึ่งเป็นภาษาที่ผู้คนมักจะมองว่าเป็น "old school" แต่ก็ยังมีลูกเล่นการเขียนโค้ดแบบ OOP ที่ทันสมัยอยู่ไม่น้อยเลยทีเดียว
สำหรับ Fortran ยุคใหม่เริ่มรองรับ OOP ตั้งแต่มาตรฐาน Fortran 2003 และปรับใช้อย่างเต็มตัวใน Fortran 2008 ดังนั้นจึงจำเป็นที่นักพัฒนาจะต้องมีความเข้าใจเรื่อง inheritance เพื่อให้สามารถใช้งานภาษานี้ให้เกิดประสิทธิภาพสูงสุด
เริ่มแรก เราจะมองตัวอย่างของคลาส `Vehicle` ที่มีคลาสย่อย `Car` ซึ่ง `Car` จะสืบทอดคุณสมบัติของ `Vehicle`.
module vehicle_module
implicit none
type :: Vehicle
character(len=10) :: type
integer :: year
contains
procedure :: display
end type Vehicle
contains
subroutine display(this)
class(Vehicle), intent(in) :: this
print *, 'Type:', this%type
print *, 'Year:', this%year
end subroutine display
end module vehicle_module
module car_module
use vehicle_module
implicit none
type, extends(Vehicle) :: Car
character(len=15) :: model
contains
procedure :: display
end type Car
contains
subroutine display(this)
class(Car), intent(in) :: this
call this%Vehicle%display
print *, 'Model:', this%model
end subroutine display
end module car_module
program test_inheritance
use car_module
implicit none
type(Vehicle) :: myVehicle
type(Car) :: myCar
myVehicle%type = 'Truck'
myVehicle%year = 1998
call myVehicle%display
myCar%type = 'Sedan'
myCar%year = 2010
myCar%model = 'FortranCar'
call myCar%display
end program test_inheritance
ในตัวอย่างนี้ เราสร้าง module สำหรับ `Vehicle` และ `Car` โดย `Car` เป็นคลาสที่สืบทอดจาก `Vehicle`. คำสั่ง `extends` คือการแสดงให้เห็นการสืบทอด attribute และ method จากคลาส vehicle_module โดย subroutine `display` ในคลาส `Car` เรียกใช้ `display` ของ `Vehicle` ก่อน และดำเนินการแสดงข้อมูลของตัวมันเองต่อไป.
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: inheritance oop fortran object-oriented_programming class module extends subroutine method attribute programming_language vehicle car example code
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com