อัลกอริทึมและOOPเป็นสองคำที่แตกต่างกันซึ่งมีเพียงเหมือนกันว่าพวกเขาเป็นCS -terms ง่ายๆ - อัลกอริทึมเป็นเหมือนสูตรการทำอาหาร : ทำxคุณต้องการส่วนผสมต่อไปนี้และทำขั้นตอน 1,2,3,4,5,6 ... จากนั้นคุณเตรียมอาหารของคุณ
ที่กล่าวว่ามันดูเหมือนว่าธรรมชาติเหมาะสำหรับ algortihms จะอธิบายในขั้นตอนวิธี ขั้นตอนวิธีการอะไรนอกเหนือจาก: ครั้งแรกที่ทำxแล้วทำY
ปัญหาที่พบบ่อยคือ: »จะจัดเรียงชุดของx ได้อย่างไร« วิธีแก้ปัญหาที่เข้าใจง่ายคือbubble-sort
:
- วนซ้ำชุดจากองค์ประกอบสุดท้ายตราบเท่าที่คุณยังไม่ถึงองค์ประกอบแรกและในขณะที่วนซ้ำ
- เริ่มการทำซ้ำครั้งที่ 2 จากจุดเริ่มต้นไปยังองค์ประกอบปัจจุบันของการทำซ้ำครั้งแรกและ
- เปรียบเทียบองค์ประกอบปัจจุบันของ (2) กับตัวตายตัวแทน
- หากมากกว่าให้สลับตำแหน่ง
นั่นคือคำอธิบายขั้นตอน / วาจาของbubblesort
-algorithm
นี่คือการใช้โพรซีเดอร์ / pseudocode
bubbleSort(Array A)
for (n=A.size; n>1; n=n-1){
for (i=0; i<n-1; i=i+1){
if (A[i] > A[i+1]){
A.swap(i, i+1)
}
}
}
นั่นเป็นเรื่องง่าย
สิ่งนี้ปลดปล่อยOOPอย่างไร คุณสามารถใช้อัลกอริทึมนี้เพื่อจัดการกับคอลเลกชัน (วัตถุเอง) ของวัตถุ :
ตัวอย่างใน Javascript (แม้ว่าจะไม่ทำความสะอาด OO-Lingoแต่ใกล้จะไม่มีหม้อไอน้ำและเข้าใจง่าย)
objects =[{"name":"Peter"}, {"name":"Paul"}, {"name":"Mary"}]
compareObjects=function(x,y){ return x.name>y.name };
sorted = objects.sort(compareObjects)
console.log(sorted)
เรามีก)คอลเลกชันobjects
, ข)วิธีการร่วมกันในการเก็บสะสมนี้sort
ซึ่งมี / abstracts ไปขั้นตอนวิธีการเรียงลำดับและc)วัตถุของเราปีเตอร์ , พอลและแมรี่ ข้อมูลจำเพาะสำหรับการเรียงลำดับที่พบที่นี่
ความสัมพันธ์ระหว่างอัลกอริทึมกับ OOP คืออะไร พวกเขาเป็นสองหัวข้ออิสระ?
จากสิ่งที่กล่าวมาควรมีความชัดเจนคำตอบควรเป็น: ใช่พวกเขาเป็นอิสระ
OOP ช่วยอัลกอริทึมได้อย่างไร หรือในทิศทางที่มันสามารถส่งผลกระทบต่อมัน?
OOP เป็นสไตล์การเขียนโปรแกรมเพียงอย่างเดียว มันไม่สามารถช่วยอะไรได้เลย มิฉะนั้นอัลกอริทึมสามารถนำมาใช้ในภาษา OO เพื่อทำอะไรบางอย่างกับวัตถุ (ดังที่แสดง)
มีปัญหาบางอย่างที่สามารถนำเสนอและแก้ไขโดย OOP เท่านั้น?
ฉันไม่สามารถนึกถึงหนึ่ง (แต่นั่นไม่ได้หมายความว่ามันเป็นไปไม่ได้) แต่ถ้าคุณลองใช้วิธีอื่นดู: OOP มีประโยชน์ถ้าคุณต้องการสร้างปัญหาและแก้ปัญหาด้วยอัลกอริธึมที่เหมาะสม สมมติว่าคุณมีบันทึกของfriends
คุณสามารถจำลองพวกเขาเป็นobjects
ด้วยproperties
และถ้าคุณต้องการlist
การfriends
เรียงในทางใด ๆ คุณสามารถใช้ตัวอย่างเช่นรหัสที่กำหนดข้างต้นที่จะทำตรงนั้น
ทำไมตำราเรียนอัลกอริธึมจึงมุ่งเน้นกระบวนการมากกว่า
ดังที่กล่าวไว้: มันเป็นธรรมชาติมากกว่าเนื่องจากขั้นตอนเป็นตัวละครของอัลกอริทึม