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

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

4
การให้ความชุ่มชื้นกับวัตถุหมายความว่าอะไร
เมื่อมีคนพูดถึงวัตถุที่ให้ความชุ่มชื่นนั่นหมายความว่าอย่างไร ฉันเห็นโครงการ Java ชื่อ Hydrate บนเว็บที่แปลงข้อมูลระหว่างการนำเสนอที่แตกต่างกัน (RDMS เป็น OOPS เป็น XML) นี่เป็นความหมายทั่วไปของการให้ความชุ่มชื้นกับวัตถุหรือไม่ การแปลงข้อมูลระหว่างการรับรอง? มันอาจหมายถึงการสร้างลำดับชั้นของวัตถุใหม่จากการเป็นตัวแทนที่เก็บไว้?
204 java  oop 

15
ทะเยอทะยานและ Setter?
ฉันไม่ใช่นักพัฒนา PHP ดังนั้นฉันจึงสงสัยว่าใน PHP นิยมใช้ตัวรับ / setters อย่างชัดเจนในรูปแบบ OOP บริสุทธิ์พร้อมฟิลด์ส่วนตัว (อย่างที่ฉันชอบ): class MyClass { private $firstField; private $secondField; public function getFirstField() { return $this->firstField; } public function setFirstField($x) { $this->firstField = $x; } public function getSecondField() { return $this->secondField; } public function setSecondField($x) { $this->secondField = $x; } } หรือเพียงแค่ฟิลด์สาธารณะ: …
203 php  oop  coding-style 



4
ฉันจะสร้างสำเนาของวัตถุใน Python ได้อย่างไร
ฉันต้องการสร้างสำเนาของวัตถุ ฉันต้องการให้วัตถุใหม่มีคุณสมบัติทั้งหมดของวัตถุเก่า (ค่าของเขตข้อมูล) แต่ฉันต้องการมีวัตถุอิสระ ดังนั้นถ้าฉันเปลี่ยนค่าของเขตข้อมูลของวัตถุใหม่วัตถุเก่าไม่ควรได้รับผลกระทบจากสิ่งนั้น
200 python  oop  object  copy 

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

9
ทำไมคุณต้องมีอาร์กิวเมนต์“ ตัวตน” อย่างชัดเจนในเมธอด Python?
เมื่อกำหนดวิธีการในชั้นเรียนใน Python มันมีลักษณะดังนี้: class MyClass(object): def __init__(self, x, y): self.x = x self.y = y แต่ในบางภาษาอื่น ๆ เช่น C # คุณมีการอ้างอิงถึงวัตถุที่วิธีการที่ถูกผูกไว้กับคำหลัก "นี้" โดยไม่ต้องประกาศว่ามันเป็นข้อโต้แย้งในต้นแบบวิธีการ นี่เป็นการตัดสินใจออกแบบภาษาโดยเจตนาใน Python หรือมีรายละเอียดการนำไปปฏิบัติบางอย่างที่ต้องใช้การผ่าน "ตนเอง" เป็นอาร์กิวเมนต์หรือไม่?
197 python  oop  methods  self 

24
ฉันจะรู้ได้อย่างไรว่าจะสร้างอินเทอร์เฟซเมื่อใด
ฉันอยู่ในช่วงของการเรียนรู้การพัฒนาที่ฉันรู้สึกว่าฉันต้องเรียนรู้เพิ่มเติมเกี่ยวกับอินเทอร์เฟซ ฉันอ่านบ่อยเกี่ยวกับพวกเขา แต่ดูเหมือนว่าฉันไม่สามารถเข้าใจพวกเขาได้ ฉันได้อ่านตัวอย่างเช่น: คลาสสัตว์พื้นฐานพร้อมอินเทอร์เฟซ IAnimal สำหรับสิ่งต่าง ๆ เช่น 'Walk', 'Run', 'GetLegs' ฯลฯ - แต่ฉันไม่เคยทำงานอะไรมาแล้วรู้สึกเหมือน "เฮ้ฉันควรใช้อินเทอร์เฟซ นี่!" ฉันกำลังคิดถึงอะไร ทำไมมันเป็นแนวคิดที่ยากสำหรับฉันที่จะเข้าใจ! ฉันถูกข่มขู่ด้วยความจริงที่ว่าฉันอาจไม่เคยตระหนักถึงความต้องการที่เป็นรูปธรรมสำหรับคนส่วนใหญ่เนื่องจากความเข้าใจที่ขาดหายไปบางประการ! มันทำให้ฉันรู้สึกเหมือนว่าฉันขาดอะไรบางอย่างในแง่ของการเป็นนักพัฒนา! หากใครมีประสบการณ์เช่นนี้และมีความก้าวหน้าฉันจะขอบคุณเคล็ดลับในการทำความเข้าใจแนวคิดนี้ ขอบคุณ.

20
โครงสร้างเหมือนวัตถุใน Java
มันผิดกับวิธีของจาวาในการสร้างโครงสร้างเหมือนวัตถุหรือไม่ class SomeData1 { public int x; public int y; } ฉันสามารถดูคลาสที่มี accessors และ mutators เป็น Java มากกว่า class SomeData2 { int getX(); void setX(int x); int getY(); void setY(int y); private int x; private int y; } ชั้นเรียนจากตัวอย่างแรกนั้นใช้งานไม่สะดวก // a function in a class public int f(SomeData1 d) { …
195 java  oop  struct 

25
การใช้ตัวปรับแต่ง“ final” เมื่อใดก็ตามที่เกี่ยวข้องใน Java [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ใน Java มีการประกาศตัวแปรทุกตัว (ในตัวเครื่องหรือคลาส) พารามิเตอร์สุดท้ายถ้าเป็นจริง แม้ว่าจะทำให้รหัส verbose มากขึ้นนี้ช่วยในการอ่าน / จับรหัสได้ง่ายและยังป้องกันข้อผิดพลาดตามที่ตั้งใจไว้ชัดเจน คุณคิดอย่างไรกับเรื่องนี้และคุณติดตามอะไร
194 java  oop 

5
ความแตกต่างระหว่างพื้นที่เก็บข้อมูลและชั้นบริการ?
ในรูปแบบการออกแบบ OOP ความแตกต่างระหว่างรูปแบบพื้นที่เก็บข้อมูลและชั้นบริการคืออะไร ฉันกำลังทำงานกับแอพ ASP.NET MVC 3 และพยายามที่จะเข้าใจรูปแบบการออกแบบเหล่านี้ แต่สมองของฉันไม่เข้าใจเลย ... ยัง !!

13
ไม่มีคำสั่ง return ในคอมไพล์ที่ไม่ใช่ช่องว่าง
ฉันพบสถานการณ์ที่ไม่มีวิธีการที่เป็นโมฆะไม่มีคำสั่งการส่งคืนและรหัสยังคงรวบรวม ฉันรู้ว่างบหลังจากห่วงขณะที่ไม่สามารถเข้าถึงได้ (รหัสตาย) และจะไม่ถูกดำเนินการ แต่ทำไมคอมไพเลอร์ถึงไม่เตือนเรื่องการคืนบางอย่าง หรือทำไมภาษาถึงยอมให้เรามีวิธีที่ไม่เป็นโมฆะที่มีการวนซ้ำไม่สิ้นสุดและไม่ส่งคืนอะไรเลย? public int doNotReturnAnything() { while(true) { //do something } //no return statement } ถ้าฉันเพิ่มคำสั่ง break (แม้แต่เงื่อนไขที่มีเงื่อนไข) ใน while loop คอมไพเลอร์จะบ่นถึงข้อผิดพลาดที่น่าอับอาย: Method does not return a valueใน Eclipse และNot all code paths return a valueใน Visual Studio public int doNotReturnAnything() { while(true) { if(mustReturn) break; …
189 java  c#  oop 

13
ท่านจะไม่ได้รับมรดกจาก std :: vector
ตกลงนี้มันยากที่จะสารภาพ std::vectorแต่ฉันจะมีสิ่งล่อใจที่แข็งแกร่งในขณะนี้จะได้รับมรดกจาก ฉันต้องการอัลกอริทึมแบบกำหนดเองประมาณ 10 แบบสำหรับเวกเตอร์และฉันต้องการให้พวกเขาเป็นสมาชิกของเวกเตอร์โดยตรง แต่โดยธรรมชาติฉันต้องการมีส่วนstd::vectorต่อประสานที่เหลือ ความคิดแรกของฉันในฐานะพลเมืองที่ปฏิบัติตามกฎหมายคือการมีstd::vectorสมาชิกในMyVectorชั้นเรียน แต่จากนั้นฉันจะต้องทบทวนส่วนติดต่อทั้งหมดของ std :: vector อีกครั้งด้วยตนเอง พิมพ์มากเกินไป ต่อไปฉันนึกถึงมรดกส่วนตัวดังนั้นแทนที่จะใช้วิธีประณามฉันจะเขียนบทความหลายusing std::vector::memberเรื่องในส่วนสาธารณะ อันนี้น่าเบื่อจริง ๆ แล้ว และฉันอยู่ที่นี่ฉันคิดว่าฉันสามารถสืบทอดต่อสาธารณชนได้ง่ายstd::vectorๆ แต่ให้คำเตือนในเอกสารที่ว่าคลาสนี้ไม่ควรใช้ polymorphically ฉันคิดว่านักพัฒนาส่วนใหญ่มีความสามารถพอที่จะเข้าใจได้ว่าสิ่งนี้ไม่ควรใช้ polymorphically อยู่ดี การตัดสินใจของฉันเป็นการไม่ยุติธรรมอย่างแน่นอนหรือไม่? ถ้าเป็นเช่นนั้นทำไม คุณสามารถให้ทางเลือกซึ่งจะมีสมาชิกเพิ่มเติมจริง ๆ แล้วสมาชิก แต่จะไม่เกี่ยวข้องกับการพิมพ์หน้าจอทั้งหมดของเวกเตอร์อีกครั้งหรือไม่ ฉันสงสัยมัน แต่ถ้าคุณทำได้ฉันก็จะมีความสุข นอกจากนี้นอกเหนือจากความจริงที่ว่าคนงี่เง่าบางคนสามารถเขียนสิ่งที่ชอบ std::vector<int>* p = new MyVector มีอันตรายอื่นที่เหมือนจริงในการใช้ MyVector หรือไม่? โดยบอกว่าสมจริงฉันจะละทิ้งสิ่งต่าง ๆ อย่างเช่นจินตนาการถึงฟังก์ชั่นที่ใช้ตัวชี้ไปยังเวกเตอร์ ... ฉันได้กล่าวถึงกรณีของฉัน ฉันได้กระทำบาป. ตอนนี้ก็ขึ้นอยู่กับคุณที่จะให้อภัยฉันหรือไม่ :)
189 c++  oop  inheritance  stl  vector 

12
DDD - กฎที่เอนทิตีไม่สามารถเข้าถึงที่เก็บโดยตรง
ในการขับเคลื่อนโดเมนออกแบบดูเหมือนว่าจะมีจำนวนมากของข้อตกลงที่หน่วยงานที่เก็บไม่ควรเข้าถึงโดยตรง สิ่งนี้มาจากหนังสือของ Eric Evans Domain Driven Designหรือมาจากที่อื่นหรือไม่ มีคำอธิบายที่ดีสำหรับเหตุผลอยู่เบื้องหลังที่ไหน? แก้ไข: เพื่อชี้แจง: ฉันไม่ได้พูดถึงวิธีปฏิบัติแบบ OO แบบคลาสสิกของการแยกการเข้าถึงข้อมูลออกเป็นเลเยอร์แยกต่างหากจากตรรกะทางธุรกิจ - ฉันกำลังพูดถึงการจัดเรียงเฉพาะโดยที่ DDD หน่วยงานไม่ควรพูดคุยกับข้อมูล access layer เลย (เช่นพวกเขาไม่ควรจะเก็บการอ้างอิงไปยังวัตถุ Repository) อัปเดต: ฉันให้รางวัลแก่ BacceSR เพราะคำตอบของเขาดูใกล้เคียงที่สุด แต่ฉันก็ยังค่อนข้างมืดอยู่กับเรื่องนี้ หากเป็นหลักการสำคัญเช่นนั้นควรมีบทความดีๆเกี่ยวกับเรื่องนี้ออนไลน์ที่ไหนสักแห่งใช่ไหม? อัปเดต: มีนาคม 2556 จำนวนผู้โหวตในคำถามบ่งบอกว่ามีความสนใจในเรื่องนี้มากมายและถึงแม้ว่าจะมีคำตอบมากมาย แต่ฉันก็ยังคิดว่าจะมีช่องว่างมากขึ้นถ้าผู้คนมีความคิดเกี่ยวกับเรื่องนี้

7
ฉันจะใช้อินเทอร์เฟซในหลามได้อย่างไร
public interface IInterface { void show(); } public class MyClass : IInterface { #region IInterface Members public void show() { Console.WriteLine("Hello World!"); } #endregion } ฉันจะใช้ Python เทียบเท่ากับรหัส C # นี้ได้อย่างไร class IInterface(object): def __init__(self): pass def show(self): raise Exception("NotImplementedException") class MyClass(IInterface): def __init__(self): IInterface.__init__(self) def show(self): print 'Hello World!' …
182 python  oop 

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