วิธีที่ดีที่สุดในการเรียนรู้แนวคิด / หลักการของ OOP จริงหรือไม่ [ปิด]


12

ฉันต้องการเรียนรู้ภาษาการเขียนโปรแกรมเชิงวัตถุฉันไม่ต้องการเพื่อจุดประสงค์ใด ๆ เพียงเพื่อทราบแนวคิดทั้งหมดของ OOP มีใครบอกฉันได้ว่าฉันควรเริ่มเรียนภาษาอะไร


1
คุณรู้ภาษาอะไรบ้าง
Mchl

C, VB.NET และ C ++ แต่ไม่ใช่ส่วนของ OOP
Caffeinatedwolf

1
เลือก VB.NET จากนั้น
Vinoth Kumar CM

ไม่ฉันไม่ต้องการ VB.NET ฉันต้องการให้พวกคุณช่วยฉันเลือกระหว่าง Java, C ++, Python ฯลฯ ...
Caffeinatedwolf

3
คุณต้องการที่จะเรียนรู้บางสิ่งบางอย่างโดยไม่มีวัตถุประสงค์?
JeffO

คำตอบ:


13

คำแนะนำเพิ่มเติม:

  • หนังสือที่ดีที่สุดที่ฉันเคยอ่านบาร์ OOP ใครคือเบอร์ทรานด์เมเยอร์Object Oriented Software ก่อสร้าง มันไม่ใช่การอ่านที่ 'ง่าย' ในการที่คุณจะต้องคิดหนักในสถานที่ แต่มันก็เป็นงานที่ดีที่สุดที่ฉันเคยเห็นในการอธิบายหลักการ OO

  • สำหรับภาษา: ฉันจะอยู่ห่างจาก C ++ ใหญ่เกินไปสำหรับวัตถุประสงค์ในการเรียนรู้ หากคุณต้องการภาษาที่จะช่วยให้คุณเข้าใจ OO (ตรงข้ามกับภาษาที่คุณจะเขียนแอพพลิเคชั่นหลักใน / หางานโดยใช้) ให้ดูที่ smalltalk หรือไอเฟล (ภาษาในหนังสือของเมเยอร์ด้านบน)

  • หากคุณต้องการภาษาที่มีความสำคัญมากกว่า แต่ก็ยังรองรับหลักการ OO อย่างซื่อสัตย์ Python เป็นเดิมพันที่ดี Java & C # ก็เหมาะสมเช่นกันหากคุณต้องการพิมพ์แบบคงที่

คำเตือนหนึ่งข้อ: ภาษาจะไม่สอนคุณ OO มันสามารถช่วย (หรือขัดขวาง) ว่าสนับสนุนแนวคิด OO ได้ดีเพียงใด การเรียนรู้ OO นั้นเกี่ยวกับการเรียนรู้ที่จะคิดในแง่ของ OO เพื่อที่ฉันจะกลับมาที่หนังสือของเมเยอร์

HTH


1
สิ่งอื่น ๆ ใน C ++ เป็นสำคัญ มันเป็นสิ่งสำคัญที่ต้องรู้เกี่ยวกับมรดกเสมือน มันเป็นสิ่งสำคัญที่จะรู้เกี่ยวกับการสนับสนุนที่แข็งแกร่งทั่วไปเวลารวบรวมและเป็นสิ่งสำคัญที่จะรู้เกี่ยวกับคุณค่า VS อ้างอิง สำหรับบางสิ่งบางอย่างเช่น Java กำลังจะเกิดขึ้น "LA LA LA ฉันไม่สามารถได้ยินคุณนี่เป็นวิธีเดียวที่จะทำได้"
DeadMG

2
ใช่และไม่. คำถามของ OP เกี่ยวกับการเรียนรู้ซึ่งหมายถึงพื้นฐานก่อน ฉันไม่เชื่อว่าภาษาซีพลัสพลัสจะเป็นหนึ่งในภาษาที่เหมาะสมที่สุดสำหรับการเรียนรู้ ที่กล่าวว่า: Meyer ครอบคลุมข้อมูลทั่วไปและค่าเทียบกับการอ้างอิงต่อไปแม้ว่าจะเป็นหัวข้อขั้นสูง นอกจากนี้เขายังเข้าร่วมและต้านความแปรปรวนในส่วนหลังของหนังสือ แต่เขากำหนดพื้นฐานก่อน (และไอเฟลถูกพิมพ์แบบคงที่ btw)
sfinnie

