User Tools

Site Tools


tutorial:oop

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
tutorial:oop [2018/12/26 10:34]
admin
tutorial:oop [2019/01/05 14:09]
admin
Line 9: Line 9:
  
 =====OOP มีอะไรบ้าง===== =====OOP มีอะไรบ้าง=====
-โดยทั่วไป หลักการ OOP ในหลายๆภาษาจะคล้ายคลึงกัน แตกต่างกันเพียงแค่ Syntax เท่านั้น โดยหลักการดังกล่าว มกจอบได้วย่ว่าๆดัง่อไป+โดยทั่วไป หลักการ OOP ในหลายๆภาษาจะคล้ายคลึงกัน โดยหลักการดังกล่าวได้ถูกหล่อหลอมรวมกันนกลายมาเ็น Class และ Object นั่นเง อธิายได้แบบั้ๆง่าๆดังนี้ (เนื่องจาก Class และ Object คล้ายกัน เนื่องจากเกิดมาจากหลักการ OOP เหมือนกัน ดังนันจะขอนำแค่ Class มายกตัวอย่าง)
  
 ====1. Encapsulation==== ====1. Encapsulation====
 +คือ การจำกัดการเข้าถึง Field, Method และ Property ต่างๆ ของ Class นั้นๆ เพื่อไม่ให้เกิดการเรียกใช้งานจากภายนอกอย่างไม่เหมาะสม การจำกัดการเข้าถึงในที่นี้คือการใส่ Access Specifier เหล่านี้ คือ Private, Protected, Public และ Published สำหรับรายละเอียดสามารถอ่านได้จากหัวข้อถัดไป ​
 ====2. Inheritance==== ====2. Inheritance====
 +คือ การถ่ายทอด สืบต่อ เช่น Class B สืบต่อความสามารถมาจาก Class A จะทำให้ ​ Class B สามารถทำทุกอย่างที่ Class A ทำได้ ​
 ====3. Polymorphism==== ====3. Polymorphism====
 +คือ การเปลี่ยนรูปร่าง เช่น หาก Class B สืบต่อความสามารถมาจาก Class A จะทำให้ Class B ถูกมองว่าเป็น Class B หรือ Class A ก็ได้ในขณะเดียวกัน
 ====4. Overriding==== ====4. Overriding====
-อย่างไรตาม สิ่งที่กล่าวมาเล่นี้ ได้ถูใส่้ามาใน Class และ Object เรียบรอยแล้ว+คือ การปรับเปลี่น เชน หาก ​Class B สืบ่อความสามารถมาจาก Class A แว สำหรับ Class B เราสามารถปรับความสามารถทได้รับมาจาก Class A พื่อใหทำงนได้เหมาะสมขึน 
 \\ \\
 +----
 +======Class and Object======
 +Class และ Object คือ ผลิตผลจากการนำ OOP มาประยุกต์ใช้ ทั้งคู่มีความคล้ายคลึงกันมาก รูปแบบในการสร้าง Class และ Object มีดังนี้
 +
 +
 +  Type
 +     ​TMyClass = class
 +       ​Item:​integer;​
 +       ​Procedure DoSomething; ​    
 +     end;
 +
 +  Type
 +     ​TMyObject = object
 +       ​Item:​integer;​
 +       ​Procedure DoSomething; ​    
 +     end;
 +     
 +จริงๆแล้ว ทั้งสองอย่างนี้มีข้อแตกต่างกันอยู่ และถูกใช้งานต่างกัน แต่จะขอพูดถึงรายละเอียดของ Object ก่อน ว่าสามารถทำอะไรได้บ้าง จากนั้นจึงโยงไปสู่รายละเอียดของ Class ในภายหลัง
 +
 +=====Object=====
 +Object เป็น Structural Type คล้ายกันกับ Record เพียงแต่มี Property และ Method เพิ่มเข้ามา และรองรับหลักการ OOP ที่กล่าวมาแล้วข้างต้นทั้งหมด Object ถือกำเนิดขึ้นมาก่อนตั้งแต่สมัยของ Turbo Pascal ต่อมาภายหลัง เมื่อมีการสร้าง Delphi ขึ้นมาใช้แทน เป็นเหตุให้มีการคิดค้น Class ขึ้นมาใช้งานด้วยเช่นกัน ​
 +
 +อย่างไรก็ตาม Class ยังมีข้อแตกต่างกัน
  
