แนวคิดการเขียนโปรแกรมเชิงวัตถุของ Delphi
หลิว อี้จู
คำนำ
ครั้งแรกที่ฉันรู้จัก Delphi ไม่ใช่เพราะซอฟต์แวร์ Delphi ของ Borland แต่เป็นเพราะฉันอ่านคำนี้ในผลงานคลาสสิกของ Plato เรื่อง "Plato's Dialogues"
เพื่อนของฉันไป
เดลฟีคือที่ซึ่งเทพพยากรณ์ เทพเจ้าแห่งคำทำนายอาศัยอยู่ "บทสนทนาของเพลโต" บันทึกว่าเพื่อนของโสกราตีสไปที่เดลฟีเพื่อถามไพเธียน เทพีแห่งคำทำนาย ซึ่งเป็นบุคคลที่ฉลาดที่สุด ชาวไพเธียนกล่าวว่าไม่มีใครฉลาดกว่าโสกราตีส โสกราตีสรู้สึกงุนงงอย่างยิ่งเพราะเขาพบว่าตัวเองถูกรายล้อมไปด้วยนักการเมือง กวี นักปรัชญา และศิลปิน “ผู้เชี่ยวชาญ” และ “เจ้าหน้าที่” เหล่านี้ฉลาดกว่าไม่ใช่หรือ? ฉันแย่กว่าพวกเขามาก
โสกราตีสไปเยี่ยม "ผู้เชี่ยวชาญ" และ "ผู้มีอำนาจ" เหล่านี้ทีละคน แต่พบว่าพวกเขามักจะคิดว่าตนเองชอบธรรม หลอกลวงตนเอง และแสร้งทำเป็นรู้สิ่งที่พวกเขาไม่เข้าใจ ในระหว่างการเยือน โสกราตีสยังค้นพบว่าเขามีความรู้น้อยมากในหลายๆ ด้าน แต่โสกราตีสไม่ได้แสร้งทำเป็นเข้าใจ เขาสารภาพว่าตนไม่รู้ นี่คือสิ่งที่ Pythian เทพีแห่งคำทำนายเรียกว่า "ปัญญา" ที่แท้จริง
อันที่จริง ภูมิปัญญาประเภทนี้ไม่ได้ถูกเสนอครั้งแรกโดยชาวกรีกโบราณ นานก่อนโสกราตีส Lao Tzu ในประเทศของเราได้สรุปไว้แล้ว ในเต๋าเต๋อจิงกล่าวไว้ว่า "ผู้ที่รู้จักผู้อื่นก็ฉลาด และผู้ที่รู้จักตนเองก็ฉลาด" นี่แหละความหมาย
ตอนนี้ Delphi ที่เราใช้นั้นเป็นภาษาโปรแกรมและเครื่องมือพัฒนาซอฟต์แวร์ที่ยอดเยี่ยมอยู่แล้ว อย่างไรก็ตาม เมื่อต้องเผชิญกับเดลฟีที่ลึกซึ้งและพัฒนาอย่างต่อเนื่อง เรายังรู้น้อยมากเกี่ยวกับหลาย ๆ ด้าน แต่เมื่อเรียนรู้และใช้เดลฟี เรามีทัศนคติในการรู้ตนเองของโสกราตีสและปัญญาในการรู้ทุกสิ่งด้วยหรือไม่?
มีเพื่อนๆ มากมายที่เลือก Delphi ความคิดแรกๆ อาจเป็นเพราะ Delphi ทรงพลัง เรียนรู้และใช้งานง่าย พวกเขาอ้างว่ามีความเชี่ยวชาญใน Delphi ภายในสามเดือน และกล้าที่จะพัฒนาซอฟต์แวร์อย่างอิสระภายในครึ่งปี สิ่งที่พวกเขาทำได้ก็แค่ลากและวางการควบคุมเท่านั้น เมื่อพวกเขามึนเมาจากโปรแกรมของตัวเอง จริงๆ แล้วพวกเขาจะมึนเมาโดยภูมิปัญญาอันประณีตของ Delphi และการควบคุมของผู้อื่น โปรแกรมเมอร์ Delphi ประเภทนี้มักเรียกกันว่า "ผัดวันประกันพรุ่ง" โดยผู้อื่น แต่ดูเหมือนพวกเขาจะถือว่าตัวเองเป็นปรมาจารย์ของเดลฟี
มีเพื่อนหลายคนที่เลิกใช้ Delphi ความคิดแรกอาจเป็นเพราะพวกเขาคิดว่า Delphi เป็นเพียงเครื่องมือ RAD ที่คล้ายกับ VB ในมุมมองของพวกเขา Delphi เป็นเพียงการควบคุมการเขียนโปรแกรมและไม่สามารถใช้ OOP เช่น C++ หรือ Java ได้อย่างแท้จริง พวกเขาสงสัยว่า Delphi มีคุณลักษณะของภาษาโปรแกรมเชิงวัตถุหรือไม่ และจะสามารถใช้เทคโนโลยีเชิงวัตถุ เช่น ความหลากหลายและรูปแบบได้หรือไม่ ในสายตาของพวกเขา เฉพาะผู้ที่ใช้ C++ หรือ Java เท่านั้นที่เป็นผู้เชี่ยวชาญที่แท้จริง
แล้วอาจารย์ที่แท้จริงคืออะไร และเราจะเป็นหนึ่งเดียวกันได้อย่างไร?
ก่อนอื่น เรามาดูกันว่าปรมาจารย์ศิลปะการต่อสู้คืออะไร บางทีเราอาจได้รับแรงบันดาลใจจากมัน
ใครก็ตามที่รักศิลปะการต่อสู้หรือนิยายศิลปะการต่อสู้จะรู้ดีว่ามีสองวิธีในการฝึกฝนศิลปะการต่อสู้: การฝึกอบรมภายนอกและการฝึกอบรมภายใน การฝึกหมัด เตะและอาวุธภายนอก คุณภาพของหมัดและเตะและอาวุธเป็นกุญแจสำคัญ การฝึกพลังชี่ภายใน การฝึกขัดเกลาพลังชี่ การฝึกจิตวิญญาณ และการคืนความอ่อนแอเป็นรากฐาน ความแตกต่างที่ใหญ่ที่สุดระหว่างวิธีการเพาะปลูกทั้งสองวิธีนี้อยู่ที่ความสัมพันธ์เชิงหน้าที่ระหว่างเวลาและทักษะ ดังแสดงในรูปที่ 1 ในแง่ของคนธรรมดา ในช่วงสามปีแรก ผู้ที่ฝึกฝนทักษะภายนอกสามารถเอาชนะผู้ที่ฝึกฝนทักษะภายในได้อย่างง่ายดาย ในปีที่ 10 ทั้งสองฝ่ายจะทำได้เพียงเสมอกันหลังจาก 15 ปี ไม่ว่าคุณจะฝึกฝนทักษะภายนอกอย่างไร คุณจะไม่สามารถแข่งขันกับผู้ที่ฝึกฝนทักษะภายในได้ 20 ปีต่อมา ปรมาจารย์ด้านทักษะภายในก็อยู่ยงคงกระพันในโลก เหตุผลอยู่ที่ความสัมพันธ์วิภาษวิธีระหว่าง "Qi" และ "Qi"
“อาวุธ” เป็นวัตถุที่จับต้องได้ และดาบ ปืน ดาบ และง้าวล้วนเป็นอาวุธที่จับต้องได้ การฝึกฝนศิลปะการต่อสู้ภายนอกไม่สามารถแยกออกจากอาวุธที่จับต้องได้เหล่านี้ การฝึกฝนศิลปะการต่อสู้คือการฝึกฝนอาวุธ ดังนั้นปรมาจารย์ศิลปะการต่อสู้ที่ใช้ปืนและดาบจึงมักพึ่งพาคุณภาพของอาวุธ
"ชี่" เป็นสสารที่มองไม่เห็น และปัญญา พลังวิเศษ และความคิดทั้งหมดล้วนเป็นสสารที่มองไม่เห็น การฝึกชี่กงภายในแยกออกจากคุณสมบัติที่จับต้องไม่ได้เหล่านี้ การฝึกชี่กงคือการฝึกชี่ ดังนั้นปรมาจารย์ศิลปะการต่อสู้ที่แท้จริงมักไม่จำเป็นต้องพึ่งพาอาวุธเฉพาะสำหรับพวกเขา วัตถุที่จับต้องได้สามารถเปลี่ยนเป็นอาวุธได้ตามจิตวิญญาณ ด้ามจิ้วหรือไม้ตีแมลงวันในมือของเขามีพลังพอๆ กับหอกหรือดาบอันโด่งดัง ซึ่งเกิดจากการได้รับพลังชี่
รูปที่ 1 แผนภาพฟังก์ชันเวลาและทักษะของวิธีการฝึกฝนสองวิธี
ในการพัฒนาซอฟต์แวร์ เครื่องมือการเขียนโปรแกรมคือ "เครื่องมือ" และแนวคิดในการเขียนโปรแกรมคือ "qi"
ในบรรดาเครื่องมือการเขียนโปรแกรม เครื่องมือที่ใช้งานง่าย เช่น VB และ PB เครื่องมือที่ยากต่อการใช้งาน เช่น แอสเซมบลีและ C++ เครื่องมือโบราณ เช่น FORTRAN และ COBOL และเครื่องมือที่ทันสมัย เช่น Java และ C#
ในการคิดเชิงโปรแกรมมีทั้งเชิงวัตถุและเชิงกระบวนการซึ่งเป็นทั้งโลกทัศน์และวิธีการ แบบแรกสะท้อนถึงวิธีที่ผู้คนคิดเกี่ยวกับวัตถุวิสัยวัตถุ และแบบหลังสะท้อนวิธีที่เครื่องจักรคิดเกี่ยวกับคำสั่ง ในการปฏิบัติอย่างต่อเนื่องของการพัฒนาซอฟต์แวร์ ความเหนือกว่าของความเหนือกว่านั้นได้รับการสะท้อนและยืนยันอย่างต่อเนื่อง
การเรียนรู้แนวคิดการเขียนโปรแกรมเชิงวัตถุก็เหมือนกับการได้รับความหมายที่แท้จริงของการฝึก Qi ความสำคัญของมันมักจะสำคัญกว่าการเลือกภาษาการเขียนโปรแกรม!
แม้ว่าบางคนจะเลือกเครื่องมือเชิงวัตถุ แต่ก็ยังไม่สามารถเป็นผู้เชี่ยวชาญที่แท้จริงได้ เพราะสิ่งที่เขาให้ความสำคัญคือคุณภาพของ "ฉี" และไม่สนใจการฝึกฝนของ "ฉี"
ในความเป็นจริง "ไม่สำคัญว่าระบบหรือภาษาจะเป็นแบบเชิงวัตถุ สิ่งที่สำคัญก็คือว่าจะสามารถเป็นแบบเชิงวัตถุได้อย่างไร และจะใช้วิธีใดเพื่อให้บรรลุผลประโยชน์ที่เกี่ยวข้อง" ("วิธีการเชิงวัตถุ: หลักการและการปฏิบัติ" สำนักพิมพ์อุตสาหกรรมเครื่องจักร มีนาคม 2546)
แม้ว่าการฝึกฝนอาวุธจะเป็นเรื่องง่าย แต่ก็ยากที่จะเป็นผู้เชี่ยวชาญได้ แม้ว่าการฝึก Qi จะดี แต่ผลลัพธ์ก็ช้าและความเหงาก็ทนไม่ไหวที่คนธรรมดาจะเข้าใจจิตใจของตนอย่างชัดเจนและใช้เส้นทางที่ถูกต้อง ดังนั้นปรมาจารย์ศิลปะการต่อสู้หลายคนจึงฝึกฝนอาวุธก่อนแล้วจึงฝึกฝนทั้งภายในและภายนอกเพื่อให้บรรลุความสำเร็จ
สำหรับผู้มาใหม่ในโลกศิลปะการต่อสู้ พวกเขาจำเป็นต้องใช้พลังของอาวุธเพื่อชดเชยความแข็งแกร่งภายในที่ขาดหายไป คุณภาพของอาวุธมักจะมีความสำคัญมาก แต่เมื่อศิลปะการต่อสู้เพิ่มขึ้นและความแข็งแกร่งภายในพัฒนาขึ้น การพึ่งพาอาวุธก็ควรลดลง "The Legend of the Condor Heroes" Yang Guo ฝึกวิชาดาบ เมื่อเขาเรียนรู้ทักษะภายในของเขา กิ่งก้านของต้นไม้ก็สามารถทำได้เช่นกัน ถูกนำมาใช้เป็นดาบ ดังนั้นสำหรับปรมาจารย์ที่แท้จริง คุณภาพของดาบมักจะไม่สำคัญ
ในทำนองเดียวกันการเติบโตของผู้เชี่ยวชาญด้านซอฟต์แวร์ก็ต้องผ่านกระบวนการนี้เช่นกัน ผู้เริ่มต้นเขียนโปรแกรมจำเป็นต้องเลือกภาษาที่ดี ซึ่งสามารถบรรลุผลลัพธ์เป็นสองเท่าโดยใช้ความพยายามเพียงครึ่งเดียว ในขณะเดียวกันก็กระตุ้นความสนใจและเพิ่มความมั่นใจ เมื่อคุณคุ้นเคยกับภาษาแล้ว คุณควรใช้ภาษานั้นเป็นโอกาสในการฝึกฝนแนวคิดการเขียนโปรแกรมเชิงวัตถุ ในเวลานี้สิ่งที่คุณคุ้นเคยไม่ใช่ไวยากรณ์ ฟังก์ชัน และไลบรารีคลาสของภาษาอีกต่อไป แต่เป็นวิธีคิด เช่น การผูก ความหลากหลาย รูปแบบ ฯลฯ แล้วโดยการเปรียบเทียบก็เรียนรู้ได้ไม่ยาก ภาษาเชิงวัตถุอื่นๆ ผู้เชี่ยวชาญด้านซอฟต์แวร์ตัวจริงที่ทำงานอย่างหนักเพื่อพัฒนาทักษะภายใน มีความกล้าหาญที่จะฝึกฝน และท้ายที่สุดก็ประสบความสำเร็จไม่ได้ถูกจำกัดด้วยภาษาการเขียนโปรแกรม พวกเขาอาจคุ้นเคยกับเครื่องมือในการพัฒนา แต่เป็นเพียงเครื่องมือที่บรรจุจิตวิญญาณที่มองไม่เห็นไว้ พวกเขาเป็นคนใจกว้าง กระตือรือร้นที่จะเรียนรู้ และสรุปได้ดี แนวคิด วิธีการ แบบจำลอง และแม้แต่ปรัชญาของพวกเขาไม่เพียงแต่อยู่เหนือภาษาการเขียนโปรแกรมเท่านั้น แต่ยังสามารถชี้แนะแนวทางปฏิบัติของภาษาการเขียนโปรแกรมอีกด้วย
Delphi จัดเตรียมทางลัดสำหรับการเติบโตของผู้เชี่ยวชาญด้านซอฟต์แวร์ทั้งภายในและภายนอก เมื่อเรียนรู้และฝึกฝน Delphi คุณสามารถใช้ข้อดีของ RAD และควบคุมเพื่อเอาชนะคู่ต่อสู้ของคุณได้อย่างรวดเร็วเมื่อคุณเพิ่งเริ่มต้น เมื่อคุณเรียนรู้และฝึกฝน Delphi คุณยังสามารถใช้ความสามารถของ OOP จุดแข็งของ VCL และจุดแข็งได้ ของเบคอนเพื่อให้บรรลุความสำเร็จที่อยู่ยงคงกระพัน
นิกายดาบ Huashan ที่มีชื่อเสียงระดับโลกเคยถูกแบ่งออกเป็น "นิกายดาบ" และ "นิกายชี่" เดิมฝึกฝนอาวุธและสอนการเคลื่อนไหวเท่านั้น ส่วนหลังยังฝึกฝน Qi และสร้างรากฐานใหม่
การเรียนรู้ Delphi ก็เหมือนกับการฝึกวิชาดาบ Huashan การเข้าสู่เส้นทาง RAD คือ "Sword Master" และการเริ่มต้นจาก OOP คือ "Air Master" คนแรกชอบใช้การควบคุมและสนใจเทคนิคและลูกเล่นแปลกๆ ฝ่ายหลังชอบวัตถุและสนใจรูปแบบวิธีการ แบบแรกแสวงหาผลลัพธ์ที่รวดเร็ว ในขณะที่แบบหลังมีแรงบันดาลใจสูง
ฉันคิดว่าเพื่อนที่เลือก Delphi สำหรับ RAD หรือเลิกใช้ Delphi เพราะ OOP ไม่เข้าใจ Delphi จริงๆ Delphi เป็นซอฟต์แวร์พัฒนา RAD ที่ดี แต่เป็นการยากที่จะเป็นผู้เชี่ยวชาญที่แท้จริงโดยไม่ต้องเรียนรู้ OOP และเจาะลึกเข้าไปใน VCL ในทำนองเดียวกัน Delphi คือเครื่องมือการเขียนโปรแกรม OOP ที่แท้จริง เมื่อรวมกับ RAD อันทรงพลังของ Delphi และคอมไพเลอร์ที่มีประสิทธิภาพ ทำให้มีข้อได้เปรียบและมีประสิทธิภาพสูงกว่าภาษา OOP อื่น ๆ หากเราสามารถแยกตัวออกจากความคิดเห็นแบ่งแยกนิกาย ฝึกฝน "qi" และ "qi" ร่วมกัน และฝึกฝนทักษะทั้งภายในและภายนอก ฉันเชื่อว่าโปรแกรมเมอร์ Delphi จะเติบโตจาก RAD Quickie ไปสู่ OOP Master ได้ไม่ยาก และ ในที่สุดก็ภูมิใจในโลกและครองโลก
ก่อนหน้านี้ ฉันได้พูดคุยสั้น ๆ เกี่ยวกับความสัมพันธ์วิภาษวิธีระหว่าง "ฉี" และ "ฉี" ในการเขียนโปรแกรมหนึ่งในกุญแจสำคัญในการปลูกฝังและปรับปรุงความแข็งแกร่งภายในคือการฝึกฝนแนวคิดของการเขียนโปรแกรมเชิงวัตถุ ในความเป็นจริงฉันคิดว่าแนวคิดของการเขียนโปรแกรมเชิงวัตถุนั้นสอดคล้องกับความสวยงามของความจริงที่มองไม่เห็นของถนนมากที่สุด
ทำไมคุณถึงพูดอย่างนั้น? "การเปลี่ยนแปลงครั้งใหญ่ในสมัยโบราณเกิดมาพร้อมกับสิ่งที่มองไม่เห็น" (ปฏิกิริยาที่สองใน "Guiguzi") ความลึกลับของ Qi อันดับแรกอยู่ที่ "การเปลี่ยนแปลงครั้งใหญ่" การเปลี่ยนแปลงครั้งใหญ่คือการสร้างสวรรค์และโลกที่ยิ่งใหญ่ซึ่งรวบรวมพลังแห่งการสร้างสรรค์และการเปลี่ยนแปลงทั้งหมด การคิดโปรแกรมเชิงวัตถุมีคุณสมบัตินี้
เลาซีกล่าวว่า "จุดเริ่มต้นแห่งสวรรค์และโลกอันไร้ชื่อ มารดาแห่งสรรพสิ่งอันไร้นาม" ความหมายคือ อธิบายไม่ได้และไม่อาจนิยามได้ สิ่งที่ลึกลับที่สุดเกี่ยวกับวิธีการคิดเชิงวัตถุที่เรียกว่าวิธีคิดคือวิธีการระบุและกำหนดวัตถุจาก "ไม่มีชื่อ" และวิธีสร้างและใช้วัตถุจาก "ชื่อ"
สำหรับนักพัฒนาซอฟต์แวร์ กระบวนการทำความเข้าใจเอนทิตีที่เป็นวัตถุประสงค์ ตลอดจนการวิเคราะห์และออกแบบความต้องการของผู้ใช้เป็นกระบวนการในการค้นพบและกำหนดวัตถุ และเป็นกระบวนการจากนิรนามไปจนถึงมีชื่อเสียง อย่างไรก็ตาม อ็อบเจ็กต์ที่นี่แตกต่างจากตัวแปรหรือฟังก์ชันในกระบวนการที่มุ่งเน้นกระบวนการ
เป็นผลให้ไทเก็กให้กำเนิดเหลียงยี่ และเหลียงอี้ให้กำเนิดบากัว ทุกสิ่งถือกำเนิดขึ้นและระบบต่างๆ เกิดขึ้นผ่านการสืบทอดและการสืบทอดชนชั้น
แม้แต่ "เครื่องมือ" ในฐานะเครื่องมือการเขียนโปรแกรมเชิงวัตถุก็ยังรวบรวมและดำเนินการ "qi" ของแนวคิดการเขียนโปรแกรมเชิงวัตถุด้วย
ประโยคแรกในบทเปิดของ "Zhou Yi Shen Tong Qi" ซึ่งเป็นงานคลาสสิกเกี่ยวกับการฝึกพลังงานภายในที่รู้จักกันในชื่อ "ราชาแห่งสูตรการเล่นแร่แปรธาตุชั่วนิรันดร์" คือ "เฉียนและคุนเป็นประตูของยี่และผู้ปกครองของทุกคน รูปหกเหลี่ยม แกนลี่กวงก๊วย แกนหลักของศูนย์กลางการเคลื่อนไหว ตัวเมีย รูปหกเหลี่ยมทั้งสี่ของมู่คิดว่าเป็น "ผู่"
จากมุมมองของการพัฒนาซอฟต์แวร์ แม้ว่าเครื่องมือการเขียนโปรแกรมเชิงวัตถุจะให้ความเป็นไปได้ในการสร้างระบบซอฟต์แวร์ประเภทที่ไม่มีที่สิ้นสุด แต่ความไม่มีที่สิ้นสุดนี้ขึ้นอยู่กับเฟรมเวิร์กที่จำกัดของไลบรารีคลาสของตัวเอง ไม่ว่าจะเป็น VCL ของ Delphi, ไลบรารีคลาสของ Java หรือเฟรมเวิร์ก .net ทั้งหมดนี้สร้างขึ้นบนโครงสร้างที่คล้ายกับ Zhouyi Bagua "เป็นเรื่องง่ายที่จะมีไทเก็ก ไทเก็กสร้างสองรูปแบบ สองรูปแบบสร้างภาพสี่ภาพ และภาพสี่ภาพสร้างบากัว" โครงสร้างนี้สมบูรณ์แบบและมีความคิดสร้างสรรค์ที่ไม่มีที่สิ้นสุด
Taiji เป็น TObject ใน Delphi เป็นอะตอมของระบบการสร้าง เป็นบรรพบุรุษของทุกคลาส โดยมีลักษณะพื้นฐานของทุกคลาส ในโลกการเขียนโปรแกรม Delphi คลาสรูท TObject จะสร้างคลาสอ็อบเจ็กต์ถาวร TPersistent และคลาสอ็อบเจ็กต์ถาวร TPersistent จะสร้างคลาสอ็อบเจ็กต์ส่วนประกอบ TComponent ซึ่งให้การควบคุมที่หลากหลายและฟังก์ชันอันทรงพลังสำหรับการพัฒนาแอปพลิเคชัน
อย่างไรก็ตาม กรอบโครงสร้างของไลบรารีคลาสไม่เพียงแต่ให้ส่วนประกอบที่สามารถใช้เป็น "เครื่องมือ" ได้เท่านั้น แต่ที่สำคัญกว่านั้น โครงสร้างนี้ตระหนักถึงการสร้างและการเปลี่ยนแปลงของ "qi" ผ่านความสัมพันธ์และฟังก์ชันที่เกี่ยวข้องระหว่างคลาส ซึ่งสะท้อนถึงวัตถุ- มุ่งเน้น สาระสำคัญของการคิดการเขียนโปรแกรม เป็นการสาธิตที่ยอดเยี่ยมให้เราสร้างระบบของเราเอง
ความลึกลับประการที่สองของ Qi อยู่ที่ "ต้นกำเนิดที่มองไม่เห็น" การมองไม่เห็นหมายถึงอิสรภาพ ความเปิดกว้าง และความสามารถในการปรับตัว แนวคิดของการเขียนโปรแกรมเชิงวัตถุนั้นเต็มไปด้วยภูมิปัญญาที่มองไม่เห็นของ "ฉี"
ตัวอย่างเช่น ความหลากหลายในการเขียนโปรแกรมเชิงวัตถุช่วยให้โปรแกรมเมอร์สามารถเขียนโปรแกรมที่หลากหลายและเปิดกว้างมากขึ้น โปรแกรมเมอร์สามารถเขียนวิธี Stop() แบบนามธรรมเสมือนสำหรับวัตถุ Vehicle ได้ วิธี Universal Stop() ดังกล่าวไม่เกี่ยวอะไรกับรถที่ขับ โปรแกรมเมอร์สามารถปล่อยให้คลาสที่ได้รับมากังวลเกี่ยวกับการเสร็จสิ้นเมธอด stop() และเขียนขั้นตอนทั่วไปของตนเองต่อไปในระดับนามธรรมที่สูงขึ้น แม้ว่าเมธอด stop() ของอ็อบเจ็กต์ Car จะแตกต่างอย่างสิ้นเชิงจากเมธอด stop() ของอ็อบเจ็กต์ Bicycle โปรแกรมเมอร์ยังสามารถใช้ Vehicle.stop() ได้ Polymorphism อนุญาตให้อ็อบเจ็กต์ที่สร้างขึ้นรู้โดยอัตโนมัติว่าวิธีการที่เหมาะสมใดที่จะถูกเรียก . ทำให้โปรแกรมมีความเปิดกว้างและปรับตัวได้เหมือน "ฉี"
ในการฝึกชี่กง เน้นย้ำว่า "คุณธรรมที่เหนือกว่าคือความเกียจคร้าน และไม่ได้แสวงหาผ่านการสังเกต คุณธรรมระดับล่างนั้นได้รับการฝึกฝน และการใช้งานนั้นไม่มีที่สิ้นสุด" ("Zhou Yi Shen Tong Qi")
ในการคิดการเขียนโปรแกรมเชิงวัตถุ "Shangde" เป็นวิธีการเชิงนามธรรมเสมือนจริงแบบมีผลผูกพันในช่วงปลาย ซึ่งเป็นอินเทอร์เฟซของวัตถุที่ยังคงไม่เปลี่ยนแปลงและปรับให้เข้ากับการเปลี่ยนแปลงที่เปลี่ยนแปลงตลอดเวลา มันเป็นนามธรรมของสิ่งต่าง ๆ ในระดับสูง และเป็นอภิปรัชญา . "Shangde Wuwei" หมายความว่าในระดับนามธรรม ด้าน "เสมือน" ของการเขียนโปรแกรมจะสะท้อนให้เห็นผ่านการไม่ใช้งาน เนื่องจากในขณะนี้ ไม่สามารถระบุวัตถุจริงที่ใช้จริงได้ (อาจเป็นวัตถุรถยนต์หรือวัตถุจักรยาน หรือ อาจถูกประดิษฐ์ขึ้นในภายหลัง) วัตถุยานพาหนะใหม่) "ไม่ขึ้นอยู่กับการสังเกต" กำหนดให้เราต้องกระโดดออกจากข้อจำกัดของความต้องการเฉพาะ และไม่พิจารณารหัสการใช้งานเฉพาะ ดังนั้นจึงไม่มีการนำโค้ดไปใช้ในวิธีนามธรรมเสมือนหรืออินเทอร์เฟซอ็อบเจ็กต์ล้วนๆ
ในการคิดการเขียนโปรแกรมเชิงวัตถุ "Xiaode" หมายถึงความครอบคลุมของวิธีการนามธรรมเสมือนบริสุทธิ์และการใช้งานอินเทอร์เฟซของวัตถุ "ทำอย่างมีคุณธรรม" ให้การนำโค้ดไปใช้จริง “ถูกใช้อย่างไม่สิ้นสุด” เพื่อตอบสนองความต้องการที่เปลี่ยนแปลงตลอดเวลา
ความหลากหลายช่วยให้โปรแกรมเมอร์ได้รับวัตถุและใช้งานโปรแกรมในภายหลังโดยไม่ต้องใช้ความพยายามมากนัก ไม่ว่าโปรแกรมเมอร์จะสร้างแอปพลิเคชันสำหรับรถยนต์และจักรยานและไม่รู้ว่ามีรถบรรทุกอยู่หรือไม่ โปรแกรมเมอร์สามารถเขียนเมธอด overriding stop() สำหรับคลาส Car และ Bicycle ที่สืบทอดคลาส Vehicle ด้วยวิธีนี้ ในโปรแกรม ตราบใดที่วัตถุ Car และ Bicycle ที่สร้างขึ้นถูกแปลงเป็นประเภทยานพาหนะ และใช้วิธี Stop() ของยานพาหนะ วัตถุ Car และ Bicycle ก็สามารถผูกเข้ากับ stop() แบบไดนามิกได้ วิธีการที่ตรงตามความต้องการของตนเอง แม้ว่าวัตถุ Truck จะถูกเพิ่มในภายหลัง แต่เมธอด Stop() ของ Vehicle ยังคงถูกเรียก และไม่จำเป็นต้องเปลี่ยนแปลงโปรแกรมเพิ่มเติม
“สรรพสิ่งเป็นของธรรมชาติ สรรพสิ่ง ประกอบและแยกจากกัน บ้างอยู่ใกล้แต่มองไม่เห็น บ้างอยู่ไกลรู้ได้ บ้างอยู่ใกล้แต่มองไม่เห็นก็ไม่เข้าใจ บ้างอยู่ไกลก็มองเห็นได้ แต่สามารถเห็นได้ในอนาคต" ("Guiguzi") มาถึงที่สี่)
แม้ว่าสิ่งที่เป็นกลางจะซับซ้อนและความต้องการของผู้ใช้เปลี่ยนไป แต่ก็มีกฎหมายบางประการเช่นกัน
ผู้ที่อยู่ใกล้แต่มองไม่เห็นจะมองเพียงการบรรลุถึงหน้าที่เฉพาะที่อยู่ตรงหน้า และไม่ปฏิบัติตามกฎการพัฒนาโดยทั่วไปของสิ่งต่างๆ พวกเขาจะมีเพียงข้อมูลและกระบวนการทางกลที่แยกออกจากกันในจิตใจ เมื่อ "สิ่งต่างๆ มารวมกัน" พวกเขาจะทำได้ ระวังตัวและพบว่าเป็นการยากที่จะจัดการกับมัน การเขียนโปรแกรมดังกล่าวเป็นแบบคงที่ เชิงกล และยากต่อการบำรุงรักษาและขยาย
ผู้ที่มองเห็นจากระยะไกลเก่งในการค้นหารูปแบบ เห็นคุณค่าของการใช้รหัสซ้ำ และมองเห็นวัตถุอินทรีย์และความสัมพันธ์ที่กลมกลืนกัน แม้ว่าความต้องการจะเปลี่ยนไป พวกเขาสามารถจัดการกับสิ่งเหล่านั้นอย่างสงบและง่ายดาย การเขียนโปรแกรมดังกล่าวเป็นแบบไดนามิก ยืดหยุ่น บำรุงรักษาได้ และขยายได้
Paul Kimmel กล่าวใน "Delphi6 Application Development Guide" "มันเป็นความผิดพลาดที่จะใช้เครื่องมือเชิงวัตถุในลักษณะที่ไม่ใช่เชิงวัตถุ การใช้ Delphi เพื่อเขียนโปรแกรมที่มีโครงสร้างสามารถเข้าถึงเวอร์ชันเบต้าได้อย่างรวดเร็ว... โปรแกรมของคุณอาจไม่เคยเป็นอย่างนั้น สามารถหลบหนีเบต้าฉบับที่ผิดได้เร็วและยังผิดอยู่”
นอกจากนี้ เมื่อใช้ Delphi หากไม่มีแนวคิดการเขียนโปรแกรมเชิงวัตถุ ก็จะเหมือนกับ "ไม่สังเกตเห็นสิ่งที่กำลังพูด" สุดท้ายก็ยัง "อยู่ใกล้แต่มองไม่เห็น" ทำให้ยากต่อการพัฒนาระบบที่ยอดเยี่ยม มีเพียงการฝึกฝนอย่างหนัก สรุปอย่างรอบคอบ และเชี่ยวชาญแนวคิดที่กว้างและลึกซึ้งของการเขียนโปรแกรมเชิงวัตถุเท่านั้นที่เราสามารถควบคุม "ชี่" ของเราได้อย่างอิสระ "ย้อนกลับสิ่งที่เราได้เรียนรู้ สิ่งที่เราได้เรียนรู้" และในที่สุดก็ถึงสภาวะ ของการ "รู้สิ่งที่อยู่ไกล"
เป็นเวลากว่า 30 ปีแล้วที่ Smalltalk (1972) ภาษาเชิงวัตถุตัวแรกปรากฏขึ้น อย่างไรก็ตาม หนังสือการเขียนโปรแกรมเชิงวัตถุในร้านหนังสือส่วนใหญ่เป็นภาษา C++ และ Java ดูเหมือนว่ามีเพียงสองภาษานี้เท่านั้น จริงๆ แล้วมีภาษาเชิงวัตถุจริงอยู่ 4 สาขาและเกือบ 20 ชนิด . เนื่องจากมีหนังสือเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุของ Delphi น้อยมาก โปรแกรมเมอร์จำนวนมากจึงต้องละทิ้ง Delphi เพื่อเรียนรู้ OOP นี่เป็นโศกนาฏกรรมครั้งใหญ่ของเดลฟีจริงๆ เมื่อฉันอ่าน "Thinking in Java" ของ Bruce Eckel ฉันคร่ำครวญว่าทำไมไม่มีผลงานชิ้นเอกของ Delphi เช่นนี้
ในความเป็นจริง Delphi มาจากตระกูลที่มีชื่อเสียง ได้รับการพัฒนาโดย Borland Company บนพื้นฐานของ Object Pascal ขณะนี้ Borland Company ใช้ภาษา Delphi เพื่อแทนที่ Object Pascal [1] โดยเริ่มจาก Delphi7 จริงๆ แล้ว Delphi ไม่ได้ด้อยกว่า C++ และ Java ในแง่ของ OOP ผู้อ่านสามารถอ้างถึงภาคผนวกของหนังสือเล่มนี้ "การเปรียบเทียบภาษาการเขียนโปรแกรมเชิงวัตถุ: Java, C++ และ Delphi"
ด้วยเหตุนี้ ฉันจึงวางแผนที่จะเขียนหนังสือเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุของ Delphi อยู่เสมอ เพื่อสรุปการเรียนรู้และประสบการณ์เชิงปฏิบัติของฉันในการเขียนโปรแกรมเชิงวัตถุของ Delphi อย่างไรก็ตาม นี่เป็นงานที่ยากมาก หนังสือทั้งเล่มใช้เวลานานตั้งแต่เริ่มคิดจนถึงการเขียน และยังไม่เสร็จสมบูรณ์อย่างเป็นทางการจนถึงเดือนพฤษภาคมปีนี้ บังเอิญว่าปีนี้เป็นวันครบรอบ 20 ปีของการก่อตั้ง Borland ในฐานะผู้ใช้ผลิตภัณฑ์ Delphi ของ Borland การตีพิมพ์หนังสือของฉันถือได้ว่าเป็นอนุสรณ์ถึงสิ่งนี้
นี่คือหนังสือที่กล่าวถึงการเขียนโปรแกรมเชิงวัตถุใน Delphi เพียงอย่างเดียวไม่ใช่การตกแต่งที่ทันสมัยของหนังสือเล่มนี้ แต่เป็นแก่นแท้ของหนังสือเล่มนี้
เริ่มต้นจากบทที่ 1 "การสร้างการคิดเชิงวัตถุใหม่" หนังสือเล่มนี้พยายามเริ่มต้นด้วยประวัติและสถานการณ์ปัจจุบันของการเขียนโปรแกรมเชิงวัตถุ โดยอธิบายที่มา การพัฒนา และแนวคิดพื้นฐานของแนวคิดการเขียนโปรแกรมเชิงวัตถุ ตลอดจนการประยุกต์ใช้งาน ของวิธีการสร้างแบบจำลองเชิงวัตถุและ UML บทนี้มีไว้เพื่อช่วยให้ผู้อ่านกำหนดแนวคิดพื้นฐานของการคิดเชิงวัตถุและเข้าใจวิธีการคิดเชิงวัตถุ
บทที่ 2 "Delphi Object Model" แนะนำความรู้พื้นฐานของการเขียนโปรแกรมเชิงวัตถุ Delphi และระบบโครงสร้างโมเดลวัตถุ
บทที่ 3 “การทำความเข้าใจวัตถุ” กล่าวถึงกลไกภายใน วงจรชีวิต และปฏิสัมพันธ์ของวัตถุในเชิงลึกใน 3 ด้าน ได้แก่ ธรรมชาติ ชีวิตและความตาย และความสัมพันธ์ของวัตถุ การวางรากฐานให้ผู้อ่านเข้าใจและเชี่ยวชาญวัตถุ
บทที่ 4 "การใช้วัตถุ" อธิบายวิธีใช้วัตถุอย่างมีประสิทธิภาพในการเขียนโปรแกรมเชิงวัตถุของ Delphi ที่นี่เรามุ่งเน้นไปที่วิธีการใช้งานและเทคนิคของอ็อบเจ็กต์อินเทอร์เฟซ อ็อบเจ็กต์ส่วนประกอบ ชุดอ็อบเจ็กต์ และพารามิเตอร์อ็อบเจ็กต์ และดำเนินการคิดเชิงลึกเกี่ยวกับปัญหาทั่วไปในการใช้และการพัฒนาส่วนประกอบ VCL
บทที่ 5 "ความหลากหลายในเชิงลึก" แนะนำแนวคิดของความหลากหลายและการประยุกต์ในการเขียนโปรแกรม ผ่านตัวอย่างจำนวนมาก จะมีการอธิบายแนวคิดที่สำคัญและวิธีการคิด เช่น การโอเวอร์โหลดและการเขียนทับ วิธีการเสมือนและวิธีการไดนามิก คลาสนามธรรมและวิธีการนามธรรม และการแปลงประเภทคลาสจะถูกอธิบายผ่านตัวอย่างจำนวนมาก
บทที่ 6 "การวิเคราะห์อินเทอร์เฟซ" จะแนะนำความรู้ด้านการเขียนโปรแกรมและทักษะการประยุกต์ใช้อินเทอร์เฟซอ็อบเจ็กต์อย่างครอบคลุม โดยจะอธิบายบทบาทที่สำคัญของอินเทอร์เฟซในการทำให้เกิดการเชื่อมโยงแบบไดนามิกและการสืบทอดหลายรายการ และสาธิตการใช้งานจริงของอินเทอร์เฟซในการเขียนโปรแกรมเชิงวัตถุ
บทที่ 7 "การวิจัยเกี่ยวกับการห่อหุ้ม" ชี้แจงความสำคัญและหลักการประยุกต์ของการห่อหุ้มในการเขียนโปรแกรมเชิงวัตถุ และอภิปรายเพิ่มเติมเกี่ยวกับวิธีการนำไปใช้และเทคนิคการประยุกต์ใช้การห่อหุ้มจากมุมมองของการห่อหุ้มเชิงตรรกะและการห่อหุ้มทางกายภาพตามลำดับ
บทที่ 8 "การตระหนักถึงการแยกส่วนต่อประสานและธุรกิจ" ใช้การเขียนโปรแกรมเชิงวัตถุในระดับใหม่ บทนี้อธิบายวิธีใช้การออกแบบเชิงวัตถุเพื่อพัฒนาโปรแกรมเดสก์ท็อปเป็นระบบหลายเลเยอร์แบบกระจายผ่านตัวอย่างเชิงวิวัฒนาการของการแยกอินเทอร์เฟซและธุรกิจ ด้วยการบูรณาการเทคโนโลยีเว็บล่าสุดของ Delphi โดยจะแนะนำวิธีการใช้บริการเว็บเพื่อห่อหุ้มออบเจ็กต์ทางธุรกิจ ใช้ Web Form เพื่อห่อหุ้มออบเจ็กต์อินเทอร์เฟซ และใช้เทคโนโลยีใหม่เพื่อห่อหุ้มออบเจ็กต์เก่า ด้วยเหตุนี้จึงทำให้เกิดแอปพลิเคชันข้ามแพลตฟอร์ม
สุดท้ายนี้ บทที่ 9 และ 10 ของหนังสือเล่มนี้ "In-definition Introduction to VCL" ศึกษากลไกภายในของ VCL และวิเคราะห์การใช้อ็อบเจ็กต์ของหมวดหมู่ที่สำคัญของ VCL โดยให้ข้อมูลอ้างอิงสำหรับผู้อ่านที่กระตือรือร้นที่จะปรับปรุงระดับการเขียนโปรแกรมของตนใน ความลึก.
เมื่อพิจารณาจากโครงสร้างของหนังสือเล่มนี้ สามารถแบ่งออกเป็น 5 ส่วน
ส่วนที่ 1 สองบทแรกของหนังสือเป็นการแนะนำการเขียนโปรแกรมเชิงวัตถุของ Delphi ผู้อ่านที่เชี่ยวชาญแนวคิดพื้นฐานของเชิงวัตถุแล้วและมีประสบการณ์ในการเขียนโปรแกรม Delphi สามารถข้ามสองบทนี้ไปได้
ส่วนที่ 2 บทที่ 3 และ 4 เป็นกุญแจสำคัญในการเขียนโปรแกรมเชิงวัตถุใน Delphi หากคุณไม่เข้าใจสาระสำคัญของวัตถุ คุณจะไม่สามารถใช้วัตถุได้ดี
ส่วนที่ 3 บทที่ 5 และ 6 เป็นการแนะนำเชิงลึกเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุใน Delphi เทคนิคเชิงวัตถุขั้นสูงทั้งหมดขึ้นอยู่กับกลไกการเชื่อมโยงแบบไดนามิก เช่น วิธีการเสมือน วิธีการเชิงนามธรรม และอินเทอร์เฟซของวัตถุ และกลไกการแปลงประเภท เช่น การแปลงขึ้น การแปลงลง และการแปลงอินเทอร์เฟซ
ส่วนที่ 4 บทที่ 7 และ 8 เป็นแอปพลิเคชันของการเขียนโปรแกรมเชิงวัตถุ Delphi เพื่อให้บรรลุถึงการบำรุงรักษาโปรแกรม ความสามารถในการปรับขนาด และการนำกลับมาใช้ใหม่ได้ การห่อหุ้มได้กลายเป็นหนึ่งในแนวคิดที่สำคัญของการเขียนโปรแกรมเชิงวัตถุ ด้วยการห่อหุ้ม อินเทอร์เฟซและอ็อบเจ็กต์ทางธุรกิจจะถูกแยกออกจากกัน และสถาปัตยกรรมหลายเลเยอร์แบบกระจายจะค่อยๆ เกิดขึ้นจากการแยกอินเทอร์เฟซและธุรกิจ จากนั้นจึงรับรู้ถึงแพลตฟอร์มข้ามแพลตฟอร์มของอินเทอร์เฟซและแอปพลิเคชันทางธุรกิจ มีการสาธิตโซลูชันตั้งแต่แอปพลิเคชันทั่วไปไปจนถึงแอปพลิเคชันระดับองค์กรตามแนวคิดการเขียนโปรแกรมเชิงวัตถุที่นี่
ส่วนที่ 5 ซึ่งสรุปบทที่ 9 และ 10 เป็นการอ้างอิงถึงการเขียนโปรแกรมเชิงวัตถุใน Delphi ความคุ้นเคยกับ VCL และการเรียนรู้ VCL มีประโยชน์มากในการเรียนรู้ Delphi เนื่องจากการขาดข้อมูลภายในของ VCL ในปัจจุบัน สิ่งที่ส่วนนี้ให้กับผู้อ่านอาจมีจำกัด แต่ก็พบได้น้อยมาก
พูดให้ถูกคือ หนังสือเล่มนี้ไม่ได้เขียนขึ้นสำหรับ "ผู้เชี่ยวชาญ" แต่สำหรับโปรแกรมเมอร์ที่ต้องการเปลี่ยนจาก RAD เป็น OOP และสำหรับเพื่อนที่ต้องการเรียนรู้ OOP ผ่าน Delphi ฉันคิดว่ามันเหมาะสมกว่าสำหรับเป็นหนังสือทางเทคนิคระดับกลางของ Delphi ที่ใช้งานได้จริง ดังนั้นในการเขียนหนังสือทั้งเล่ม เรามุ่งมั่นที่จะให้เข้าใจง่าย มีรูปภาพและข้อความ และมีโปรแกรมตัวอย่างจำนวนมากที่เขียนอย่างระมัดระวัง (ซอร์สโค้ดในซีดีรอมที่มาพร้อมกับหนังสือมีขนาดเกิน 50 MB) สำหรับ ผู้อ่านที่จะศึกษา หนังสือเล่มนี้เน้นที่ OOP หลัก ไม่ใช่ทุกแง่มุมของ Delphi การอ่านหนังสือเล่มนี้จำเป็นต้องมีความรู้พื้นฐานเกี่ยวกับ Delphi หนังสือเล่มนี้เกี่ยวข้องกับความรู้เฉพาะทางบางอย่าง (เช่น COM+ ฯลฯ) และกำหนดให้ผู้อ่านอ้างอิงถึงหนังสือที่เกี่ยวข้องเพื่อใช้อ้างอิงเพิ่มเติม
อาจมี “ผู้เชี่ยวชาญ” บางคนที่ผิดหวังกับหนังสือเล่มนี้ ฉันรู้สึกว่าฉันไม่เหมาะที่จะเขียนหนังสือให้ "ผู้เชี่ยวชาญ" อ่านเพราะฉันไม่ใช่ผู้เชี่ยวชาญ ฉันรู้สึกว่าฉันจะเป็นมือใหม่ตลอดไป ฉันใช้ Delphi มาเป็นเวลานานและมีประสบการณ์และประสบการณ์มากกว่าเล็กน้อยแตกต่างจากมือใหม่คนอื่นๆ ดังนั้นหากคุณพบความไม่ถูกต้องในหนังสือเล่มนี้ โปรดแก้ไขฉันด้วย ฉันหวังว่าคุณจะยกโทษให้ฉันสำหรับสิ่งที่ไม่น่าพึงพอใจ
ชาวเน็ต xzh2000 อธิบายไว้อย่างดีว่า "ชีวิตของหนังสือมีความสำคัญมาก ผู้เขียนสามารถใช้เวลาทบทวนและเสริมบ่อยๆ เท่านั้นจึงจะกลายเป็นหนังสือคลาสสิกได้!" เป็นเรื่องจริงที่หนังสือดีๆ จะต้องได้รับการแก้ไขหลายครั้งก่อนที่จะกลายเป็นหนังสือคลาสสิก ดังนั้นผมจึงยินดีรับฟังข้อเสนอแนะอันมีค่าของผู้อ่านทุกคน และหวังว่าหนังสือเล่มนี้จะมีการแก้ไขและพิมพ์ซ้ำอย่างต่อเนื่อง