การใช้งานฟังก์ชัน set และ get ในแนวคิด OOP ของ Node.js
หากคุณกำลังมองหาการเข้าใจอย่างลึกซึ้งเกี่ยวกับ Object-Oriented Programming หรือ OOP ในภาษา Node.js ที่เกี่ยวข้องกับการใช้งานฟังก์ชัน set และ get คุณมาถูกที่แล้ว! ในบทความนี้ เราจะนำพาคุณไปพบกับการใช้งานฟังก์ชันเหล่านี้ในสภาพแวดล้อมของ Node.js และสำรวจถึงการปรับใช้ในโลกจริงง่ายๆ ด้วยตัวอย่างโค้ด 3 ตัวอย่าง และการใช้งานในสถานการณ์ (use case) ที่แตกต่างกัน
ในการเขียนโปรแกรมแบบวัตถุ-อิงการเข้าถึง (OOP), set และ get คือเมทอด (methods) ที่ใช้เพื่อควบคุมการเข้าถึงและการปรับเปลี่ยนค่าของ properties ภายใน object. ฟังก์ชัน get ใช้สำหรับดึงค่าของ property, ในขณะที่ฟังก์ชัน set ใช้เพื่อกำหนดค่าใหม่ให้กับ property นั้นๆ วิธีการนี้ช่วยปกป้องข้อมูลภายใน object จากการถูกเปลี่ยนแปลงจากภายนอกโดยไม่ได้รับอนุญาต และก่อให้เกิดการเขียนโค้ดที่ปลอดภัยและง่ายต่อการบำรุงรักษา
class Person {
constructor(name) {
this._name = name; // ใช้ underscore หน้าชื่อ property เพื่อบ่งบอกการเข้าถึงแบบ private
}
get name() {
return this._name;
}
set name(newName) {
this._name = newName;
}
}
const person = new Person('Somchai');
console.log(person.name); // Somchai
person.name = 'Somsri';
console.log(person.name); // Somsri
ในตัวอย่างนี้, เรามีการสร้าง `class Person` ที่มี property คือ `_name` และมีการใช้งานฟังก์ชัน set และ get เพื่อกำหนดและได้รับค่าของชื่อบุคคล.
class User {
constructor(email) {
this._email = email;
}
get email() {
return this._email;
}
set email(newEmail) {
if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(newEmail)) {
this._email = newEmail;
} else {
throw new Error('Invalid email format');
}
}
}
const user = new User('somchai@example.com');
console.log(user.email); // somchai@example.com
user.email = 'somsri@example.com'; // works fine
user.email = 'not-an-email'; // throws error
ในตัวอย่างนี้, class `User` ทำการตรวจสอบว่า email ที่รับเข้ามามีรูปแบบที่ถูกต้องหรือไม่ก่อนที่จะกำหนดค่าให้กับ property `_email`.
class Rectangle {
constructor(width, height) {
this._width = width;
this._height = height;
}
get area() {
return this._width * this._height;
}
set width(w) {
this._width = w;
}
get width() {
return this._width;
}
set height(h) {
this._height = h;
}
get height() {
return this._height;
}
}
const rectangle = new Rectangle(5, 7);
console.log(rectangle.area); // 35
rectangle.width = 10;
console.log(rectangle.area); // 70
ในตัวอย่างนี้, class `Rectangle` เป็นตัวแทนของรูปสี่เหลี่ยมผืนผ้า โดยเราสามารถคำนวณพื้นที่โดยใช้ get method ของ `area`.
เรามาดูสถานการณ์ที่เราสามารถใช้ฟังก์ชัน set และ get ได้ในโลกของการพัฒนาซอฟต์แวร์จริงๆ กันเถอะ:
1. การจัดการสมาชิกของเว็บไซต์ (User Management):การจัดการข้อมูลผู้ใช้ในระบบอย่างเช่นการตรวจสอบความถูกต้องของอีเมล, ความปลอดภัยของรหัสผ่าน และอื่นๆ เราสามารถใช้ get และ set method กับ class User ในการจัดการข้อมูลเหล่านี้
2. ระบบควบคุมการเข้าถึงข้อมูล (Access Control Systems):ในระบบที่มีการควบคุมการเข้าถึงข้อมูลอย่างเข้มงวด เราสามารถใช้ set method ในการกำหนดข้อมูลและ get method ในการอ่านค่าข้อมูลเฉพาะกับผู้ที่มีสิทธิ์
3. สินค้าในระบบ eCommerce:สกุลรูปแบบของสินค้า อาทิตย์การบ่งบอกข้อมูลของสินค้า (ราคา, คำอธิบาย, สต็อก) และการปรับเปลี่ยนค่าเหล่านี้อย่างปลอดภัยโดยไม่กระทบต่อข้อมูลอื่นๆของระบบ
ในสรุป, การใช้งานฟังก์ชัน set และ get ตามแนวคิด OOP ใน Node.js ช่วยให้เราสามารถเขียนโปรแกรมที่มีความปลอดภัยและดูแลรักษาง่ายขึ้นได้ ทั้งยังช่วยให้เรามีความยืดหยุ่นในการปกป้องข้อมูลภายใน object ของเราได้อีกด้วย
หากคุณต้องการเรียนรู้เพิ่มเติมหรือฝึกฝนการเขียนโปรแกรมแบบ OOP อย่างลึกซึ้ง เราขอชวนคุณเข้ามาศึกษาที่ EPT ที่นี่เรามีคอร์สออนไลน์ที่ครอบคลุมทั้ง Node.js และหลักการ OOP โดยเฉพาะ ทำให้คุณมีพื้นฐานที่แข็งแรงและพร้อมก้าวเข้าสู่อุตสาหกรรมการพัฒนาซอฟต์แวร์ได้อย่างมั่นใจ รออะไร? ติดต่อเราที่ EPT และเริ่มเส้นทางการเป็นนักพัฒนาซอฟต์แวร์อย่างมืออาชีพวันนี้!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM