# ความสำคัญของ Encapsulation ใน OOP ผ่านตัวอย่างภาษา Haskell
Encapsulation เป็นหนึ่งในคุณลักษณะหลักของการเขียนโปรแกรมแบบวัตถุ-จัดเรียง (Object-Oriented Programming - OOP) ที่ช่วยให้กลไกภายในของวัตถุ (object) นั้นถูกซ่อนอยู่ด้านใน หมายความว่าการเข้าถึงข้อมูลภายในวัตถุควรจะดำเนินการผ่านเมธอด (methods) ที่ถูกกำหนดไว้เท่านั้น ซึ่งช่วยปกป้องข้อมูลไม่ให้เกิดการเปลี่ยนแปลงจากภายนอกอย่างไม่เหมาะสม และยังช่วยรักษาความปลอดภัยได้ดีอีกด้วย
Haskell เป็นภาษาโปรแกรมที่เน้นการเขียนแบบฟังก์ชัน (Functional Programming - FP) ซึ่งบางครั้งก็ถูกมองว่าไม่มีความเกี่ยวข้องกับ OOP อย่างไรก็ตาม Haskell มีความสามารถในการจำลองแนวคิดของ OOP ได้เช่นกัน การ encapsulation ใน Haskell จึงสามารถทำได้โดยใช้ฟังก์ชันและประเภทข้อมูลเพื่อซ่อนรายละเอียดการทำงานภายใน
ตัวอย่างที่ 1: สร้าง Module กับ Data Type
module BankAccount (BankAccount, getBalance, deposit, withdraw) where
data BankAccount = BankAccount { balance :: Double } deriving (Show)
getBalance :: BankAccount -> Double
getBalance (BankAccount balance) = balance
deposit :: Double -> BankAccount -> BankAccount
deposit amount acc = acc { balance = balance acc + amount }
withdraw :: Double -> BankAccount -> Maybe BankAccount
withdraw amount acc =
if amount > balance acc
then Nothing
else Just $ acc { balance = balance acc - amount }
ตัวอย่างที่ 2: ใช้งาน Module
import BankAccount
main = do
let account = BankAccount 1000
print $ getBalance account
let accountAfterDeposit = deposit 500 account
print $ getBalance accountAfterDeposit
let accountAfterWithdraw = withdraw 200 accountAfterDeposit
case accountAfterWithdraw of
Just acc -> print $ getBalance acc
Nothing -> putStrLn "Cannot withdraw this amount."
ตัวอย่างที่ 3: ซ่อนการทำงานด้วย Record Syntax
module Person (Person, mkPerson, setName, getName) where
data Person = P { name :: String } -- 'P' and 'name' are not exported
mkPerson :: String -> Person
mkPerson n = P { name = n }
getName :: Person -> String
getName (P p) = name p
setName :: String -> Person -> Person
setName n (P p) = P { name = n }
ในโลกจริง, การ encapsulation สามารถใช้ในระบบจัดการพนักงานได้ เช่น การจัดเก็บข้อมูลส่วนตัวและค่าเหนื่อยของพนักงาน ซึ่งต้องการการคุ้มครองเพื่อไม่ให้ข้อมูลเหล่านั้นถูกเข้าถึงหรือแก้ไขโดยไม่มีสิทธิ์
การใช้การ encapsulate ข้อมูลในงานเขียนซอร์สโค้ดทำให้โค้ดเรามีความปลอดภัย กิจกรรมเหล่านี้เป็นสิ่งที่เราที่ EPT (Expert-Programming-Tutor) ให้ความสำคัญและสอนให้กับนักเรียนของเรา เราเชื่อว่าการเรียนรู้แนวคิดเหล่านี้จะช่วยให้นักเรียนสามารถพัฒนาแอปพลิเคชันโดยใช้ Haskell หรือภาษาโปรแกรมอื่นๆ ได้แบบมืออาชีพ
หากคุณสนใจที่จะปรับปรุงหรือเรียนรู้เพิ่มเติมเกี่ยวกับแนวคิดของการเขียนโปรแกรมแบบวัตถุ-จัดเรียง จงลังเวลาที่ EPT ไม่เพียงแต่เราจะช่วยให้คุณเข้าใจแนวคิดเหล่านี้อย่างลึกซึ้ง เรายังมีความเชี่ยวชาญในการนำเสนอตัวอย่างใช้งานจริงที่สามารถนำไปใช้ได้จริงในโลกของการทำงาน หลังจากที่คุณจบการเรียนการสอนที่นี่แล้ว คุณจะพร้อมที่จะเดินหน้าในอาชีพการเป็นนักพัฒนาซอฟต์แวร์ได้อย่างมั่นใจ
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: encapsulation oop haskell functional_programming module data_type record_syntax bankaccount person getbalance deposit withdraw mkperson setname getname
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM