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

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


16
อะไรคือความแตกต่างระหว่างอินเทอร์เฟซและคลาสและทำไมฉันจึงควรใช้อินเทอร์เฟซเมื่อฉันสามารถใช้วิธีการโดยตรงในคลาสได้
ฉันรู้ว่านี่เป็นคำถามพื้นฐานมาก แต่ผู้สัมภาษณ์ถามฉันด้วยวิธีที่หลอกลวงมากและฉันก็ทำอะไรไม่ถูก :( ฉันรู้เฉพาะเนื้อหาหรือคำจำกัดความทางทฤษฎีสำหรับอินเทอร์เฟซและยังนำไปใช้ในหลายโครงการที่ฉันทำ แต่ฉันไม่เข้าใจจริงๆว่าทำไมสิ่งนี้ถึงมีประโยชน์ ฉันยังไม่เข้าใจสิ่งหนึ่งในอินเทอร์เฟซ เช่นเราใช้ conn.Dispose();ในที่สุดบล็อก แต่ฉันไม่เห็นว่าคลาสนั้นกำลังใช้หรือสืบทอดIDisposableอินเทอร์เฟซ ( SqlConnection) คลาสที่ฉันหมายถึง ฉันสงสัยว่าฉันจะเรียกชื่อเมธอดได้อย่างไร ในสิ่งเดียวกันฉันไม่เข้าใจว่าวิธีการกำจัดทำงานอย่างไรเพราะเราจำเป็นต้องใช้เนื้อความของฟังก์ชันด้วยการใช้งานของเราเองสำหรับวิธีการอินเทอร์เฟซทั้งหมด แล้วอินเตอร์เฟสได้รับการยอมรับหรือตั้งชื่อเป็นสัญญาอย่างไร? คำถามเหล่านี้ยังคงวนเวียนอยู่ในใจของฉันจนถึงตอนนี้และตรงไปตรงมาฉันไม่เคยเห็นกระทู้ดีๆที่จะอธิบายคำถามของฉันในแบบที่ฉันเข้าใจได้ MSDN ตามปกติดูน่ากลัวมากและไม่มีบรรทัดเดียวชัดเจนที่นั่น (ผู้คนขอแก้ตัวด้วยความกรุณาที่อยู่ในการพัฒนาระดับสูงฉันรู้สึกเป็นอย่างยิ่งว่ารหัสหรือบทความใด ๆ ควรเข้าถึงจิตใจของทุกคนที่เห็นดังนั้นจึงเหมือนกับที่คนอื่น ๆ พูดกัน MSDN ไม่ได้ใช้งาน ) ผู้สัมภาษณ์กล่าวว่า: เขามี 5 วิธีและเขายินดีที่จะนำไปใช้ในคลาสโดยตรง แต่ถ้าคุณต้องไปคลาส Abstract หรืออินเทอร์เฟซคุณจะเลือกวิธีใดและเพราะเหตุใด ฉันตอบเขาทุกเรื่องที่ฉันอ่านในบล็อกต่างๆว่าได้เปรียบและเสียเปรียบทั้งคลาสนามธรรมและอินเทอร์เฟซ แต่เขาไม่มั่นใจเขาพยายามเข้าใจ "Why Interface" โดยทั่วไป "ทำไมต้องเป็นคลาสนามธรรม" โดยทั่วไปแม้ว่าฉันจะสามารถใช้วิธีการเดียวกันได้เพียงครั้งเดียวและไม่สามารถเปลี่ยนแปลงได้ ฉันไม่เห็นที่ไหนในเน็ตฉันสามารถหาบทความที่จะอธิบายฉันอย่างชัดเจนเกี่ยวกับอินเทอร์เฟซและการทำงานของมัน ฉันเป็นหนึ่งในโปรแกรมเมอร์หลายคนที่ยังไม่รู้เกี่ยวกับอินเทอร์เฟซ (ฉันรู้ทฤษฎีและวิธีการที่ฉันใช้) แต่ไม่พอใจที่ฉันเข้าใจมันอย่างชัดเจน
118 c#  class  oop  interface  abstraction 

14
ฉันควรใช้ C ++ private inheritance เมื่อใด
ซึ่งแตกต่างจากมรดกที่ได้รับการป้องกันการสืบทอดส่วนตัวของ C ++ พบวิธีในการพัฒนา C ++ กระแสหลัก อย่างไรก็ตามฉันยังไม่พบการใช้งานที่ดี พวกคุณใช้มันเมื่อไหร่?
116 c++  oop 

1
ความแตกต่างระหว่างโรงงานผู้ให้บริการและบริการ?
อะไรคือความแตกต่างระหว่างเงื่อนไขโรงงานผู้ให้บริการและบริการ? เพียงแค่เข้าสู่ NHibernate และรูปแบบพื้นที่เก็บข้อมูล (คลาส POCO ฯลฯ )

7
การเลือกเมธอดที่โอเวอร์โหลดขึ้นอยู่กับประเภทจริงของพารามิเตอร์
ฉันกำลังทดลองกับรหัสนี้: interface Callee { public void foo(Object o); public void foo(String s); public void foo(Integer i); } class CalleeImpl implements Callee public void foo(Object o) { logger.debug("foo(Object o)"); } public void foo(String s) { logger.debug("foo(\"" + s + "\")"); } public void foo(Integer i) { logger.debug("foo(" + i + ")"); …
115 java  oop 

8
ในโครงการ PHP มีรูปแบบใดบ้างในการจัดเก็บเข้าถึงและจัดระเบียบวัตถุตัวช่วย [ปิด]
ตามที่กล่าวไว้ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ล็อค คำถามนี้และคำตอบถูกล็อกเนื่องจากคำถามไม่ตรงประเด็น แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ยังไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ คุณจัดระเบียบและจัดการออบเจ็กต์ตัวช่วยของคุณเช่นเอ็นจิ้นฐานข้อมูลการแจ้งเตือนผู้ใช้การจัดการข้อผิดพลาดและอื่น ๆ ในโครงการเชิงวัตถุที่ใช้ PHP ได้อย่างไร สมมติว่าฉันมี PHP CMS ขนาดใหญ่ CMS จัดอยู่ในชั้นเรียนต่างๆ ตัวอย่างบางส่วน: วัตถุฐานข้อมูล การจัดการผู้ใช้ API เพื่อสร้าง / แก้ไข / ลบรายการ วัตถุส่งข้อความเพื่อแสดงข้อความไปยังผู้ใช้ปลายทาง ตัวจัดการบริบทที่นำคุณไปยังหน้าที่ถูกต้อง คลาสของแถบนำทางที่แสดงปุ่มต่างๆ วัตถุบันทึก อาจเป็นไปได้ว่าการจัดการข้อผิดพลาดแบบกำหนดเอง เป็นต้น ฉันกำลังเผชิญกับคำถามนิรันดร์วิธีทำให้วัตถุเหล่านี้สามารถเข้าถึงได้ดีที่สุดในแต่ละส่วนของระบบที่ต้องการ apporach แรกของฉันเมื่อหลายปีก่อนคือการมี $ application global ที่มีอินสแตนซ์เริ่มต้นของคลาสเหล่านี้ global $application; $application->messageHandler->addMessage("Item successfully inserted"); …
114 design-patterns  oop  php 

5
คำถามสัมภาษณ์ Amazon: ออกแบบที่จอดรถ OO [ปิด]
มันยากที่จะบอกว่ากำลังถามอะไรที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือมีวาทศิลป์และไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน7 ปีที่ผ่านมา ออกแบบที่จอดรถ OO จะมีคลาสและฟังก์ชันอะไรบ้าง ควรบอกว่าเต็มว่างเปล่าและยังสามารถหาจุดจอดรถได้ ที่จอดรถมี 3 ประเภท ได้แก่ แบบธรรมดาคนพิการและขนาดกะทัดรัด ขอบคุณ!
114 oop 


10
Nested หรือ Inner Class ใน PHP
ฉันกำลังสร้างUser Classสำหรับเว็บไซต์ใหม่ของฉัน แต่คราวนี้ฉันคิดที่จะสร้างมันให้แตกต่างออกไปเล็กน้อย ... C ++ , Javaและแม้แต่Ruby (และอาจเป็นภาษาการเขียนโปรแกรมอื่น ๆ ) อนุญาตให้ใช้คลาสซ้อน / ชั้นในภายในคลาสหลักซึ่งช่วยให้เราสร้างโค้ดเชิงวัตถุและจัดระเบียบได้มากขึ้น ใน PHP ฉันต้องการทำสิ่งนี้: <?php public class User { public $userid; public $username; private $password; public class UserProfile { // some code here } private class UserHistory { // some code here } } ?> เป็นไปได้ใน PHP …
111 php  class  oop  nested  inner-classes 

5
วิธี __del__ คืออะไรจะเรียกมันอย่างไร
ฉันกำลังอ่านรหัส มีคลาสที่__del__กำหนดเมธอด ฉันคิดว่าวิธีนี้ใช้เพื่อทำลายอินสแตนซ์ของคลาส อย่างไรก็ตามฉันไม่พบสถานที่ที่ใช้วิธีนี้ สาเหตุหลักคือฉันไม่รู้ว่าวิธีนี้ใช้อย่างไรอาจจะไม่ใช่อย่างนั้น: obj1.del(). ดังนั้นคำถามของฉันคือจะเรียก__del__เมธอดอย่างไร?
111 python  oop 

16
ฉันจะสร้างคลาสพื้นฐานนามธรรมใน JavaScript ได้อย่างไร
เป็นไปได้ไหมที่จะจำลองคลาสพื้นฐานแบบนามธรรมใน JavaScript วิธีที่สง่างามที่สุดที่จะทำคืออะไร? พูดว่าฉันต้องการทำสิ่งที่ชอบ: - var cat = new Animal('cat'); var dog = new Animal('dog'); cat.say(); dog.say(); ควรส่งออก: 'bark', 'meow'
109 javascript  oop  abstract 

8
ฉันจะใช้ผู้รับมอบสิทธิ์ได้ที่ไหน [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน7 ปีที่ผ่านมา ปรับปรุงคำถามนี้ มีสถานที่ใดบ้างในโลกแห่งความเป็นจริงที่เรียกร้องให้มีตัวแทน ฉันอยากรู้ว่ามีสถานการณ์หรือรูปแบบใดบ้างที่วิธีนี้เป็นทางออกที่ดีที่สุด ไม่ต้องใช้รหัส

5
เมื่อใดควรใช้ 'เพิ่ม NotImplementedError'
เป็นการเตือนตัวเองและทีมของคุณให้ใช้ชั้นเรียนอย่างถูกต้องหรือไม่? ฉันไม่ได้รับการใช้คลาสนามธรรมอย่างเต็มที่เช่นนี้: class RectangularRoom(object): def __init__(self, width, height): raise NotImplementedError def cleanTileAtPosition(self, pos): raise NotImplementedError def isTileCleaned(self, m, n): raise NotImplementedError
109 python  oop 

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

6
มีประโยชน์ในการกำหนดคลาสภายในคลาสอื่นใน Python หรือไม่?
สิ่งที่ฉันกำลังพูดถึงต่อไปนี้คือคลาสที่ซ้อนกัน โดยพื้นฐานแล้วฉันมีสองคลาสที่ฉันกำลังสร้างโมเดล คลาส DownloadManager และคลาส DownloadThread แนวคิด OOP ที่ชัดเจนในที่นี้คือการจัดองค์ประกอบ อย่างไรก็ตามการจัดองค์ประกอบไม่จำเป็นต้องหมายถึงการซ้อนกันใช่ไหม? ฉันมีรหัสที่มีลักษณะดังนี้: class DownloadThread: def foo(self): pass class DownloadManager(): def __init__(self): dwld_threads = [] def create_new_thread(): dwld_threads.append(DownloadThread()) แต่ตอนนี้ฉันสงสัยว่ามีสถานการณ์ที่การทำรังจะดีขึ้นหรือไม่ สิ่งที่ต้องการ: class DownloadManager(): class DownloadThread: def foo(self): pass def __init__(self): dwld_threads = [] def create_new_thread(): dwld_threads.append(DownloadManager.DownloadThread())
107 python  oop 

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