ความแตกต่างระหว่าง OOP และ POP

ผู้เขียน: Laura McKinney
วันที่สร้าง: 2 เมษายน 2021
วันที่อัปเดต: 10 พฤษภาคม 2024
Anonim
Object Oriented (OOP) VS functional programming languages | What’s the difference?
วิดีโอ: Object Oriented (OOP) VS functional programming languages | What’s the difference?

เนื้อหา


การเขียนโปรแกรมตามขั้นตอน (POP) และ การเขียนโปรแกรมเชิงวัตถุ (OOP) ทั้งสองเป็นวิธีการเขียนโปรแกรมซึ่งใช้ภาษาระดับสูงสำหรับการเขียนโปรแกรม โปรแกรมสามารถเขียนได้ทั้งสองภาษา แต่ถ้างานมีความซับซ้อนสูง OOP ทำงานได้ดีเมื่อเทียบกับ POP ใน POP 'ความปลอดภัยของข้อมูล' มีความเสี่ยงเนื่องจากข้อมูลเคลื่อนย้ายได้อย่างอิสระในโปรแกรมรวมถึง 'การนำรหัสมาใช้ใหม่' ไม่สำเร็จซึ่งทำให้การเขียนโปรแกรมมีความยาวและเข้าใจยาก

โปรแกรมขนาดใหญ่ทำให้มีข้อบกพร่องมากขึ้นและเพิ่มเวลาในการดีบั๊ก ข้อบกพร่องเหล่านี้นำไปสู่แนวทางใหม่คือ "การเขียนโปรแกรมเชิงวัตถุ" ในความกังวลหลักของการเขียนโปรแกรมเชิงวัตถุนั้นให้ไว้ใน ‘ความปลอดภัยของข้อมูล‘; มันผูกข้อมูลอย่างใกล้ชิดกับฟังก์ชั่นที่ทำงานกับมัน นอกจากนี้ยังแก้ไขปัญหาของ ‘สามารถนำมาใช้รหัส’ราวกับว่ามีการสร้างคลาสสามารถสร้างอินสแตนซ์ (วัตถุ) ได้หลายอันซึ่งจะใช้ฟังก์ชันสมาชิกและสมาชิกที่กำหนดโดยคลาสอีกครั้ง

มีความแตกต่างอื่น ๆ ซึ่งสามารถอธิบายได้ด้วยความช่วยเหลือของกราฟเปรียบเทียบ


    1. แผนภูมิเปรียบเทียบ
    2. คำนิยาม
    3. ความแตกต่างที่สำคัญ
    4. ข้อดี
    5. ข้อเสีย
    6. ข้อสรุป


แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบPOPOOP
ขั้นพื้นฐาน
ขั้นตอน / โครงสร้างที่มุ่งเน้น
เชิงวัตถุ
เข้าใกล้ จากบนลงล่างจากล่างขึ้นบน
รากฐานเป้าหมายหลักอยู่ที่ "วิธีการทำงานให้สำเร็จ" ในขั้นตอนหรือโครงสร้างของโปรแกรมเป้าหมายหลักคือความปลอดภัยของข้อมูล ดังนั้นวัตถุเท่านั้นที่ได้รับอนุญาตให้เข้าถึงเอนทิตีของคลาส
แผนกโปรแกรมขนาดใหญ่แบ่งออกเป็นหน่วยที่เรียกว่าฟังก์ชั่นโปรแกรมทั้งหมดแบ่งเป็นวัตถุ
โหมดการเข้าถึงเอนทิตีไม่พบตัวระบุการเข้าถึง
ตัวระบุการเข้าถึงคือ "สาธารณะ", "ส่วนตัว", "ป้องกัน"
การบรรทุกเกินพิกัด / Polymorphismไม่ว่าจะเกินฟังก์ชั่นหรือผู้ประกอบการมันเกินฟังก์ชั่นการก่อสร้างและผู้ประกอบการ
มรดกพวกเขาไม่มีบทบัญญัติในการรับมรดกมรดกสำเร็จในสามโหมดสาธารณะส่วนตัวและได้รับการคุ้มครอง
การซ่อนข้อมูลและความปลอดภัยไม่มีวิธีที่เหมาะสมในการซ่อนข้อมูลดังนั้นข้อมูลจึงไม่ปลอดภัย ข้อมูลถูกซ่อนอยู่ในสามโหมดสาธารณะส่วนตัวและได้รับการป้องกัน ดังนั้นความปลอดภัยของข้อมูลจึงเพิ่มขึ้น
การแชร์ข้อมูลมีการแชร์ข้อมูลส่วนกลางระหว่างฟังก์ชันในโปรแกรมข้อมูลถูกแชร์ระหว่างวัตถุผ่านฟังก์ชั่นสมาชิก
ฟังก์ชั่นเพื่อน / ชั้นเรียนไม่มีแนวคิดของฟังก์ชั่นเพื่อนชั้นเรียนหรือฟังก์ชั่นสามารถเป็นเพื่อนของชั้นเรียนอื่นด้วยคำหลัก "เพื่อน"
หมายเหตุ: คำหลัก "เพื่อน" ใช้ใน c ++ เท่านั้น
คลาสเสมือน / ฟังก์ชันไม่มีแนวคิดของคลาสเสมือนแนวคิดของฟังก์ชั่นเสมือนปรากฏขึ้นในระหว่างการสืบทอด
ตัวอย่าง C, VB, FORTRAN, PascalC ++, JAVA, VB.NET, C # .NET