1
ฉันจะไม่เห็นด้วยหรือไม่เห็นด้วยกับคำแนะนำของไอเฟลเพราะฉันไม่เคยใช้หรือเคยเห็นหรืออ่านอะไรเกี่ยวกับเรื่องนี้ อย่างไรก็ตามฉันจะไม่เห็นด้วยกับคำแนะนำใด ๆ สำหรับ Java และ C # ตามที่ฉันพูด
DeadMG

12

คุณสามารถเรียนรู้ภาษาเชิงวัตถุใด ๆ เช่น C ++, Java, C # และอื่น ๆ เพื่อลอง OOPS

หากคุณต้องการเรียนรู้ OOP จริงๆคุณต้องคิดให้ไกลกว่าภาษาและเข้าใจว่าเป็นกระบวนทัศน์ที่ช่วยให้ความซับซ้อนของ mangae ในโปรแกรมซอฟต์แวร์เหมือนกับที่เราจัดการกับมันในโลกแห่งความเป็นจริงนี้ จากนั้นเรียนรู้แนวคิดพื้นฐานใน OO เช่น Polymorphism, Inheritance, Encapsulation (PIE)เป็นต้น

มีหนังสือดีๆเกี่ยวกับการวิเคราะห์และออกแบบเชิงวัตถุด้วยแอพพลิเคชั่น (รุ่นที่ 2) โดย Grady Booch

นอกจากนี้คุณอาจลองบล็อกเช่นนี้ที่ผมพบก็คือพอที่ง่ายต่อการเริ่มต้น with- fascinatingoops.com


3

คุณต้องการเรียนรู้ OOP? หนึ่งคำตอบ - Smalltalk

มันเป็นภาษาที่สง่างามและเป็น OO ถึงหลัก คุณจะได้เรียนรู้ OOP ตั้งแต่เริ่มต้นและจะไม่ถูกขัดขวางจากสิ่งรบกวนอื่น ๆ ที่ภาษาอื่นจัดการรวมเข้าด้วยกัน

สมอลทอล์คชนะ และยังมีหนังสืออิเล็กทรอนิกส์ฟรีอีกด้วย (ดู: Stephane Ducasse )


3

คุณจะต้องเรียนรู้ C ++ หรืออาจเป็นหนึ่งในบรรพบุรุษเช่น Smalltalk C ++ เสนอการแยกที่ชัดเจนระหว่างแนวคิดเช่นการวางแนววัตถุการจัดการหน่วยความจำและค่าอ้างอิงเทียบกับและมีการสนับสนุนทั่วไปที่แข็งแกร่ง

ไม่เรียนรู้ Java หรือภาษา. NET เช่น C # เมื่อคุณเรียนรู้ภาษาเช่น Java คุณจะได้เรียนรู้สิ่งต่าง ๆ เช่น "ออบเจ็กต์อยู่บนฮีปเสมอและอ้างอิงอยู่เสมอ" ซึ่งเป็นจริงสำหรับจาวาเท่านั้นและไม่เป็นความจริงสำหรับ OOP โดยทั่วไป การรวมแนวคิด (การวางวัตถุการจัดการหน่วยความจำการอ้างอิงเทียบกับค่า) นี้เป็นสิ่งที่อันตรายมากสำหรับภาษาแรกเพราะเมื่อคุณติดอยู่ในหัวของคุณมันอาจเป็นเรื่องยากมากที่จะนำพวกเขาออกมา C # ค่อนข้างดีในเรื่องนี้ แต่ไม่มาก นอกจากนี้พวกเขาสามารถมีแนวโน้มสูงในการสอน "มรดกคือค้อนและทุกอย่างเป็นเล็บ" ด้วยการสนับสนุนการเขียนโปรแกรมทั่วไปที่อ่อนแอ


