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
tutorial:oop [2018/12/25 13:49]
admin
tutorial:oop [2019/01/17 07:33] (current)
admin
Line 9: Line 9:
  
 =====OOP มีอะไรบ้าง===== =====OOP มีอะไรบ้าง=====
-โดยทั่วไป หลักการ OOP ในหลายๆภาษาจะคล้ายคลึงกัน แตกต่างกันเพียงแค่ Syntax เท่านั้น โดยหลักการดังกล่าว ​มักจะประกอบด้วยส่วนต่างๆดงต่อไปี้ +โดยทั่วไป หลักการ OOP ในหลายๆภาษาจะคล้ายคลึงกัน โดยหลักการดังกล่าวได้ถูกหลอหลอมรมกันจนลายมาเป็น ​Class และ Object นั่นเอง ​อธิบยไ้แบบสั้นๆง่ายๆดังนี้ (เองจก Class และ Object คล้ายัน ​เนื่องจากเกิดจากการ OOP เหมือัน ​นันจะขอนำแค่ Class มาวอย่)
-====1. Classes and Instances==== +
-หาเรจำเป็นต้องสร้งโค๊เกี่ยวกัอะไรสักอย่างหนึ่ง ​กตวอย่าง เช่น รถยนต์ โดยท่รถยต์ทีเรสรางขึ้นมานั้น มีหลายัน ​งจะลำบาก่ใช่น้อยที่ะต้องมเขียนโค๊ดสำถยนต์เหล่านัไปทีละตวจหมด ปญหาเหล่าี้จะดไป หากเรารู้จกกรเขียน Class และ Object(Instance\\ \\+
  
-**Classes** ​คือ ​ต้นแบบ เปรียบเสมือนการออแบบรถยน์ว่าควรประกบไปดวยคุณสมบัติรบ้าง เช่น โครสร้ง เครื่นต์ ช่าง รบบ่งกำง ตัวง เป็ต้น ทั้งหมดที่กล่าวมานี้ ​ราเียกว่า Property แค่นั้นยม่พอ รถยนตควรจะมีความสามารถไรบง นั่นือ ​ขับได้ ​วิ่งไปมาวยความรวดเ็วได้ เบรคได้ ​ราเรียสิ่งนว่า Method ​+====1. Encapsulation==== 
 +คือ การจำัดกาเข้าึง Field, Method และ Property ​ต่างๆ ขง Class นันๆ เพื่อไม่ใหเกิดกรียกใงานจากภายนอกอย่ไมเหมาะสม ารจดการเข้านที่นี้คือารใส่ Access Specifier เหล่านี้ ​คือ Private, Protected, Public และ Published สำหรับรายละียดสมารถอได้จากหวขอถป  
 +====2. Inheritance==== 
 +คือ การถ่าทอด สืบต่อ เช่น Class B สืบ่อความสามาถมาจาก Class A จะทำให้ ​ Class B สาารถทำทุกอย่างท่ Class A ทำได้  
 +====3. Polymorphism==== 
 +คือ การเปลี่ยนรูปร่าง เช่น หาก Class B สืบต่อความสามารถมาจาก Class A จทำให้ Class B ถูกมอาเป็น Class B หรือ ​Class A ก็ได้ในขณะเียกัน 
 +====4. Overriding==== 
 +คือ การปรับเปลี่น เช่น หาก Class B สืบต่อความสามาถมาจาก Class A แล้ว สำหบ Class B เาสามารถปรับเปลี่ยนวามสามารถที่ได้รับมาจาก ​Class A เพือให้ทำไดเหมะสมขึ้น
  
-**Objects (Instances)** คือ ผลิตภัณท์ที่เกิดจากต้นแบบ (Class) เช่น เราผลิตรถยนต์ขึ้นมาใช้งานจริง 5 คัน ซึ่งใน 5 คันนี้ อาจมี Property ที่ต่างกันไป ​ แต่ทุกคันมี Method ที่เหมือนกัน เราเรียกรถยนต์เหล่านี้ว่า Object หรือ Instance เป็นต้น แต่เนื่องจากคำว่า Object มีใช้ในภาษา Pascal เช่นกัน และเป็นคำเฉพาะซึ่งหมายถึงการสร้างวัตถุที่เป็นต้นแบบขึ้นมาเหมือนกัน (คล้าย Class) ดังนั้นต่อไปนี้จะขอใช้คำว่า Instance แทน 
  
-**__หมายเหตุ__** - **Object** สำหรับภาษา Pascal หมายถึงการสร้างวัตถุที่มีทั้งคุณสมบัติ (Property) และกระบวนการ (method) เหมือนกันกับ Class เพียงแต่ Class นั้นเพิ่งเกิดมาในภายหลัง ทั้งคู่มีความแตกต่างกันในเรื่องของการเรียกใช้งาน โดย Object จะคล้ายกับ Record ที่มี Property กับ Method นั่นเอง หรือ ที่เรียกว่า Advance Record \\ 
-ในโปรแกรม Turbo Pascal สมัยก่อน Object ถูกใช้ทำหน้าที่เหมือนกันกับ Class ในสมัยนี้ ​ แต่ต่อมาภายหลัง เมื่อมีการเปิดตัว Delphi จึงได้มีการคิดค้น Class ขึ้นมาเพื่อใช้งานแทน Object แต่อย่างไรก็ตาม Object ก็ยังเป็นที่นิยมใช้กันมาปกติจนถึงปัจจุบัน 
-สิ่งที่แต่ต่างกัน ระหว่าง Class กับ Object คือ 
-  *Object ใช้หน่วยความจำแบบ Stack ส่วน Class ใช้หน่วยความจำแบบ Heave นั่นทำให้ทุกครั้งที่มีการสร้าง Instance จาก Class ขึ้นมาใช้งาน จำเป็นต้องมีการกำจัด Instance เมื่อใช้งานเสร็จเสมอ เพื่อไม่ให้เกิดปัญหา Memory Leak 
-  *Object ใช้การอ้างอิงตัวแปรแบบ Value ส่วน Class ใช้การอ้างอิงตัวแปรแบบ Reference เพื่อให้เห็นภาพ ขอยกตัวอย่าง หากให้ A,B เป็น Object เมื่อใช้คำสั่ง B:=A ; จะหมายถึง มี B เกิดขึ้นมาอีกหนึ่งตัวซึ่งเกิดจากการคัดลอก A ผลก็คือหากเราทำอะไรกับ B ก็จะไม่ส่งผลกับ A เพราะเป็นคนละตัวกัน แต่หากเราให้ A,B เป็น Instance ของ Class เมื่อใช้คำสั่ง B:=A ; จะกลายเป็นว่า B อ้างอิงไปที่ A ไม่ได้เกิดการคัดลอกใดๆ ทีนี้หากเราทำการเปลี่ยนแปลง B จะหมายถึงการเปลี่ยนแปลง A ด้วยเช่นกัน 
- 
-=== 1.1 Class === 
-การสร้าง Class เริ่มต้น ทำได้ดังนี้ 
- 
-  Type 
-     ​TMyClass = class 
-       ​Item:​integer;​ 
-       ​Procedure DoSomething; ​     
-     end; 
- 
-การสร้าง Class ต่อจาก Class อื่น หรือเรียกว่าการสืบทอด (Inheritance) ทำได้ดังนี้ 
- 
-  Type 
-     ​TMyClass = class(TBaseClass) 
-       ​Item:​integer;​ 
-       ​Procedure DoSomething; ​     
-     end; 
- 
-องค์ประกอบของ Class แบบละเอียด มีดังนี้ 
- 
-<sxh delphi;> 
-Type 
-  TMyItem = class(TPersistent);​ 
-   ​private 
-     ​FName:​string;​ 
-     ​FValue:​integer; ​ 
-     ​function GetIsOK:​boolean;  ​ 
-   ​protected 
-     ​procedure DoSomeThing1; ​ 
-     ​procedure DoSomeThing2;​ virtual; 
-   ​public 
-     ​constructor Create; override; 
-     ​destructor Destroy; override; 
-     ​procedure Assign(Source:​ TPersistent);​ override; 
-     ​property IsOK:​boolean read GetIsOK;  ​ 
-   ​published 
-     ​property Name:string read FName write FName; 
-     ​property Value:​integer read FValue write FValue default 0; 
-</​sxh>​ 
- 
-**Ancestor Class** หรือ **Super Class** คือ class ต้นแบบ จากตัวอย่าง คือ TPersistent ​ 
-\\ 
-**Field Parameters** คือ ส่วนที่ถูกประกาศเป็นตัวแปรคล้ายกับการประกาศ var จากตัวอย่างข้างบน คือ FName และ FValue ตัวแปรเหล่านี้มักถูกประกาศเพื่อใช้เก็บค่าสำหรับ Property ​ 
-\\ 
-**Constructor and Destructor** คือ Procedure ชนิดหนึ่ง แต่มีความสำคัญต่อ class มาก จึงต้องเขียนให้มีชื่อเฉพาะเป็นของตนเอง Constructor จะที่ถูกเรียกเพื่อใช้สร้าง Instance เพื่อทำการจัดสรรหน่วยความจำให้เหมาะสม ส่วน Destructor จะถูกเรียกเพื่อทำลาย Instance แล้วคืนหน่วยความจำ\\ 
-**Properties** คือคุณสมบัติของ Instance โดยทั่วไป Property จะประกอบไปด้วย Getter (คำสั่งหลัง read) และ Setter (คำสั่งหลัง write) 
-**Access Modifiers** คือ คำเหล่านี้ private, protected, public และ published 
- 
-====2. Encapsulation==== 
-====3. Inheritance==== 
-====4. Polymorphism==== 
-====5. Overriding==== 
-====6. Overloading==== 
tutorial/oop.1545720563.txt.gz · Last modified: 2018/12/25 13:49 by admin