คำจำกัดความของการเขียนโปรแกรมเชิงวัตถุ (OOP)

ความกังวลหลักของ OOP คือการซ่อนข้อมูลจากฟังก์ชั่นที่ไม่ใช่สมาชิกของคลาสซึ่งถือว่าเป็น "ข้อมูลที่สำคัญ" ข้อมูลเชื่อมโยงอย่างใกล้ชิดกับฟังก์ชั่นสมาชิกของคลาสซึ่งทำงานกับมัน ไม่อนุญาตให้ฟังก์ชั่นที่ไม่ใช่สมาชิกเพื่อแก้ไขข้อมูลที่อยู่ภายใน วัตถุมีปฏิสัมพันธ์ซึ่งกันและกันผ่านฟังก์ชั่นสมาชิกเพื่อเข้าถึงข้อมูล

OOP ได้รับการพัฒนาบนแนวคิดพื้นฐานของ "วัตถุ", "คลาส", "การห่อหุ้มข้อมูลหรือนามธรรม", "การสืบทอด" และ "Polymorphism / การบรรทุกเกินพิกัด" ใน OOP โปรแกรมสามารถแบ่งออกเป็นโมดูลได้โดยการแบ่งพาร์ติชั่นข้อมูลและฟังก์ชั่นซึ่งสามารถใช้เป็นเทมเพลตสำหรับสร้างสำเนาของโมดูลใหม่ได้หากจำเป็น ดังนั้นจึงเป็นวิธีที่อำนวยความสะดวกในการทำให้เป็นโมดูลโปรแกรมโดยการสร้างพื้นที่หน่วยความจำพาร์ติชันสำหรับข้อมูลและฟังก์ชั่น

แนวคิดเชิงวัตถุ

  • วัตถุ: มันถือเป็นตัวแปรประเภทคลาสและอินสแตนซ์ของคลาส
  • ชั้น: เป็นชุดของวัตถุประเภทเดียวกัน ชุดข้อมูลและรหัสของวัตถุที่สมบูรณ์สร้างประเภทข้อมูลที่ผู้ใช้กำหนดโดยใช้คลาส
  • การเก็บข้อมูลและการห่อหุ้มข้อมูล: Abstraction เป็นเพียงวิธีการซ่อนรายละเอียดพื้นหลังและแสดงคุณสมบัติที่จำเป็น การห่อหุ้มเป็นวิธีการบรรจุข้อมูลและฟังก์ชั่นลงในหน่วยเดียว
  • มรดก: การสืบทอดเป็นเทคนิคของการรับคุณสมบัติของวัตถุจากคลาสหนึ่งไปยังคลาสอ็อบเจ็กต์อื่น กล่าวอีกนัยหนึ่งมันช่วยในการรับคลาสใหม่จากคลาสที่มีอยู่เดิม
  • ความแตกต่าง: ความหลากหลายให้วิธีการสร้างหลายรูปแบบของฟังก์ชั่นโดยใช้ชื่อฟังก์ชั่นเดียว
  • ผูกพันแบบไดนามิก: มันระบุว่ารหัสที่เกี่ยวข้องกับขั้นตอนเฉพาะไม่เป็นที่รู้จักจนกระทั่งช่วงเวลาของการโทร ณ เวลาทำงาน
  • ที่ผ่านไป: แนวคิด OOP นี้ช่วยให้เกิดการโต้ตอบระหว่างคลาสที่แตกต่างกันโดยการส่งและรับข้อมูล

