การเขียนโปรแกรมในแบบ Object-Oriented Programming (OOP) นั้นได้รับความนิยมอย่างมากในโลกของการพัฒนาซอฟต์แวร์ เนื่องจากโมเดลนี้ช่วยให้การเขียนโค้ดเป็นไปอย่างเป็นระเบียบ และยังสามารถนำไปใช้ซ้ำ (reuse) ได้อีกด้วย ภาษาการเขียนโปรแกรมหลายภาษาได้รวมเอาแนวคิดนี้ไว้ในการออกแบบ ซึ่งหนึ่งในนั้นก็คือภาษา ABAP ที่ใช้ในระบบ SAP
ABAP, หรือ Advanced Business Application Programming, เป็นภาษาที่ถูกพัฒนาโดย SAP สำหรับการพัฒนาแอปพลิเคชั่นบนระบบ SAP ERP ซึ่ง ABAP ก็ได้รับการพัฒนามาเพื่อสนับสนุน OOP ทำให้นักพัฒนาสามารถสร้างโปรแกรมที่มีโครงสร้างที่แข็งแกร่งและง่ายต่อการบำรุงรักษา ดังนั้น หากคุณกำลังหาโอกาสที่จะเรียนรู้โปรแกรมมิ่งสไตล์ OOP ที่ EPT คุณจะได้พบกับกรณีศึกษาและตัวอย่างที่นำไปใช้งานได้จริงโดยทีมผู้เชี่ยวชาญ
ลองมาดูตัวอย่างการใช้งาน OOP ใน ABAP ด้วยตัวอย่าง CODE ง่ายๆ สามตัวอย่าง พร้อมทั้งอธิบายการทำงานของมัน:
1. การสร้างคลาสและการสืบทอด (Inheritance)
CLASS person DEFINITION PUBLIC CREATE PUBLIC.
PUBLIC SECTION.
DATA: name TYPE string,
age TYPE i.
METHODS: constructor IMPORTING i_name TYPE string
i_age TYPE i,
display_data.
ENDCLASS.
CLASS person IMPLEMENTATION.
METHOD constructor.
name = i_name.
age = i_age.
ENDMETHOD.
METHOD display_data.
WRITE: / 'Name:', name, 'Age:', age.
ENDMETHOD.
ENDCLASS.
CLASS employee DEFINITION INHERITING FROM person PUBLIC CREATE PUBLIC.
PUBLIC SECTION.
DATA: position TYPE string.
METHODS: constructor IMPORTING i_name TYPE string
i_age TYPE i
i_position TYPE string,
display_data REDEFINITION.
ENDCLASS.
CLASS employee IMPLEMENTATION.
METHOD constructor.
super->constructor( i_name = i_name i_age = i_age ).
position = i_position.
ENDMETHOD.
METHOD display_data.
WRITE: / 'Name:', name, 'Age:', age, 'Position:', position.
ENDMETHOD.
ENDCLASS.
ตัวอย่างนี้แสดงถึงคลาส `person` ซึ่งมีคลาสลูกชื่อ `employee` ที่สืบทอดคุณสมบัติมาจากคลาสแม่ ในที่นี้ คลาส `employee` ได้สร้างเมธอดใหม่ที่มีชื่อเดียวกันกับคลาส `person` แต่มีการเพิ่มการทำงานเพิ่มเติมมาด้วย คือการแสดงตำแหน่งงาน (position)
2. การใช้งาน Polymorphism
" รหัสนี้เป็นต่อจากตัวอย่างที่ 1
DATA albert TYPE REF TO person.
DATA bert TYPE REF TO employee.
CREATE OBJECT albert
EXPORTING
i_name = 'Albert'
i_age = 30.
CREATE OBJECT bert
EXPORTING
i_name = 'Bert'
i_age = 35
i_position = 'Manager'.
albert->display_data().
bert->display_data().
ในตัวอย่างนี้ คุณจะเห็นการเปรียบเทียบการทำงานของพนักงานสองคน ที่มีความสามารถในการแสดงข้อมูลเฉพาะของตัวเอง แม้ว่าเราจะกำหนดประเภทของตัวแปรที่เก็บวัตถุให้เป็น `person` แต่เนื่องจาก `bert` เป็นตัวแปรประเภท `employee` ที่สืบทอดมาจาก `person` มันจึงสามารถใช้เมธอด `display_data` ที่ถูก override ได้
3. การใช้ Interface
INTERFACE i_printable.
METHODS: print.
ENDINTERFACE.
CLASS report DEFINITION PUBLIC CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES: i_printable.
METHODS: constructor IMPORTING i_title TYPE string,
print REDEFINITION.
PRIVATE SECTION.
DATA: title TYPE string.
ENDCLASS.
CLASS report IMPLEMENTATION.
METHOD constructor.
title = i_title.
ENDMETHOD.
METHOD i_printable~print.
WRITE: / 'Printing Report:', title.
ENDMETHOD.
ENDCLASS.
ในตัวอย่างนี้ โชว์ให้เห็นว่า Interface นั้นเหมือนเป็น 'สัญญา' ที่บังคับให้คลาสที่ implement มันต้องมีเมธอดหรือการทำงานที่กำหนดไว้ใน Interface เมื่อคลาส `report` ได้ทำการ implement `i_printable` มันก็ต้องมีเมธอด `print` ตามที่ interface นั้นกำหนด
ในการใช้งานจริง, OOP ใน ABAP จะมีความสำคัญมาก เช่น ในการพัฒนาแอปพลิเคชั่นที่มีความซับซ้อนในระบบ SAP ERP การทำให้โค้ดสามารถนำมารีไซเคิลและดูแลรักษาได้ง่าย นอกจากนี้ยังช่วยในการกำหนดความสัมพันธ์ระหว่างวัตถุที่แตกต่าง และการจัดการกับ polymorphism ในการบริการธุรกิจมากมาย ที่ EPT เรามุ่งมั่นที่จะให้ความรู้และประสบการณ์ทางการเขียนโปรแกรมที่ครอบคลุมสิ่งเหล่านี้ หากคุณรู้สึกทึ่งกับการได้เห็นพลังของ OOP ใน ABAP และต้องการทำความเข้าใจมันอย่างลึกซึ้งยิ่งขึ้น อย่าลังเลที่จะเริ่มเรียนรู้เส้นทางของการเป็นนักพัฒนา SAP มืออาชีพที่ EPT กับเราสิคะ!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: oop object-oriented_programming abap sap inheritance polymorphism interface class code_example use_case programming_paradigm sap_erp software_development ept development_best_practices
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM