คำถามติดแท็ก oop

การเขียนโปรแกรมเชิงวัตถุเป็นกระบวนทัศน์การเขียนโปรแกรมโดยใช้ "วัตถุ": โครงสร้างข้อมูลประกอบด้วยเขตข้อมูลและวิธีการร่วมกับการโต้ตอบของพวกเขา


15
เมื่อใดที่ฉันควรใช้ struct แทนคลาส
MSDN บอกว่าคุณควรใช้ structs เมื่อคุณต้องการวัตถุที่มีน้ำหนักเบา มีสถานการณ์อื่น ๆ อีกหรือไม่เมื่อมีโครงสร้างที่ต้องการมากกว่าคลาส? บางคนอาจลืมว่า: structsสามารถมีวิธีการ structsไม่สามารถสืบทอด ฉันเข้าใจความแตกต่างทางเทคนิคระหว่าง structs และคลาสฉันแค่รู้สึกไม่ดีเมื่อจะใช้ struct
302 .net  oop 

13
ทำไมจึงต้องตั้งค่าตัวสร้างต้นแบบ?
ในส่วนเกี่ยวกับการสืบทอดในบทความ MDN บทนำสู่จาวาสคริปต์เชิงวัตถุฉันสังเกตเห็นว่าพวกเขาตั้งต้นแบบ // correct the constructor pointer because it points to Person Student.prototype.constructor = Student; สิ่งนี้มีจุดประสงค์สำคัญหรือไม่? มันไม่เป็นไรที่จะละเว้นหรือไม่


16
อะไรคือความแตกต่างระหว่างคลัปต่อหลวมและคลัปคับในกระบวนทัศน์เชิงวัตถุ
มีใครอธิบายความแตกต่างที่แน่นอนระหว่างคลัปข้อต่อหลวมและคลัปคับในกระบวนทัศน์เชิงวัตถุได้หรือไม่?
272 oop  object  coupling 

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

18
ฉันควรใช้“ สิ่งนี้” ในชั้นเรียนเมื่อใด
ฉันรู้ว่าthisหมายถึงวัตถุปัจจุบัน แต่ฉันไม่รู้ว่าเมื่อไรฉันต้องใช้มันจริงๆ ตัวอย่างเช่นจะมีความแตกต่างหรือไม่หากฉันใช้xแทนthis.xวิธีการบางอย่าง? อาจxจะหมายถึงตัวแปรซึ่งเป็นท้องถิ่นสำหรับวิธีการพิจารณา? ฉันหมายถึงตัวแปรที่เห็นในวิธีนี้เท่านั้น เกี่ยวกับthis.method()อะไร ฉันสามารถใช้มันได้หรือไม่ ฉันควรจะใช้มัน ถ้าฉันเพิ่งใช้method()มันจะไม่ถูกนำไปใช้กับวัตถุปัจจุบันหรือไม่
267 java  oop  this 

13
คุณจะสร้างคลาสแบบคงที่ใน C ++ ได้อย่างไร
คุณจะสร้างคลาสแบบคงที่ใน C ++ ได้อย่างไร ฉันควรจะทำสิ่งที่ชอบ: cout << "bit 5 is " << BitParser::getBitAt(buffer, 5) << endl; สมมติว่าฉันสร้างBitParserชั้นเรียน BitParserคำจำกัดความของคลาสจะเป็นอย่างไร
263 c++  oop  class  syntax  static 

14
วิธีการเรียนกับสแตติกใน JavaScript
ฉันรู้ว่ามันใช้งานได้: function Foo() {}; Foo.prototype.talk = function () { alert('hello~\n'); }; var a = new Foo; a.talk(); // 'hello~\n' แต่ถ้าฉันต้องการโทร Foo.talk() // this will not work Foo.prototype.talk() // this works correctly ฉันหาวิธีบางอย่างเพื่อให้Foo.talkทำงาน Foo.__proto__ = Foo.prototype Foo.talk = Foo.prototype.talk มีวิธีอื่นในการทำเช่นนี้อีกไหม? ฉันไม่รู้ว่าถูกต้องหรือไม่ คุณใช้วิธีการเรียนหรือวิธีการคงที่ในรหัส JavaScript ของคุณ?
262 javascript  oop 

7
หมายความว่า Javascript เป็นภาษาต้นแบบหรือไม่
หนึ่งในข้อดีที่สำคัญของ Javascript นั้นได้รับการกล่าวขานว่าเป็นภาษาที่ใช้ต้นแบบ แต่มันหมายความว่าอะไรที่ Javascript ใช้ต้นแบบและทำไมมันถึงได้เปรียบ?

6
วิธีปฏิบัติที่ดีที่สุดสำหรับ Javascript Object Oriented? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องการอภิปรายการโต้แย้งการหยั่งเสียงหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันพบว่าตัวเองเขียนโปรเจคใหญ่ใน Javascript ฉันจำได้ว่าสิ่งสุดท้ายคือการผจญภัยเพราะแฮ็ค JS สามารถอ่านไม่ได้อย่างรวดเร็วและฉันต้องการให้โค้ดนี้สะอาด ฉันใช้วัตถุเพื่อสร้าง lib แต่มีหลายวิธีในการกำหนดสิ่งต่าง ๆ ใน JS ซึ่งหมายถึงผลที่สำคัญในขอบเขตการจัดการหน่วยความจำพื้นที่ชื่อ ฯลฯ EG: ใช้varหรือไม่; การกำหนดสิ่งต่าง ๆ ในไฟล์หรือใน(function(){...})()สไตล์ jquery; ใช้thisหรือไม่; ใช้function myname()หรือmyname = function(); การกำหนดวิธีการในร่างกายของวัตถุหรือใช้ "ต้น"; เป็นต้น ดังนั้นวิธีปฏิบัติที่ดีที่สุดเมื่อเข้ารหัสใน OO ใน JS คืออะไร คำอธิบายทางวิชาการคาดหวังที่นี่จริงๆ เชื่อมโยงไปยังหนังสือต้อนรับอย่างอบอุ่นตราบใดที่พวกเขาจัดการกับคุณภาพและความทนทาน แก้ไข: ได้อ่านบ้าง แต่ฉันก็ยังสนใจในคำตอบของคำถามข้างต้นและแนวทางปฏิบัติที่ดีที่สุด
251 javascript  oop 

