คำถามติดแท็ก object-oriented

วิธีการที่ทำให้ระบบสามารถสร้างแบบจำลองเป็นชุดของวัตถุที่สามารถควบคุมและจัดการในลักษณะโมดูลาร์

3
กระบวนการคิดเชิงวัตถุคืออะไร? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันกำลังศึกษา OOP ร่วมกับการใช้ MVC ของ Zend ในช่วงไม่กี่เดือนที่ผ่านมา โดยทั่วไปฉันค่อนข้างใหม่กับการเขียนโปรแกรม แต่ฉันรู้สึกอย่างยิ่งว่าฉันควรเรียนรู้สิ่งต่าง ๆ ในแบบที่ 'ถูกต้อง' ซึ่งสำหรับฉันหมายถึงการทำให้แน่ใจว่าฉันเข้าใจว่าทำไมสิ่งต่าง ๆ ถึงถูกต้อง คือฉันได้พบว่าในการเรียนรู้วิธีทำบางสิ่ง (พูดอะไรเพลง) วิธีที่ดีที่สุดในการเรียนรู้วิธีทำบางสิ่งคือรู้ว่าทำไมมันถึงทำแบบนั้นตั้งแต่แรก อย่างไรก็ตามฉันพยายามอย่างหนักกับความเข้าใจในการพัฒนารูปแบบธุรกิจของตัวเอง (เช่น M ของ MVC) และฉันตัดสินใจว่าไม่ใช่เพราะฉันไม่เข้าใจ OOP โดยทั่วไปเพราะฉันศึกษามาหลายครั้ง เดือนและฉันไม่คิดว่าแนวคิดจะยากมากที่จะเข้าใจ ฉันพบตัวอย่างที่ฉันได้ศึกษาอย่างเข้าใจง่าย ฉันคิดว่าปัญหาสำหรับฉันนั้นอยู่ในขั้นตอนการแปลปัญหาของฉันเองไปสู่การแก้ปัญหาเชิงวัตถุ ตัวอย่างในหนังสือ (ที่ฉันอ่านมาแล้ว) ชัดเจนเกินไปดังนั้นกระบวนการแปลปัญหาเป็นวัตถุไม่ยากมาก สิ่งที่ฉันคิดว่าฉันอาจขาดหายไปคือกระบวนการที่เป็นนามธรรมระดับสูง รายการขั้นตอนหรือคำถามบางประเภทที่โซลูชันเชิงวัตถุทุกตัวต้องตอบในระดับสูงสุด หากคุณต้องอธิบายกระบวนการดังกล่าวในไม่เกินห้าขั้นตอนพวกเขาจะเป็นอย่างไรและเพราะอะไร กระบวนการที่มีประสิทธิภาพที่สุดในการแปลปัญหาใด ๆ ให้เป็นโซลูชันเชิงวัตถุคืออะไร

