# การใช้งาน Encapsulation ใน OOP Concept พร้อมตัวอย่าง Code ในภาษา Fortran
การเขียนโปรแกรมที่มีคุณภาพต้องอาศัยหลักการออกแบบและโครงสร้างที่ดี หนึ่งในหลักการสำคัญนั้นคือ Object-Oriented Programming (OOP) ซึ่งเป็นแนวทางที่ช่วยให้นักพัฒนาสามารถจัดการกับโค้ดได้อย่างมีระเบียบและเพิ่มประสิทธิภาพในการบำรุงรักษาโปรแกรม ในบทความนี้ เราจะพูดถึง Encapsulation ซึ่งเป็นหนึ่งในสี่หลักการหลักของ OOP และเราจะเรียนรู้ว่าการใช้งานมันในภาษา Fortran ทำได้อย่างไร
Encapsulation หมายถึงการซ่อนรายละเอียดภายในของวัตถุ (objects) จากส่วนนอก ทำให้วัตถุนั้นคงความปลอดภัยจากการเข้าถึงหรือแก้ไขจากภายนอกอย่างไม่เหมาะสม ในทางปฏิบัติ นี่หมายถึงการใช้ตัวแปร private และ public methods เพื่อควบคุมการเข้าถึงตัวแปรของวัตถุ
ในภาษา Fortran, Encapsulation สามารถทำได้โดยการใช้ Modules และ Type สร้างขอบเขตการเข้าถึงข้อมูลและฟังก์ชั่นที่จำเป็นเท่านั้น ด้านล่างนี้คือตัวอย่างโค้ดที่ใช้ Encapsulation:
ตัวอย่างที่ 1: การกำหนด Type พร้อมข้อมูลส่วนตัว
module person_module
type :: Person
private
character(len=100) :: name
integer :: age
public :: setPerson, getPersonAge, getPersonName
contains
procedure :: setPerson
procedure :: getPersonAge
procedure :: getPersonName
end type Person
contains
subroutine setPerson(this, n, a)
class(Person), intent(inout) :: this
character(len=*), intent(in) :: n
integer, intent(in) :: a
this%name = n
this%age = a
end subroutine setPerson
function getPersonAge(this) result(age)
class(Person), intent(in) :: this
integer :: age
age = this%age
end function getPersonAge
function getPersonName(this) result(name)
class(Person), intent(in) :: this
character(len=100) :: name
name = this%name
end function getPersonName
end module person_module
ตัวอย่างที่ 2: การใช้งาน Type ในโปรแกรมหลัก
program main
use person_module
type(Person) :: person
call person%setPerson("John Doe", 30)
print *, "Name: ", person%getPersonName()
print *, "Age: ", person%getPersonAge()
end program main
ตัวอย่างที่ 3: ทำให้ข้อมูลเป็นส่วนตัวด้วยการใช้ Encapsulation
module account_module
type :: BankAccount
private
real :: balance = 0.0
public :: deposit, withdraw, getBalance
contains
subroutine deposit(this, amount)
class(BankAccount), intent(inout) :: this
real, intent(in) :: amount
if (amount > 0.0) then
this%balance = this%balance + amount
end if
end subroutine deposit
subroutine withdraw(this, amount)
class(BankAccount), intent(inout) :: this
real, intent(in) :: amount
if (amount > 0.0 .and. this%balance >= amount) then
this%balance = this%balance - amount
end if
end subroutine withdraw
function getBalance(this) result(balance)
class(BankAccount), intent(in) :: this
real :: balance
balance = this%balance
end function getBalance
end type BankAccount
end module account_module
ในตัวอย่างข้างต้น เราได้สร้าง Type `Person` และ `BankAccount` พร้อมกับระบุข้อมูลเป็น private และเปิดเผยผ่าน public procedures ซึ่งใช้สำหรับการกำหนดค่าและเข้าถึงข้อมูล
Encapsulation นำไปใช้ได้ในหลายสถานการณ์ เช่นในระบบธนาคารเพื่อควบคุมการเข้าถึงและการแก้ไขยอดเงินในบัญชี หรือในการจัดการข้อมูลพนักงานภายในองค์กร เพื่อปกป้องข้อมูลส่วนตัวจากการเข้าถึงโดยไม่ได้รับอนุญาต
การเรียนรู้และนำไปใช้งาน OOP และ Encapsulation ในภาษา Fortran หรือภาษาโปรแกรมอื่นๆ ไม่เพียงแต่ปรับปรุงคุณภาพของโค้ดที่เราเขียน แต่ยังช่วยให้เราพัฒนาโปรแกรมที่มีความปลอดภัยและง่ายต่อการบำรุงรักษา
ถ้าคุณอยากรู้จักกับ OOP มากขึ้นหรือต้องการพัฒนาทักษะการเขียนโปรแกรมของคุณ อย่าลืมสำรวจคอร์สการเรียนที่ Expert-Programming-Tutor (EPT) ที่พร้อมจะพาคุณไปสู่การเป็นนักพัฒนาที่มีคุณภาพ ในบรรยากาศการเรียนการสอนที่สนุกสนานและตอบโจทย์ความต้องการของคุณ!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: encapsulation oop fortran modules type private_variables public_methods object-oriented_programming programming_principles data_encapsulation fortran_examples real_balance function subroutine bank_account
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM