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

แม่แบบสำหรับการประกาศประเภทของวัตถุ

4
วิธีถกเถียงกับแนวคิด "สาธารณะอย่างสมบูรณ์" ของการออกแบบคลาสอ็อบเจ็กต์ทางธุรกิจ
เราทำการทดสอบหน่วยและการปรับโครงสร้างวัตถุทางธุรกิจของเราอีกมากมายและดูเหมือนว่าฉันมีความคิดเห็นที่แตกต่างกันมากในการออกแบบชั้นเรียนมากกว่าเพื่อนคนอื่น ๆ ตัวอย่างคลาสที่ฉันไม่ใช่แฟนของ: public class Foo { private string field1; private string field2; private string field3; private string field4; private string field5; public Foo() { } public Foo(string in1, string in2) { field1 = in1; field2 = in2; } public Foo(string in1, string in2, string in3, string in4) { field1 …

5
ชั้นเรียนในภาษา OOP และประเภท
ในทฤษฎีการเขียนโปรแกรมภาษาประเภทคือชุดของค่า เช่น type "int" คือชุดของค่าจำนวนเต็มทั้งหมด ในภาษา OOP คลาสเป็นประเภทใช่หรือไม่ เมื่อชั้นเรียนมีสมาชิกมากกว่าหนึ่งคนเช่น class myclass{ int a; double b; } เมื่อเราพูดถึงชั้นเรียนเราหมายถึง " (a,b)อยู่ที่ไหนaint และbเป็นสองเท่า" หรือ "{ (x,y)| xis int ใด ๆ , ydouble ใด ๆ }"? ตัวอย่างmyclassหมายถึงอะไร " (a,b)อยู่ที่ไหนaint และbเป็นสองเท่า" หรือ วัตถุที่ใช้พื้นที่หน่วยความจำและที่ (ไม่จำเป็นต้องเช่นว่างเปล่า) ร้านค้า(x,y)ที่xใด int และyเป็นคู่ใด ๆ

6
จำนวนครั้งที่สำคัญฉันไม่สามารถคิดเหตุผลที่มีวัตถุแทนคลาสแบบสแตติก วัตถุมีประโยชน์มากกว่าที่ฉันคิดหรือไม่ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเข้าใจแนวคิดของวัตถุและในฐานะที่เป็นโปรแกรมเมอร์ Java ฉันรู้สึกว่ากระบวนทัศน์ OO นั้นค่อนข้างเป็นธรรมชาติสำหรับฉันในทางปฏิบัติ อย่างไรก็ตามเมื่อเร็ว ๆ นี้ฉันพบว่าตัวเองกำลังคิด: รอสักครู่สิ่งที่เป็นประโยชน์จริงของการใช้วัตถุมากกว่าการใช้คลาสคงที่ (มีการห่อหุ้มที่เหมาะสมและการปฏิบัติ OO)? ฉันนึกถึงประโยชน์สองประการของการใช้วัตถุ (ทั้งสองอย่างมีความสำคัญและมีประสิทธิภาพ): ความแตกต่าง: ช่วยให้คุณสามารถสลับการทำงานแบบไดนามิกและยืดหยุ่นในช่วงรันไทม์ ยังอนุญาตให้เพิ่ม 'ส่วน' การทำงานใหม่และทางเลือกให้กับระบบได้อย่างง่ายดาย ตัวอย่างเช่นหากมีCarคลาสที่ออกแบบมาเพื่อทำงานกับEngineวัตถุและคุณต้องการเพิ่ม Engine ใหม่ให้กับระบบที่รถยนต์สามารถใช้ได้คุณสามารถสร้างEngineคลาสย่อยใหม่ และเพียงส่งวัตถุของคลาสนี้ไปยัง Carวัตถุโดยไม่ต้อง Carเปลี่ยนอะไรเกี่ยวกับ และคุณสามารถตัดสินใจได้ในระหว่างรันไทม์ ความสามารถในการ 'ผ่านฟังก์ชันการทำงานรอบ ๆ ': คุณสามารถส่งผ่านวัตถุรอบ ๆ ระบบแบบไดนามิก แต่มีข้อได้เปรียบเพิ่มเติมใด ๆ กับวัตถุที่อยู่เหนือคลาสแบบคงที่ บ่อยครั้งที่ฉันเพิ่ม 'ส่วน' ใหม่ลงในระบบฉันทำได้โดยการสร้างคลาสใหม่และสร้างอินสแตนซ์ของวัตถุจากมัน แต่เมื่อเร็ว ๆ นี้เมื่อฉันหยุดและคิดเกี่ยวกับมันฉันรู้ว่าชั้นคงที่จะทำเช่นเดียวกับวัตถุในสถานที่จำนวนมากที่ฉันมักจะใช้วัตถุ ตัวอย่างเช่นฉันกำลังทำงานเพื่อเพิ่มกลไกการบันทึก / …

1
การเปลี่ยนลายเซ็นวิธีการสำหรับการใช้งานคลาสใน PHP
มีการทำงานที่ดีในการขาด Generics ของ PHP ที่ช่วยให้การตรวจสอบรหัสคงที่เพื่อตรวจสอบความสอดคล้องของประเภท? ฉันมีคลาสนามธรรมที่ฉันต้องการ sub-class และบังคับใช้วิธีการอย่างใดอย่างหนึ่งเปลี่ยนจากการรับพารามิเตอร์ชนิดหนึ่งการรับพารามิเตอร์ซึ่งเป็น sub-class ของพารามิเตอร์นั้น abstract class AbstractProcessor { abstract function processItem(Item $item); } class WoodProcessor extends AbstractProcessor { function processItem(WoodItem $item){} } สิ่งนี้ไม่ได้รับอนุญาตใน PHP เพราะมันเปลี่ยนลายเซ็นวิธีที่ไม่ได้รับอนุญาต ด้วย generics สไตล์ Java คุณสามารถทำสิ่งที่ชอบ: abstract class AbstractProcessor<T> { abstract function processItem(T $item); } class WoodProcessor extends AbstractProcessor<WoodItem> { …

4
การติดตามวัตถุทั้งหมดของชั้นเรียน
ฉันใหม่สำหรับการเขียนโปรแกรมเชิงวัตถุและฉันยังคงพบปัญหานี้ (ฉันเขียนโปรแกรมใน Java) ฉันลังเลที่จะถามเกี่ยวกับเรื่องนี้เพราะมันดูเหมือนว่าเป็นปัญหาพื้นฐาน แต่ฉันไม่สามารถหาข้อมูลใด ๆ เกี่ยวกับมันหรือคำถามเกี่ยวกับที่นี่และไม่มี ตำราที่ฉันได้อ่าน (ในระดับพื้นฐานค่อนข้างแน่นอน) ได้สัมผัสกับปัญหานี้: บ่อยครั้งที่ฉันต้องติดตามวัตถุทั้งหมดของชั้นเรียนที่สร้างขึ้นเพื่อย้ำผ่านวัตถุเหล่านั้นเพื่อจุดประสงค์ที่หลากหลาย ซึ่งเป็นวิธีที่ฉันกำลังเขียนโปรแกรมวัตถุจำนวนมากมีการอ้างอิงจากวัตถุอื่นเท่านั้นซึ่งหมายความว่าฉันไม่มีอาร์เรย์หรือชุดสะสมที่จะอ้างอิงพวกเขาทั้งหมด ฉันคิดว่าเนื่องจากสิ่งนี้ดูเหมือนจะเป็นความจำเป็นพื้นฐานใน OOP ควรมีวิธีการที่เป็นระบบค่อนข้างง่ายและเป็นไปได้ไหม เป็นเรื่องปกติหรือไม่ที่จะเก็บรายการสิ่งของทั้งหมดของชั้นเรียน ฉันคิดเกี่ยวกับอาร์เรย์หรือคอลเลกชันแบบคงที่ซึ่งคอนสตรัคเตอร์ของมันวัตถุใหม่ที่สร้างขึ้นจะถูกเพิ่มเข้าไป อย่างไรก็ตามสิ่งนี้จะไม่ทำงานกับคลาสย่อยเนื่องจากตัวสร้างจะไม่สืบทอด ฉันรู้ว่าคำถามนี้อาจไม่มีคำตอบง่ายๆ ฉันแค่หวังว่าใครบางคนสามารถสอนฉันในเรื่องนี้ได้บ้าง ฉันรู้สึกเหมือนว่าฉันขาดความรู้ที่เป็นศูนย์กลางที่นี่

4
ส่งคืนอินเตอร์เฟสหรือคลาส
สมมติว่าฉันมีวิธี public List<User> GetBatchOfUsers(IEnumerable<int> userIDs) { List<User> users = new List<User>(); // some database stuff return users; } ฉันได้อ่านว่ามันจะดีกว่าที่จะกลับมาอินเตอร์เฟซ (อย่างใดอย่างหนึ่งIListหรือIEnumerable) Listเมื่อเทียบกับกลับ ข้อโต้แย้งบางประการที่ฉันเคยได้ยินเกี่ยวกับการทำเช่นนั้นคือมันซ่อนข้อมูลและให้ความยืดหยุ่นแก่นักพัฒนา API ในการเปลี่ยนการแสดงข้อมูลภายในในภายหลัง ความกังวลของฉันเกี่ยวกับการส่งคืนIEnumerableคือคุณสูญเสียฟังก์ชันการทำงานเช่นการเข้าถึงแบบสุ่มและCountคุณสมบัติ ฉันรู้ว่าการยอมรับIEnumerableพารามิเตอร์เป็นสิ่งที่สมเหตุสมผลเนื่องจากทำให้ผู้บริโภคมีความยืดหยุ่นที่ดีที่สุดในการส่งข้อมูลไปยังวิธีการของฉันซึ่งเป็นข้อกำหนดที่เรียบง่ายสำหรับวิธีการใช้งาน แนวปฏิบัติที่ดีที่สุดสำหรับประเภทส่งคืนคืออะไร
9 c#  interfaces  class 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.