1
ฟังก์ชั่นการสลายตัวเป็นปฏิปักษ์จริงหรือไม่?
ในขณะที่ฉันกำลังอ่านรูปแบบการต่อต้านที่แย่ที่สุดที่คุณเจอฉันคลิกที่ลิงค์ในโพสต์นี้เพื่อลงบนเว็บไซต์เกี่ยวกับรูปแบบการต่อต้าน และหน้าhttp://sourcemaking.com/antipatterns/functional-decompositionทำให้ฉันสงสัย รูปแบบการต่อต้านนี้แย่ขนาดไหนและเป็นรูปแบบการต่อต้านเลยหรือไม่? เพราะถึงแม้ว่าฉันจะเขียนโปรแกรม OOP เป็นส่วนใหญ่ในทุกวันนี้ แต่ฉันก็ยังรู้สึกไม่เต็มใจกับภาษา OOP ที่บริสุทธิ์ทุกอย่างเช่น Java และวิธีการออกแบบที่พวกเขานำมาใช้ และฉันเดาว่าฉันยังคงมีคุณลักษณะบางอย่างของการเขียนโปรแกรมฟังก์ชั่นในขณะที่ฉันเขียนรหัส และสิ่งนี้ทำให้เกิดคำถามขึ้นฉันกำลังทำผิดโดยติดกับ OOP + ฟังก์ชั่นสไตล์หรือเป็นเรื่องธรรมดาในอุตสาหกรรมและไม่ใช่เรื่องเลวร้าย สิ่งที่ฉันรู้จากประสบการณ์คือสไตล์ OOP + ฟังก์ชั่นไม่เข้ากันได้กับนักพัฒนา OOP อย่างแท้จริง แต่ในขณะเดียวกันในขณะที่นักพัฒนา OOP มีปัญหากับการพัฒนา OOP + ฟังก์ชั่นการโต้เถียงก็คือการแก้ปัญหา OOP มักจะใช้งานมากเกินไปและยากต่อการใช้งานและจากประสบการณ์ของฉันไม่ได้ง่ายขึ้นสักหน่อยจริงๆ แนะนำจุดบอดบางอย่างสำหรับข้อบกพร่องที่ร้ายแรงมากที่จะซ่อน ดังนั้นแม้ว่าฉันจะพูดคุยกับเพื่อนร่วมงานของฉันเกี่ยวกับหัวข้อเหล่านี้ฉันก็สรุปได้ว่าไม่มีวิธีใดที่สมบูรณ์แบบจริง และฉันยังคงมีคำถามที่ยังไม่ได้ตอบ ปัญหา OOP ได้รับการเสริมด้วยลิงก์จากโพสต์อื่นในเธรดเดียวกัน ลิงค์จะดูที่สไตล์ OOP ของ Java http://chaosinmotion.com/blog/?p=622 ดังนั้นทัศนคติทั่วไปที่มีต่อการผสมการทำงานของโปรแกรมกับ OOP คืออะไร? และอะไรคือความสมดุลที่นักพัฒนาควรพยายามที่จะบรรลุ?

3
การรักษาโมเดล MVC ไว้อย่างหลวม ๆ จากฐานข้อมูลหรือไม่
ฉันชอบที่จะให้โค้ดของฉันทดสอบได้และตัดสินใจที่จะใช้กลยุทธ์ Dependency-Injection สำหรับกรอบงาน MVC ปัจจุบันของฉันซึ่งได้พิสูจน์แล้วว่าเป็นวิธีที่ยอดเยี่ยมในการทำให้มั่นใจได้ว่าโค้ดคู่กันอย่างหลวม ๆ ความสามารถในการทดสอบและโมดูล แต่เมื่ออยู่ไกลจากต้นแบบในรูปแบบการออกแบบฉันมีช่วงเวลาที่ยากลำบากในการหาวิธีที่ดีในการรักษาแบบจำลองของฉันให้แน่นควบคู่ไปกับคลาสตัวเชื่อมต่อฐานข้อมูลเท่าที่จะทำได้ สิ่งนี้ทำได้อย่างไร เนื่องจากฉันไม่ได้ให้รหัสทางกายภาพใด ๆ พร้อมกับคำถามนี้ฉันจะขอขอบคุณตรรกะ / ตัวอย่างโค้ดหรือข้อมูลบางอย่างที่สามารถชี้ให้ฉันไปในทิศทางที่จะเข้าใจปัญหาที่อธิบายไว้ข้างต้น

2
กระบวนทัศน์เหมาะสำหรับการเขียนโปรแกรม UI
นี่เป็นคำถามที่เจาะจงมากขึ้น (หรือจริง ๆ แล้วสองข้อ แต่เกี่ยวข้องกัน) มาจากความคิดเห็นของเทคโนโลยี OOPที่บางคนกล่าวว่า OOP ไม่ใช่กระบวนทัศน์ที่เหมาะสมสำหรับการเขียนโปรแกรม GUI การอ่านความคิดเห็นที่นั่นและที่นี่ฉันยังคงรู้สึกว่ามีสิ่งที่ต้องเรียนรู้: กระบวนทัศน์การเขียนโปรแกรมใดที่ถือว่าเหมาะสมและทำไมพวกเขาถึงดีกว่าคนอื่น ๆ (อาจมีตัวอย่างเพื่ออธิบาย) ฉันลบตัวอย่าง tk ออกจากชื่อและคำถาม

