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

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

24
การคืนค่า null ออกแบบไม่ดีหรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันได้ยินเสียงพูดว่าการตรวจสอบค่า Null ที่คืนกลับมาจากวิธีการคือการออกแบบที่ไม่ดี ฉันต้องการฟังเหตุผลบางอย่างสำหรับเรื่องนี้ pseudocode: variable x = object.method() if (x is null) do something
127 oop  null  return-value 

30
OOP คืออะไร?
ล็อค คำถามนี้และคำตอบถูกล็อกเนื่องจากคำถามไม่ตรงประเด็น แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ยังไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ เท่าที่ฉันสามารถบอกได้แม้ว่าจะมีการใช้จ่ายไปกับการศึกษาภาษาและเครื่องมือ OOP หลายล้านหรือหลายพันล้านบาท แต่ OOP ก็ยังไม่ได้ปรับปรุงประสิทธิภาพการทำงานของนักพัฒนาซอฟต์แวร์หรือความน่าเชื่อถือของซอฟต์แวร์และไม่ได้ลดต้นทุนการพัฒนา มีเพียงไม่กี่คนที่ใช้ OOP ในแง่ที่เข้มงวด (มีเพียงไม่กี่คนที่ยึดมั่นหรือเข้าใจหลักการเช่น LSP) ดูเหมือนจะมีความสม่ำเสมอหรือความสอดคล้องเพียงเล็กน้อยกับแนวทางที่ผู้คนใช้ในการสร้างแบบจำลองโดเมนปัญหา บ่อยครั้งที่คลาสนี้ใช้สำหรับน้ำตาลที่เป็นประโยคเท่านั้น มันทำให้ฟังก์ชันสำหรับประเภทเรกคอร์ดเป็นเนมสเปซเล็ก ๆ ของตัวเอง ฉันได้เขียนโค้ดจำนวนมากสำหรับแอปพลิเคชันที่หลากหลาย แม้ว่าจะมีสถานที่ที่การพิมพ์ย่อยที่ทดแทนกันได้จริงมีบทบาทสำคัญในแอปพลิเคชัน แต่สิ่งเหล่านี้ก็ค่อนข้างโดดเด่น โดยทั่วไปแล้วแม้ว่าจะมีการให้บริการริมฝีปากเพื่อพูดถึงการ "ใช้ซ้ำ" แต่ความจริงก็คือเว้นแต่โค้ดส่วนหนึ่งจะทำในสิ่งที่คุณต้องการได้อย่างตรงจุดแต่ก็มี "การใช้ซ้ำ" ที่คุ้มค่าน้อยมาก เป็นเรื่องยากมากที่จะออกแบบชั้นเรียนให้สามารถขยายได้อย่างถูกต้องและโดยปกติแล้วค่าใช้จ่ายในการขยายจึงสูงมากจน "ใช้ซ้ำ" เพียงอย่างเดียวจึงไม่คุ้มค่า ในหลาย ๆ เรื่องสิ่งนี้ไม่ได้ทำให้ฉันประหลาดใจ โลกแห่งความเป็นจริงไม่ใช่ "OO" และความคิดนี้มีนัยใน OO - ที่เราสามารถจำลองสิ่งต่าง ๆ ด้วยอนุกรมวิธานของคลาส - ดูเหมือนว่าฉันจะมีข้อบกพร่องโดยพื้นฐานมาก (ฉันสามารถนั่งบนโต๊ะตอต้นไม้ฝากระโปรงรถ ตักของใครบางคน - แต่ไม่ใช่หนึ่งในนั้นคือเก้าอี้) แม้ว่าเราจะย้ายไปยังโดเมนที่เป็นนามธรรมมากขึ้น แต่การสร้างแบบจำลอง …