นี่เป็นเรื่องจริง ฉันไม่เคยคิดถึงเรื่องนี้มาก่อนจริง ๆ แล้วเมื่อต้องรับมือกับภาษาที่ให้ความสำคัญกับ OOP และพยายามที่จะแก้ปัญหาทุกอย่างด้วย OOP คุณจะไม่ได้เรียนรู้ว่าปัญหาใดไม่เหมาะกับ OOP
daramarak

1

วิธีที่ดีที่สุดในการเรียนรู้แนวคิดของ OOP คือการเขียนโค้ดมากขึ้นเรื่อย ๆ และทบทวนมันบ่อยครั้ง ฝึกทำโปรแกรมเมอร์ที่ดี

คิดสถานการณ์โลกแห่งความจริงกำหนดคำแถลงปัญหา - แก้ไขมันในโค้ดและทำการทบทวน คุณสามารถขอความช่วยเหลือได้จาก/codereview//สำหรับความคิดเห็น :)

การเข้ารหัสมีความสุข !!!


0

ขั้นตอน

  1. เรียนรู้สิ่งที่พวกเขาหมายถึง
  2. เรียนรู้วิธีการใช้งาน
  3. ทำโปรเจคเพื่อพัฒนาเลือกภาษาของคุณ [ซึ่งควรมีหลักการ OOPS รวมอยู่เช่น VB.NET หรือ C # หรือ C ++ หรือ java เป็นต้น]
  4. คิดเกี่ยวกับวิธีที่คุณสามารถทำให้ตรรกะโครงการง่ายขึ้นโดย OOPS [หมายเหตุ: อย่าเพิ่งใช้งาน OOPS เพราะคุณต้องการมีพวกมัน แต่ควรแก้ไขวัตถุประสงค์ของคุณ]
  5. อย่าลืม: คุณจะได้เรียนรู้จากความผิดพลาดของคุณมากเกินไป

0

การติดต่อครั้งแรกของฉันกับโลกของ OO คือ C ++ ซึ่งไม่ใช่จุดเริ่มต้นที่ไม่ดี แต่ฉันพัฒนาขึ้นมากเมื่อเรียนรู้ Python ความแตกต่างนั้นมาจากภาษาต่างๆ: ลองใช้ความคิด ('ฉันจะแก้ปัญหานี้ในรูปแบบ OO ได้อย่างไร') ใน C ++ ต้องการโค้ดเพิ่มเติมที่จะเขียนและรวมถึงข้อผิดพลาดมากกว่าลองใช้แนวคิดเดียวกันใน Python ดังนั้นฉันจะแนะนำ Python


0

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

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

มีข้อ จำกัด ที่แน่นอนสำหรับบางภาษา หากเป้าหมายของคุณคือการเป็นผู้สืบทอดมรดกหลายระดับ


0

ฉันจะไปกับความคิดเดิมที่นี่และชี้ให้เห็นว่าภาษาที่ง่ายที่สุดสำหรับการใช้ OOP ไม่จำเป็นต้องเป็นภาษาที่ดีที่สุดสำหรับการเรียนรู้มัน ฉันเปิดรับ OOP ครั้งแรกด้วย C ++ แต่ฉันไม่ได้ "รับ" จนกว่าจะอ่านบทอูฐหนังสือของ Larry Wall บน OOP ด้วย Perl ด้วยเหตุผลบางอย่างฉันมีปัญหาในการเข้าใจความแตกต่างระหว่างชั้นเรียนและวัตถุจนกว่าจะต้องอวยพรวัตถุอย่างชัดเจนในชั้นเรียน ฉันไม่เข้าใจการใช้งานพื้นฐานของ OOP จนกระทั่งดำเนินการใน C กับ GObject โดยที่ไม่มีรายละเอียดใดที่ซ่อนอยู่จากคุณ ฉันไม่เข้าใจวิธีปฏิบัติที่ดีที่สุดอย่างแท้จริงจนกระทั่งได้เรียนในชั้น บริษัท ที่ไม่เชื่อเรื่องภาษา มันเป็นหัวข้อใหญ่มาก.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.