คำจำกัดความของขั้นตอนการเขียนโปรแกรมเชิง (POP)

POP เป็นวิธีการเขียนโปรแกรมแบบดั้งเดิม การโปรแกรมเชิงโพรซีเดอร์คือจุดสนใจหลักในการทำให้งานเสร็จตามลำดับ Flowchart จัดระเบียบการควบคุมของโปรแกรม หากโปรแกรมนั้นกว้างขวางจะมีโครงสร้างในหน่วยเล็ก ๆ บางส่วนที่เรียกว่าฟังก์ชั่นซึ่งแบ่งปันข้อมูลทั่วโลก ที่นี่ความกังวลของความปลอดภัยของข้อมูลเกิดขึ้นเนื่องจากมีการเปลี่ยนแปลงโดยไม่ตั้งใจในโปรแกรมโดยฟังก์ชั่น

ลักษณะของป๊อป

  • ในขณะที่ออกแบบโปรแกรม POP ปฏิบัติตามวิธีการเขียนโปรแกรมจากบนลงล่าง
  • ฟังก์ชั่นส่วนใหญ่อนุญาตให้แชร์ข้อมูลทั่วโลก
  • นอกจากนี้ยังแบ่งโปรแกรมขนาดใหญ่ออกเป็นส่วนเล็ก ๆ ที่เรียกว่าเป็นฟังก์ชั่น
  • จะช่วยให้การเคลื่อนย้ายข้อมูลฟรีรอบระบบจากฟังก์ชั่นไปยังฟังก์ชั่น
  • ข้อมูลถูกแปลงโดยฟังก์ชั่นจากรูปแบบหนึ่งไปยังอีกรูปแบบหนึ่ง
  • มันให้ความสำคัญกับแนวคิดของฟังก์ชั่น
  1. POP คือการเขียนโปรแกรมเชิงโพรซีเดอร์ขณะที่ OOP คือการเขียนโปรแกรมเชิงวัตถุ
  2. จุดสนใจหลักของ POP อยู่ที่“วิธีทำงานให้สำเร็จลุล่วง” มันติดตามแผนภูมิการไหลเพื่อให้งานเสร็จสมบูรณ์ โฟกัสหลักของ OOP คือเปิด ความปลอดภัยของข้อมูล เป็นเพียงวัตถุของชั้นเรียนที่ได้รับอนุญาตให้เข้าถึงคุณลักษณะหรือฟังก์ชั่นของชั้นเรียน
  3. ฟังก์ชั่น เป็นหน่วยเล็ก ๆ ของโปรแกรมขนาดใหญ่หรือโปรแกรมย่อยที่ทำงานเพื่อให้งานหลักเสร็จสิ้น ในทางตรงกันข้ามคุณสมบัติ OOP และฟังก์ชั่นของชั้นเรียนจะถูกแบ่งออกเป็น วัตถุ.
  4. ใน POP ไม่มีโหมดการเข้าถึงเฉพาะเพื่อเข้าถึงคุณลักษณะหรือฟังก์ชั่นในโปรแกรม ในทางกลับกันใน OOP มีสามโหมดการเข้าถึง "สาธารณะ", "ส่วนตัว", "ป้องกัน" ที่ใช้เป็นวิธีการเข้าถึงการเข้าถึงคุณลักษณะหรือฟังก์ชั่น
  5. POP ไม่สนับสนุนแนวคิดของ Overloading / polymorphism ในทางตรงกันข้าม OOP รองรับการโหลดมากเกินไป / ความแตกต่างซึ่งหมายถึงการใช้ชื่อฟังก์ชั่นเดียวกันสำหรับการปฏิบัติหน้าที่ที่แตกต่างกัน เราสามารถโอเวอร์โหลดฟังก์ชั่นคอนสตรัคเตอร์และโอเปอเรเตอร์ใน OOP
  6. ไม่มีแนวคิดเกี่ยวกับการสืบทอดใน POP ขณะที่ OOP สนับสนุนการสืบทอดซึ่งอนุญาตให้ใช้คุณลักษณะและฟังก์ชันของคลาสอื่นโดยสืบทอด
  7. POP มีความปลอดภัยน้อยกว่าเมื่อเปรียบเทียบกับ OOP เนื่องจากใน OOP ตัวระบุการเข้าถึง จำกัด การเข้าถึงคุณลักษณะหรือฟังก์ชันที่เพิ่มความปลอดภัย
  8. ใน POP หากมีการแบ่งปันข้อมูลระหว่างฟังก์ชั่นทั้งหมดในโปรแกรมจะมีการประกาศทั่วโลกนอกฟังก์ชั่นทั้งหมด ในขณะที่อยู่ใน OOP สมาชิกข้อมูลของคลาสสามารถเข้าถึงได้ผ่านฟังก์ชันสมาชิกของคลาส
  9. ใน POP ไม่มีแนวคิดของฟังก์ชั่นเพื่อน ในทางตรงกันข้ามใน OOP มีแนวคิดของฟังก์ชั่นเพื่อนที่ไม่ได้เป็นสมาชิกของชั้นเรียน แต่เพราะมันเป็นสมาชิกของเพื่อนมันสามารถเข้าถึงข้อมูลสมาชิกและฟังก์ชั่นสมาชิกของชั้นเรียน
  10. ไม่มีแนวคิดของคลาสเสมือนใน POP ในขณะที่ OOP ฟังก์ชันเสมือนสนับสนุน polymorphism