8
การตายของเทคโนโลยี OOP [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันได้ยินมาหลายครั้งเกี่ยวกับการเขียนโปรแกรมที่มุ่งเน้นด้านซึ่งส่วนใหญ่เป็นเทคโนโลยี "รุ่นต่อไป" ในการเขียนโปรแกรมและกำลังจะ 'ฆ่า' OOP ถูกต้องหรือไม่ OOP จะตายหรือมีเหตุผลอะไร

5
คุณสามารถพัฒนาทักษะการเขียนโปรแกรมโดยเรียนรู้กระบวนทัศน์ภาษาอื่น ๆ ได้หรือไม่?
ถ้าเป็นเช่นนั้นคุณช่วยบอกฉันได้หรือไม่ว่าการเรียนรู้กระบวนทัศน์ใหม่เปลี่ยนวิธีการของคุณในการแก้ปัญหาการเขียนโปรแกรมแม้ว่าปัญหาจะอยู่ในกระบวนทัศน์ / ภาษา / เทคโนโลยีอื่นหรือไม่? ฉันจะซาบซึ้งจริง ๆ ถ้าคุณสามารถบอกฉันในลักษณะที่เฉพาะเจาะจงวิธี X (เช่น: JAVA / C # / C ++) ทักษะการเขียนโปรแกรมของคุณดีขึ้นโดยการเรียนรู้ Y (เช่น: Scheme / Prolog / Lisp) นอกจากนี้กรอบความคิดใดที่คุณแนะนำช่วยให้มากที่สุดในการเป็นโปรแกรมเมอร์ที่ดี? ประสบการณ์ของฉันมีโครงสร้างเท่านั้น - OOP, ความจำเป็น - ขั้นตอนและในขอบเขตของเทมเพลตการเขียนโปรแกรม แต่ฉันไม่ได้เรียนรู้ภาษาอื่น ขอบคุณ!

5
เราจะรู้ได้อย่างไรว่าองค์ประกอบที่สนับสนุนการวางนัยทั่วไปเป็นตัวเลือกที่ถูกต้องเสมอ
ไม่ว่าวัตถุจะมีอยู่จริงหรือไม่ก็ตามเราสามารถเลือกที่จะสร้างแบบจำลองด้วยวิธีที่แตกต่างกัน เราสามารถใช้การวางนัยทั่วไปหรือการจัดองค์ประกอบตามอำเภอใจในหลายกรณี อย่างไรก็ตามหลักการ GoF ของ "การจัดองค์ประกอบที่โปรดปรานเหนือการวางนัยทั่วไป [sic]" แนะนำให้เราใช้การจัดวาง ดังนั้นเมื่อเราสร้างแบบจำลองตัวอย่างหนึ่งบรรทัดจากนั้นเราสร้างคลาสที่มีสมาชิกสองคน PointA และ PointB ของประเภท Point (องค์ประกอบ) แทนการขยายจุด (ลักษณะทั่วไป) นี่เป็นเพียงตัวอย่างที่เรียบง่ายของวิธีที่เราสามารถเลือกการจัดองค์ประกอบหรือการสืบทอดให้กับโมเดลโดยพลการแม้ว่าวัตถุนั้นจะมีความซับซ้อนมากขึ้น เราจะรู้ได้อย่างไรว่านี่เป็นตัวเลือกที่ถูกต้อง? อย่างน้อยก็สำคัญเพราะอาจมีการปรับโครงสร้างอีกหลายครั้งหากทำผิด

6
ในกรณีที่เป็นระบบเชิงวัตถุคุณควรเลือก struct (สไตล์ C) บนคลาสหรือไม่?
C และเป็นไปได้ว่าภาษาอื่น ๆ มักจะมีstructคำหลักสำหรับการสร้างโครงสร้าง (หรือบางสิ่งในลักษณะที่คล้ายกัน) เหล่านี้คือ (อย่างน้อยใน C) จากมุมมองแบบง่ายเช่นคลาส แต่ไม่มี polymorphism, inheritance, methods และอื่น ๆ นึกถึงภาษาเชิงวัตถุ (หรือหลายกระบวนทัศน์) ด้วยโครงสร้าง C-style คุณจะเลือกเรียนที่ไหนดี? ตอนนี้ฉันไม่เชื่อว่าพวกเขาจะต้องใช้กับ OOP เนื่องจากคลาสดูเหมือนจะแทนที่วัตถุประสงค์ของพวกเขา แต่ฉันสงสัยว่ามีสถานการณ์ที่พวกเขาจะได้รับความนิยมมากกว่าคลาสในโปรแกรมเชิงวัตถุหรือในสถานการณ์ประเภทใด มีสถานการณ์เช่นนี้หรือไม่?

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

4
ทำไมโปรแกรมเมอร์จำนวนมากถึงเกลียดชังความแพร่หลายของวัตถุ?
ความชุกเป็นเทคนิคง่าย ๆ ในการจัดเตรียมคุณสมบัติของกรดให้กับโมเดลวัตถุในหน่วยความจำโดยยึดตามการทำให้เป็นอนุกรมไบนารีและการบันทึกล่วงหน้า มันทำงานได้เช่นนี้: เริ่มต้นด้วยภาพรวม ทำให้โมเดลวัตถุเป็นอนุกรมและเขียนลงในไฟล์ สร้างไฟล์เจอร์นัล สำหรับการโทรทุกครั้งในโมเดลวัตถุให้จัดลำดับการโทรและอาร์กิวเมนต์ เมื่อวารสารมีขนาดใหญ่เกินไปคุณกำลังปิดตัวลงหรือไม่ก็สะดวกทำด่าน: เขียนสแนปชอตใหม่แล้วตัดทอนบันทึก หากต้องการย้อนกลับหรือกู้คืนจากความผิดพลาดหรือกำลังไฟฟ้าให้โหลดภาพรวมล่าสุดและเรียกใช้การโทรทั้งหมดที่บันทึกในเจอร์นัลอีกครั้ง ข้อควรระวังที่จำเป็นสำหรับการทำงานนี้คือ: อย่าปล่อยให้การอ้างอิงวัตถุที่ไม่แน่นอนหนีออกมาหรือเข้าสู่ชั้นความชุก คุณต้องการพร็อกซีหรือแผน OID บางประเภทราวกับว่าคุณกำลังทำ RPC (นี่เป็นความผิดพลาดที่พบบ่อยของมือใหม่ที่ชื่อเล่นว่า ' ปัญหาการล้างบาป ') ตรรกะทั้งหมดที่เข้าถึงได้จากการโทรต้องกำหนดอย่างสมบูรณ์และต้องไม่ทำการโทร I / O หรือ OS ที่มีความหมายทางธุรกิจ การเขียนไปยังบันทึกการวินิจฉัยอาจเป็นไปได้ แต่การได้รับเวลาของระบบหรือการเปิดใช้งานตัวแทนไม่ตรงกัน นี่คือเพื่อให้เจอร์นัลรีเพลย์เหมือนกันแม้ว่าจะถูกกู้คืนบนเครื่องอื่นหรือในเวลาอื่น (รหัสความชุกส่วนใหญ่ให้การโทรเวลาอื่นเพื่อรับการบันทึกเวลาธุรกรรม) การทำงานพร้อมกันของนักเขียนแนะนำความคลุมเครือในการตีความวารสารดังนั้นจึงเป็นสิ่งต้องห้าม เป็นเพราะ ... คนที่ได้รับการพัฒนารสชาติที่ไม่ดีสำหรับพวกเขาหลังจากที่พยายามที่จะใช้หนึ่งในโครงการที่ไม่เหมาะสมเป็นอย่างดี*ไปได้หรือไม่ เคลาส์ Wuestefeld ของการสนับสนุนพร่า หันคนออก ? คนที่ชอบโมเดลการเขียนโปรแกรมแบบบังคับนั้นไม่ชอบการแยก I / O ออกจากการคำนวณเลือกที่จะใช้ interleave การคำนวณด้วย I / …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.