4
ฉันจะเริ่มต้นคลาสพื้นฐาน (ขั้นสูง) ได้อย่างไร
ใน Python ให้พิจารณาว่าฉันมีรหัสต่อไปนี้: >>> class SuperClass(object): def __init__(self, x): self.x = x >>> class SubClass(SuperClass): def __init__(self, y): self.y = y # how do I initialize the SuperClass __init__ here? ฉันจะเริ่มต้นSuperClass __init__ในคลาสย่อยได้อย่างไร ฉันกำลังทำตามบทช่วยสอน Python และไม่ครอบคลุมถึงเรื่องนั้น เมื่อฉันค้นหาใน Google ฉันพบว่ามีวิธีทำมากกว่าหนึ่งวิธี วิธีมาตรฐานในการจัดการสิ่งนี้คืออะไร?
126 python  oop 

9
ใน PHP คุณสามารถสร้างอินสแตนซ์อ็อบเจ็กต์และเรียกเมธอดในบรรทัดเดียวกันได้หรือไม่?
สิ่งที่ฉันต้องการจะทำมีดังนี้: $method_result = new Obj()->method(); แทนที่จะต้องทำ: $obj = new Obj(); $method_result = $obj->method(); ผลลัพธ์ที่ได้ไม่สำคัญสำหรับฉันในกรณีเฉพาะของฉัน แต่มีวิธีทำหรือไม่?
126 php  oop 


