> For the complete documentation index, see [llms.txt](https://www.saladpuk.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.saladpuk.com/beginner-1/oop/abs-n-enc.md).

# Abstraction & Encapsulation

หลังจากที่เข้าใจหลักการของ **Abstraction** กับ **Encapsulation** กันไปเรียบร้อยแล้ว ดังนั้นเรามาสรุปความเข้าใจเจ้า 2 ตัวนี้ก่อนว่ามันเกี่ยวเนื่องกันยังไง

## 🔥 **Abstraction**

> เป็นการแปลงโจทย์ให้เป็น **Models** เพื่อให้เราเอาไปเขียนโค้ดต่อ

![](/files/-M-ZPtcxY1Aj4Zw-ylEd)

## 🔥 **Encapsulation**

> เป็นการ **ควบคุมสิทธิ์** และทำให้ของต่างๆทำงานร่วมกัน

![https://www.scientecheasy.com/2018/06/encapsulation-in-java-real-time-examples-advantages.html](/files/-LvAGsst7RsDTJixGDJl)

## 💖 Abstraction + Encapsulation

เมื่อเราเอาทั้ง 2 แนวคิดนี้มารวมกัน เราจะได้ **Models ที่มีการควบคุมสิทธิ์ในการเข้าใช้งาน** นั่นเอง ซึ่งประโยชน์ที่เราจะได้ก็คือ Model ของเราจะเป็น **Component ที่สามารถเอาไปใช้งานได้** โดยที่คนอื่นไม่จำเป็นต้องสนใจเลยว่าจริงๆมันทำงานยังไง ยกตัวอย่างเช่น **ทีวี**

![iconarchive.com](/files/-LugdGDeuoky9nXVX1y_)

เมื่อไหร่ก็ตามที่เราอยากดูทีวี เราก็แค่เดินมา**กดปุ่มเปิด**แค่นั้นเราก็สามารถใช้งานทีวีได้แล้ว โดยที่เราไม่จำเป็นต้องรู้เลยว่าจริงๆของข้างในมันทำงานยังไง มันถึงแสดงภาพให้เราเห็นได้

เมื่อมองย้อนกลับมาเราจะเห็นว่าทีวีมันมีความเป็น **Abstraction** ก็คือเราสามารถใช้งานมันได้โดยที่ไม่จำเป็นต้องรู้ว่าภายในมันทำงานยังไง และในแง่ของ **Encapsulation** มันก็ซ่อนวงจรต่างๆไว้ภายในไม่ให้เราต้องไปรับรู้ แต่ถ้าเราอยากเชื่อมทีวีกับของอย่างอื่น เช่นลำโพง เขาก็จะมีช่องด้านหลังทีวีให้เราไปจิ้มใช้งานกับเขาได้เลย เพราะเขาเปิดมันให้เราใช้งานได้แค่นั้น ส่วนในแง่ของ **Component** นั้นจะเห็นว่าทีวีที่มันสมบูรณ์แบบในตัวมันเอง เรามีหน้าที่ใช้มันก็พอ ดังนั้นเราก็สามารถนำทีวี ไปใช้งานร่วมกับ Component อื่น เช่น ต่อ AppleTv ต่อลำโพง ต่อเครื่องเกม Nintendo, Xbox, PS4 เข้าไปก็จะสามารถทำงานร่วมกันของอื่นๆได้ทันทีเลย

## 🎯 บทสรุป

Models ที่ดีจะต้องมีการทำ Abstraction เพื่อให้มันใช้งานได้ง่าย แต่จะต้องคิดถึง Sensitive Data ด้วย ดังนั้นเราก็ต้องนำหลักของ Encapsulation เข้ามาร่วมในการออกแบบด้วยนั่นเอง