-=====Classes and Instances===== +=====Class===== 
-หากเราจำเป็นต้องสร้างโค๊ดเกี่ยวกับอะไรสักอย่างหนึ่ง ยกตัวอย่าง เช่น รถยนต์ โดยที่รถยนต์ที่เราจะสร้างขึ้นมานั้น มีหลายคัน คงจะลำบากไม่ใช่น้อยที่จะต้องมาเขียนโค๊ดสำหรับรถยนต์เหล่านั้นไปทีละตัวจนหมด ปัญหาเหล่านี้จะหมดไป หากเรารู้จักการเขียน Class และ Object(Instance) ​\\ \\+หากเราจำเป็นต้องสร้างโค๊ดเกี่ยวกับอะไรสักอย่างหนึ่ง ยกตัวอย่าง เช่น รถยนต์ โดยที่รถยนต์ที่เราจะสร้างขึ้นมานั้น มีหลายคัน คงจะลำบากไม่ใช่น้อยที่จะต้องมาเขียนโค๊ดสำหรับรถยนต์เหล่านั้นไปทีละตัวจนหมด ปัญหาเหล่านี้จะหมดไป หากเรารู้จักการเขียน Class \\ \\
  
-**Classes** คือ ต้นแบบ เปรียบเสมือนการออกแบบรถยนต์ว่าควรประกอบไปด้วยคุณสมบัติอะไรบ้าง เช่น โครงสร้าง เครื่องยนต์ ช่วงล่าง ระบบส่งกำลัง ตัวถัง เป็นต้น ทั้งหมดที่กล่าวมานี้ เราเรียกว่า Property แค่นั้นยังไม่พอ รถยนต์ควรจะมีความสามารถอะไรบ้าง นั่นคือ ขับได้ วิ่งไปมาด้วยความรวดเร็วได้ เบรคได้ เราเรียกสิ่งนี้ว่า Method ​+**Class** คือ ต้นแบบ เปรียบเสมือนการออกแบบรถยนต์ว่าควรประกอบไปด้วยคุณสมบัติอะไรบ้าง เช่น โครงสร้าง เครื่องยนต์ ช่วงล่าง ระบบส่งกำลัง ตัวถัง เป็นต้น ทั้งหมดที่กล่าวมานี้ เราเรียกว่า Property แค่นั้นยังไม่พอ รถยนต์ควรจะมีความสามารถอะไรบ้าง นั่นคือ ขับได้ วิ่งไปมาด้วยความรวดเร็วได้ เบรคได้ เราเรียกสิ่งนี้ว่า Method ​
  
-**Objects (Instances)** คือ ผลิตภัณท์ที่เกิดจากต้นแบบ (Class) เช่น เราผลิตรถยนต์ขึ้นมาใช้งานจริง 5 คัน ซึ่งใน 5 คันนี้ อาจมี Property ที่ต่างกันไป ​ แต่ทุกคันมี Method ที่เหมือนกัน เราเรียกรถยนต์เหล่านี้ว่า Object หรือ Instance เป็นต้น แต่เนื่องจากคำว่า Object มีใช้ในภาษา Pascal เช่นกัน และเป็นคำเฉพาะซึ่งหมายถึงการสร้างวัตถุที่เป็นต้นแบบขึ้นมาเหมือนกัน (คล้าย Class) ดังนั้นต่อไปนี้จะขอใช้คำว่า Instance แทน+**Instance** คือ ผลิตภัณท์ที่เกิดจากต้นแบบ (Class) เช่น เราผลิตรถยนต์ขึ้นมาใช้งานจริง 5 คัน ซึ่งใน 5 คันนี้ อาจมี Property ที่ต่างกันไป ​ แต่ทุกคันมี Method ที่เหมือนกัน เราเรียกรถยนต์เหล่านี้ว่า Object หรือ Instance เป็นต้น แต่เนื่องจากคำว่า Object มีใช้ในภาษา Pascal เช่นกัน และเป็นคำเฉพาะซึ่งหมายถึงการสร้างวัตถุที่เป็นต้นแบบขึ้นมาเหมือนกัน (คล้าย Class) ดังนั้นต่อไปนี้จะขอใช้คำว่า Instance แทน
  
 **__หมายเหตุ__** - **Object** สำหรับภาษา Pascal หมายถึงการสร้างวัตถุที่มีทั้งคุณสมบัติ (Property) และกระบวนการ (method) เหมือนกันกับ Class เพียงแต่ Class นั้นเพิ่งเกิดมาในภายหลัง โดย Object จะคล้ายกับ Record ที่มี Property กับ Method นั่นเอง หรือ ที่เรียกว่า Advance Record \\ **__หมายเหตุ__** - **Object** สำหรับภาษา Pascal หมายถึงการสร้างวัตถุที่มีทั้งคุณสมบัติ (Property) และกระบวนการ (method) เหมือนกันกับ Class เพียงแต่ Class นั้นเพิ่งเกิดมาในภายหลัง โดย Object จะคล้ายกับ Record ที่มี Property กับ Method นั่นเอง หรือ ที่เรียกว่า Advance Record \\
tutorial/oop.txt · Last modified: 2019/01/17 07:33 by admin