6
“ วิธี S3” หมายถึงอะไรใน R?
เนื่องจากฉันค่อนข้างใหม่กับ R ฉันจึงไม่รู้ว่าวิธี S3 และวัตถุคืออะไร ฉันพบว่ามีระบบอ็อบเจ็กต์ S3 และ S4 และบางส่วนแนะนำให้ใช้ S3 มากกว่า S4 หากเป็นไปได้ (ดูคู่มือสไตล์ R ของ Google ที่http://google-styleguide.googlecode.com/svn/trunk/google-r-style html ) *. อย่างไรก็ตามฉันไม่ทราบคำจำกัดความที่แน่นอนของวิธี / วัตถุ S3 อัปเดต: ในปี 2019 ไฮเปอร์ลิงก์ R Style Guide ของ Google อยู่ที่นี่แล้ว
125 r  oop  r-faq  r-s3  r-s4 




8
เหตุใดเราจึงไม่ควรใช้การป้องกันแบบคงที่ใน java
ฉันกำลังเจอคำถามนี้มีวิธีลบล้างตัวแปรคลาสใน Java หรือไม่? ความคิดเห็นแรกที่มี 36 upvotes คือ: ถ้าคุณเคยเห็นให้protected staticเรียกใช้ ใครสามารถอธิบายได้ว่าทำไมprotected staticขมวดคิ้ว?

8
เหตุใด PHP 5.2+ จึงไม่อนุญาตวิธีการคลาสแบบคงที่แบบนามธรรม
หลังจากเปิดใช้คำเตือนที่เข้มงวดใน PHP 5.2 ฉันเห็นคำเตือนมาตรฐานที่เข้มงวดมากมายจากโครงการที่เขียนขึ้นโดยไม่มีคำเตือนที่เข้มงวด: มาตรฐานที่เข้มงวด : ฟังก์ชันคงที่โปรแกรม :: getSelectSQL () ไม่ควรเป็นนามธรรมใน Program.class.inc ฟังก์ชันที่เป็นปัญหาเป็นของโปรแกรมคลาสพาเรนต์ที่เป็นนามธรรมและได้รับการประกาศว่าเป็นแบบคงที่เนื่องจากควรนำไปใช้ในคลาสย่อยเช่น TVProgram ฉันพบการอ้างอิงถึงการเปลี่ยนแปลงนี้ที่นี่ : ทิ้งฟังก์ชันคลาสคงที่ที่เป็นนามธรรม เนื่องจากการกำกับดูแล PHP 5.0.x และ 5.1.x จึงอนุญาตให้ใช้ฟังก์ชันคงที่ที่เป็นนามธรรมในคลาส ใน PHP 5.2.x มีเพียงอินเทอร์เฟซเท่านั้นที่สามารถมีได้ คำถามของฉันคือใครสามารถอธิบายได้อย่างชัดเจนว่าเหตุใดจึงไม่ควรมีฟังก์ชันคงที่ที่เป็นนามธรรมใน PHP
121 php  oop  static  abstract 

11
ปัญหาที่แน่นอนเกี่ยวกับการสืบทอดหลายรายการคืออะไร?
ฉันเห็นคนถามตลอดเวลาว่าควรรวมการสืบทอดหลายรายการไว้ใน C # หรือ Java เวอร์ชันถัดไปหรือไม่ ชาว C ++ ที่โชคดีพอที่จะมีความสามารถนี้บอกว่านี่เหมือนกับการให้เชือกใครสักคนเพื่อแขวนคอตัวเองในที่สุด มรดกหลายรายการมีอะไรบ้าง? มีตัวอย่างคอนกรีตหรือไม่?

4
การจัดการความสัมพันธ์ใน Laravel โดยยึดตามรูปแบบพื้นที่เก็บข้อมูล
ขณะสร้างแอปใน Laravel 4 หลังจากอ่านหนังสือของ T. Otwell เกี่ยวกับรูปแบบการออกแบบที่ดีใน Laravel ฉันพบว่าตัวเองกำลังสร้างที่เก็บสำหรับทุกตารางบนแอปพลิเคชัน ฉันลงเอยด้วยโครงสร้างตารางต่อไปนี้: นักเรียน: id, name หลักสูตร: id, name, teacher_id ครู: id, name Assignments: id, name, course_id คะแนน (ทำหน้าที่เป็นตัวหมุนระหว่างนักเรียนและงาน): student_id, assignment_id, คะแนน ฉันมีคลาสที่เก็บที่มีวิธีการค้นหาสร้างอัปเดตและลบสำหรับตารางเหล่านี้ทั้งหมด แต่ละที่เก็บมีแบบจำลองที่มีประสิทธิภาพซึ่งโต้ตอบกับฐานข้อมูล ความสัมพันธ์ที่กำหนดไว้ในรูปแบบเอกสารต่อ Laravel ของ: http://laravel.com/docs/eloquent#relationships เมื่อสร้างหลักสูตรใหม่สิ่งที่ฉันทำคือเรียกใช้เมธอด create บน Course Repository หลักสูตรนั้นมีงานมอบหมายดังนั้นเมื่อสร้างหลักสูตรฉันจึงต้องการสร้างรายการในตารางคะแนนสำหรับนักเรียนแต่ละคนในหลักสูตรด้วย ฉันทำสิ่งนี้ผ่าน Assignment Repository ซึ่งหมายความว่าที่เก็บงานมอบหมายจะสื่อสารกับโมเดล Eloquent สองแบบโดยใช้โมเดล Assignment และ Student …

6
การมองเห็นเริ่มต้นของคลาสเมธอดใน PHP
ฉันดูคู่มือแต่ดูเหมือนจะหาคำตอบไม่ได้ การมองเห็นเริ่มต้นใน PHP สำหรับวิธีการที่ไม่มีการประกาศการเปิดเผยคืออะไร? PHP มีการมองเห็นแพ็คเกจเหมือนใน Java หรือไม่? ตัวอย่างเช่นในรหัสต่อไปนี้เป็นgo()สาธารณะหรือส่วนตัว? class test { function go() { } } เหตุผลที่ผมถามคือว่าผมเคยเห็นรหัสก่อสร้างงานเขียนเป็นจำนวนมากและบางส่วนเป็นfunction __construct() public function __construct()เทียบเท่าหรือไม่?
118 php  oop  visibility 

6
JavaScript OOP ใน NodeJS: อย่างไร
ฉันคุ้นเคยกับ OOP แบบคลาสสิกเช่นเดียวกับใน Java แนวทางปฏิบัติที่ดีที่สุดในการทำ OOP ใน JavaScript โดยใช้ NodeJS คืออะไร? แต่ละ Class เป็นไฟล์ที่มีmodule.export? จะสร้างชั้นเรียนได้อย่างไร? this.Class = function() { //constructor? var privateField = "" this.publicField = "" var privateMethod = function() {} this.publicMethod = function() {} } เทียบกับ (ฉันไม่แน่ใจว่าถูกต้องด้วยซ้ำ) this.Class = { privateField: "" , privateMethod: function() {} , return …

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