27
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะทำให้สุนัขเซทเทอร์กลับมา“ สิ่งนี้”?
เป็นความคิดที่ดีหรือไม่ดีที่จะทำให้ setters ใน java คืนค่า "this" หรือไม่? public Employee setName(String name){ this.name = name; return this; } รูปแบบนี้มีประโยชน์เพราะจากนั้นคุณสามารถโยงผู้ตั้งค่าเช่นนี้: list.add(new Employee().setName("Jack Sparrow").setId(1).setFoo("bacon!")); แทนสิ่งนี้: Employee e = new Employee(); e.setName("Jack Sparrow"); ...and so on... list.add(e); ... แต่มันขัดแย้งกับการประชุมมาตรฐาน ฉันคิดว่ามันอาจจะคุ้มค่าเพียงเพราะมันทำให้สุนัขตัวนั้นทำสิ่งอื่นที่มีประโยชน์ ฉันเคยเห็นรูปแบบนี้ใช้สถานที่บางแห่ง (เช่น JMock, JPA) แต่ดูเหมือนว่าผิดปกติและใช้โดยทั่วไปสำหรับ API ที่กำหนดไว้อย่างดีเท่านั้นซึ่งรูปแบบนี้มีการใช้ทุกที่ ปรับปรุง: สิ่งที่ฉันอธิบายไว้นั้นถูกต้อง แต่สิ่งที่ฉันกำลังมองหาจริงๆคือความคิดบางอย่างว่านี่เป็นสิ่งที่ยอมรับได้หรือไม่และหากมีข้อผิดพลาดหรือวิธีปฏิบัติที่ดีที่สุดที่เกี่ยวข้อง ฉันรู้เกี่ยวกับรูปแบบของตัวสร้าง แต่มีส่วนเกี่ยวข้องกับสิ่งที่ฉันกำลังอธิบายอยู่เล็กน้อยเนื่องจาก Josh Bloch …
249 java  design-patterns  api  oop 

17
คลาสย่อยสืบทอดฟิลด์ส่วนบุคคลหรือไม่
นี่คือคำถามสัมภาษณ์ คลาสย่อยสืบทอดฟิลด์ส่วนบุคคลหรือไม่ ฉันตอบว่า "ไม่" เพราะเราไม่สามารถเข้าถึงได้โดยใช้ "วิธี OOP ปกติ" แต่ผู้สัมภาษณ์คิดว่าพวกเขาได้รับมรดกเพราะเราสามารถเข้าถึงสาขาดังกล่าวทางอ้อมหรือใช้การสะท้อนและพวกเขายังคงอยู่ในวัตถุ หลังจากฉันกลับมาฉันพบข้อความอ้างอิงต่อไปนี้ในjavadoc : สมาชิกส่วนตัวใน Superclass คลาสย่อยไม่สืบทอดสมาชิกส่วนตัวของคลาสพาเรนต์ คุณรู้ข้อโต้แย้งใด ๆ สำหรับความคิดเห็นของผู้สัมภาษณ์หรือไม่?
245 java  oop  inheritance  private 

10
คำอธิบายของลูกศร UML
ฉันเพิ่งเรียน UML และวาดแผนภาพง่าย ๆ ด้วยลูกศรธรรมดาระหว่างชั้นเรียน แต่ฉันรู้ว่ามันไม่เพียงพอ มีลูกศรอื่น ๆ อีกมากมาย: การวางนัยทั่วไปการทำให้เป็นจริงและอื่น ๆ ซึ่งมีความหมายต่อตัวอ่านไดอะแกรม มีทรัพยากรที่ดีที่สามารถอธิบายลูกศรแต่ละอัน (ธรรมดา, ธรรมดา, ประ, เต็มไปด้วยเพชร, เพชร)? มันจะดีที่สุดถ้ามันจะมีตัวอย่างโค้ดสำหรับพวกเขา
244 oop  uml 

6
เหตุใดจึงใช้เนมสเปซที่ไม่มีชื่อและประโยชน์ของพวกเขาคืออะไร
ฉันเพิ่งเข้าร่วมโครงการซอฟต์แวร์ C ++ ใหม่และฉันพยายามเข้าใจการออกแบบ โครงการใช้เนมสเปซที่ไม่มีชื่อเป็นประจำ ตัวอย่างเช่นสิ่งนี้อาจเกิดขึ้นในไฟล์คำจำกัดความของคลาส: // newusertype.cc namespace { const int SIZE_OF_ARRAY_X; const int SIZE_OF_ARRAY_Y; bool getState(userType*,otherUserType*); } newusertype::newusertype(...) {... อะไรคือข้อควรพิจารณาในการออกแบบที่อาจทำให้เกิดการใช้เนมสเปซที่ไม่มีชื่อ ข้อดีและข้อเสียคืออะไร?
242 c++  oop  namespaces 

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