ข้อดี

POP (การเขียนโปรแกรมเชิงกระบวนงาน)

  • ให้ความสามารถในการใช้ซ้ำรหัสเดียวกันในสถานที่ต่างๆ
  • อำนวยความสะดวกในการติดตามการไหลของโปรแกรม
  • ความสามารถในการสร้างโมดูล

OOP (การเขียนโปรแกรมเชิงวัตถุ)

  • วัตถุช่วยในการแบ่งงานในโครงการ
  • สามารถสร้างโปรแกรมที่ปลอดภัยโดยใช้การซ่อนข้อมูล
  • มันสามารถแมปวัตถุ
  • เปิดใช้งานการจัดหมวดหมู่ของวัตถุเป็นคลาสต่างๆ
  • ระบบที่มุ่งเน้นวัตถุสามารถอัพเกรดได้อย่างง่ายดาย
  • รหัสที่ซ้ำซ้อนสามารถกำจัดได้โดยใช้การสืบทอด
  • รหัสสามารถขยายได้โดยใช้ความสามารถในการนำกลับมาใช้ใหม่
  • สามารถสร้างโมดุลมากขึ้น
  • Data abstraction ช่วยเพิ่มความน่าเชื่อถือ
  • ยืดหยุ่นเนื่องจากแนวคิดการเชื่อมโยงแบบไดนามิก
  • ลดข้อกำหนดที่จำเป็นจากการใช้งานโดยใช้การซ่อนข้อมูล

ข้อเสีย

POP (การเขียนโปรแกรมเชิงกระบวนงาน)

  • ข้อมูลทั่วโลกมีความเสี่ยง
  • ข้อมูลสามารถเคลื่อนย้ายได้อย่างอิสระภายในโปรแกรม
  • มันยากที่จะตรวจสอบตำแหน่งข้อมูล
  • ฟังก์ชั่นการกระทำที่มุ่งเน้น
  • ฟังก์ชั่นไม่สามารถเกี่ยวข้องกับองค์ประกอบของปัญหา
  • ปัญหาในโลกแห่งความเป็นจริงไม่สามารถจำลอง
  • บางส่วนของรหัสพึ่งพาซึ่งกันและกัน
  • รหัสแอปพลิเคชันหนึ่งไม่สามารถใช้ในแอปพลิเคชันอื่น
  • ข้อมูลถูกถ่ายโอนโดยใช้ฟังก์ชั่น

OOP (การเขียนโปรแกรมเชิงวัตถุ)

  • มันต้องใช้ทรัพยากรมากขึ้น
  • พฤติกรรมแบบไดนามิกของวัตถุต้องการหน่วยความจำแรม
  • การตรวจจับและการดีบักนั้นทำได้ยากขึ้นในแอปพลิเคชันที่ซับซ้อนเมื่อทำการส่งผ่าน
  • มรดกทำให้ชั้นเรียนของพวกเขาควบคู่กันอย่างแน่นหนาซึ่งมีผลต่อการนำกลับมาใช้ใหม่ของวัตถุ

ข้อสรุป

ข้อบกพร่องของ POP ทำให้เกิดความต้องการ OOP OOP แก้ไขข้อบกพร่องของ POP โดยแนะนำแนวคิดของ "วัตถุ" และ "คลาส" มันช่วยเพิ่มความปลอดภัยของข้อมูลและการเริ่มต้นโดยอัตโนมัติ & การล้างวัตถุ OOP ทำให้สามารถสร้างวัตถุได้หลายอินสแตนซ์โดยไม่มีการรบกวนใด ๆ