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

30
เหตุใดจึงต้องใช้ getters และ setters / accessors
อะไรคือข้อดีของการใช้ getters และ setters - ที่รับและตั้งค่า - แทนที่จะใช้เพียงฟิลด์สาธารณะสำหรับตัวแปรเหล่านั้น หาก getters และ setters ทำมากกว่าแค่การรับ / เซตง่ายๆฉันสามารถหาอันนี้ออกมาได้อย่างรวดเร็ว แต่ฉันไม่ชัดเจน 100% ว่า: public String foo; มีอะไรที่แย่ไปกว่า: private String foo; public void setFoo(String foo) { this.foo = foo; } public String getFoo() { return foo; } ในขณะที่อดีตใช้รหัสน้อยกว่ามาก
1541 java  oop  setter  getter  abstraction 


22
การสรุปข้อมูล VS การสรุปข้อมูล Encapsulation
คุณช่วยบอกฉันว่าอะไรคือความแตกต่างระหว่างสิ่งที่เป็นนามธรรมและการซ่อนข้อมูลในการพัฒนาซอฟต์แวร์? ฉันสับสน. สิ่งที่เป็นนามธรรมจะซ่อนการใช้รายละเอียดและข้อมูลที่ซ่อนอยู่ในบทคัดย่อรายละเอียดทั้งหมดของบางสิ่งบางอย่าง อัปเดต:ฉันพบคำตอบที่ดีสำหรับแนวคิดทั้งสามนี้ ดูคำตอบที่แยกต่างหากด้านล่างหลายอ้างอิงที่นำมาจากที่นั่น

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

6
“ นามธรรมทับ” หมายความว่าอย่างไร
บ่อยครั้งในวรรณคดี Scala ฉันพบวลี "นามธรรมมากกว่า" แต่ฉันไม่เข้าใจเจตนา ตัวอย่างเช่น Martin Odersky เขียน คุณสามารถส่งเมธอด (หรือ "ฟังก์ชั่น") เป็นพารามิเตอร์หรือคุณสามารถสรุปทับได้ คุณสามารถระบุประเภทเป็นพารามิเตอร์หรือคุณสามารถสรุปทับได้ ดังตัวอย่างอื่นในกระดาษ"Deprecating the Observer Pattern" ผลที่ตามมาจากกระแสเหตุการณ์ของเราเป็นค่านิยมชั้นหนึ่งคือเราสามารถสรุปเหนือสิ่งเหล่านี้ได้ ฉันได้อ่านชื่อสามัญลำดับแรก "นามธรรมเหนือประเภท" ในขณะที่ monads "abstract over type constructors" และเรายังเห็นวลีเช่นนี้ในกระดาษแบบเค้ก หากต้องการอ้างอิงหนึ่งในหลายตัวอย่างดังกล่าว: สมาชิกประเภทบทคัดย่อให้วิธีที่ยืดหยุ่นในการทำนามธรรมกับส่วนประกอบประเภทคอนกรีต แม้แต่คำถามเกี่ยวกับสแต็กล้นที่เกี่ยวข้องก็ใช้คำศัพท์นี้ "ไม่สามารถเป็นนามธรรมที่มีอยู่จริงเหนือประเภทที่กำหนดพารามิเตอร์ ... " แล้ว ... "นามธรรมทับ" ที่จริงหมายความว่าอย่างไร?

4
การรวบรวมเทียบกับการถ่ายโอนข้อมูล
ในขณะที่ค้นหาความแตกต่างฉันพบคำจำกัดความเหล่านี้: การคอมไพล์เป็นคำทั่วไปสำหรับการเขียนซอร์สโค้ดในภาษาหนึ่งและแปลงเป็นอีกภาษาหนึ่ง Transpilingเป็นคำเฉพาะสำหรับการเขียนซอร์สโค้ดในภาษาหนึ่งและเปลี่ยนเป็นภาษาอื่นที่มีระดับนามธรรมใกล้เคียงกัน ฉันเข้าใจว่า Abstraction คืออะไร แต่ "ระดับนามธรรมที่คล้ายคลึงกัน" ในคำจำกัดความข้างต้นหมายความว่าอย่างไร และเราจะหาระดับของนามธรรมในภาษาได้อย่างไร?

11
ความหมายของนามธรรมที่รั่วไหล?
คำว่า "สิ่งที่เป็นนามธรรมที่รั่วไหล" หมายความว่าอย่างไร (โปรดอธิบายด้วยตัวอย่างฉันมักจะมีปัญหาในการฟังทฤษฎีเพียงอย่างเดียว)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.