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

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

16
คุณใช้คลาสใน C อย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน12 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ สมมติว่าฉันต้องใช้ C (ไม่มี C ++ หรือคอมไพเลอร์เชิงวัตถุ) และฉันไม่มีการจัดสรรหน่วยความจำแบบไดนามิกเทคนิคอะไรบ้างที่ฉันสามารถใช้ในการใช้คลาสหรือการประมาณคลาสที่ดี? เป็นความคิดที่ดีหรือไม่ที่จะแยก "class" เป็นไฟล์แยกต่างหาก? สมมติว่าเราสามารถจัดสรรหน่วยความจำล่วงหน้าโดยสมมติว่ามีอินสแตนซ์จำนวนคงที่หรือกำหนดการอ้างอิงไปยังแต่ละวัตถุเป็นค่าคงที่ก่อนเวลารวบรวม อย่าลังเลที่จะตั้งสมมติฐานเกี่ยวกับแนวคิดของ OOP ที่ฉันจะต้องนำไปใช้ (จะแตกต่างกัน) และแนะนำวิธีที่ดีที่สุดสำหรับแต่ละข้อ ข้อ จำกัด: ฉันต้องใช้ C และไม่ใช่ OOP เพราะฉันกำลังเขียนรหัสสำหรับระบบฝังตัวและคอมไพเลอร์และฐานรหัสที่มีอยู่ก่อนหน้านี้อยู่ใน C ไม่มีการจัดสรรหน่วยความจำแบบไดนามิกเพราะเรามีหน่วยความจำไม่เพียงพอที่จะสันนิษฐานว่าเราจะไม่หมดถ้าเราเริ่มการจัดสรรแบบไดนามิก คอมไพเลอร์ที่เราทำงานด้วยไม่มีปัญหากับพอยน์เตอร์ของฟังก์ชัน
139 c  class  oop  embedded 

6
เป็นไปได้ไหมที่จะสร้างคลาสสแตติกใน PHP (เช่นใน C #)
ฉันต้องการสร้างคลาสแบบคงที่ใน PHP และให้มันทำงานเหมือนใน C # ดังนั้น ตัวสร้างจะถูกเรียกโดยอัตโนมัติในการโทรครั้งแรกไปที่ชั้นเรียน ไม่ต้องใช้การเริ่มต้น อะไรทำนองนี้ ... static class Hello { private static $greeting = 'Hello'; private __construct() { $greeting .= ' There!'; } public static greet(){ echo $greeting; } } Hello::greet(); // Hello There!

7
แสดงรายการคลาสพื้นฐานทั้งหมดในลำดับชั้นของคลาสที่กำหนดหรือไม่
เมื่อพิจารณาถึงคลาสFoo(ไม่ว่าจะเป็นคลาสสไตล์ใหม่หรือไม่ก็ตาม) คุณจะสร้างคลาสพื้นฐานทั้งหมดได้อย่างไร- ที่ใดก็ได้ในลำดับชั้นการสืบทอด - issubclassจาก?

11
มีกรณีการใช้งานสำหรับ singletons ด้วยการเข้าถึงฐานข้อมูลใน PHP?
ฉันเข้าถึงฐานข้อมูล MySQL ของฉันผ่าน PDO ฉันตั้งค่าการเข้าถึงฐานข้อมูลและความพยายามครั้งแรกของฉันคือการใช้สิ่งต่อไปนี้: สิ่งแรกที่ผมคิดว่ามีที่global: $db = new PDO('mysql:host=127.0.0.1;dbname=toto', 'root', 'pwd'); function some_function() { global $db; $db->query('...'); } นี่ถือว่าเป็นการปฏิบัติที่ไม่ดี หลังจากค้นหาเพียงเล็กน้อยฉันก็จบลงด้วยรูปแบบซิงเกิลซึ่ง "ใช้กับสถานการณ์ที่จำเป็นต้องมีอินสแตนซ์เดียวของคลาส" ตามตัวอย่างในคู่มือเราควรทำสิ่งนี้: class Database { private static $instance, $db; private function __construct(){} static function singleton() { if(!isset(self::$instance)) self::$instance = new __CLASS__; return self:$instance; } function get() { if(!isset(self::$db)) self::$db …

7
วิธีการโอเวอร์โหลดสำหรับอาร์กิวเมนต์ว่าง
ฉันได้เพิ่มสามวิธีพร้อมพารามิเตอร์: public static void doSomething(Object obj) { System.out.println("Object called"); } public static void doSomething(char[] obj) { System.out.println("Array called"); } public static void doSomething(Integer obj) { System.out.println("Integer called"); } เมื่อผมโทรdoSomething(null)แล้วคอมไพเลอร์โยนข้อผิดพลาดเป็นวิธีการที่ไม่ชัดเจน ดังนั้นเป็นปัญหาเพราะIntegerและchar[]วิธีการหรือIntegerและObjectวิธีการ?
138 java  oop  null  overloading 

13
Encapsulation vs Abstraction?
นี่คือคำจำกัดความสั้น ๆ ของการห่อหุ้มและนามธรรม abstraction: กระบวนการของ abstraction ใน Java นั้นใช้เพื่อซ่อนรายละเอียดบางอย่างและแสดงเฉพาะคุณสมบัติที่สำคัญของวัตถุ กล่าวอีกนัยหนึ่งมันเกี่ยวข้องกับมุมมองภายนอกของวัตถุ (อินเทอร์เฟซ) ตัวอย่างที่ดีที่ฉันเห็นในเว็บไซต์นี้คือส่วนต่อประสาน encapsulation: โดยพื้นฐานแล้วเกี่ยวกับการซ่อนสถานะของวัตถุด้วยความช่วยเหลือของตัวดัดแปลงเช่นส่วนตัวสาธารณะการป้องกัน ฯลฯ เราเปิดเผยสถานะผ่านวิธีสาธารณะเฉพาะเมื่อจำเป็นเท่านั้น สิ่งที่เราประสบความสำเร็จกับการปรับเปลี่ยนเช่นprivate,publicยังซ่อนรายละเอียดที่ไม่จำเป็นออกจากโลกด้านซึ่งเป็นอะไร แต่ยังแนวคิดนามธรรม ดังนั้นจากคำอธิบายข้างต้นดูเหมือนว่าการห่อหุ้มเป็นส่วนหนึ่งของสิ่งที่เป็นนามธรรมหรือเราสามารถพูดได้ว่ามันเป็นส่วนหนึ่งของสิ่งที่เป็นนามธรรม แต่ทำไมคำว่า encapsulation จึงถูกคิดค้นขึ้นเมื่อเราสามารถจัดการกับนามธรรมได้เท่านั้น? ฉันแน่ใจว่าควรมีความแตกต่างที่สำคัญซึ่งแยกพวกเขา แต่วัสดุส่วนใหญ่ในเน็ตกล่าวว่าเกือบเหมือนกันสำหรับพวกเขาทั้งสอง แม้ว่าคำถามนี้ได้รับการหยิบยกขึ้นมาในฟอรัมนี้ก่อนหน้านี้เช่นกัน แต่ฉันกำลังโพสต์มันอีกครั้งด้วยความสงสัยที่เฉพาะเจาะจง บางคำตอบยังกล่าวอีกว่าสิ่งที่เป็นนามธรรมเป็นแนวคิดและการห่อหุ้มคือการนำไปปฏิบัติ แต่ฉันไม่ซื้อสิ่งนี้ - ถ้าเป็นจริงฉันก็สามารถคิดได้ว่าแนวคิดที่แตกต่างกันสองอย่างนี้มีไว้เพื่อสร้างความสับสนให้เรา อัปเดต: -หลังจาก 5 ปีที่ฉันได้คำตอบของตัวเองซึ่งเป็นส่วนสำคัญตามคำตอบในโพสต์นี้และด้านล่าง แตกต่างระหว่างนามธรรมและการห่อหุ้มหรือไม่? encapsulation vs Abstraction ตัวอย่างโลกแห่งความจริง
137 java  oop 

8
ความแตกต่างระหว่างพร็อกซีและรูปแบบมัณฑนากร
คุณสามารถให้คำอธิบายที่ดีใด ๆ สิ่งที่เป็นความแตกต่างระหว่างพร็อกซีและมัณฑนากร ? ความแตกต่างหลัก ๆ ที่ฉันเห็นคือเมื่อเราสมมติว่าProxyใช้องค์ประกอบและDecoratorใช้การรวมแล้วดูเหมือนว่าจะชัดเจนว่าโดยการใช้Decoratorsหลาย (หนึ่งหรือมากกว่า) คุณสามารถปรับเปลี่ยน / เพิ่มฟังก์ชันการทำงานเพื่ออินสแตนซ์ที่มีอยู่ก่อนพร็อกซีมีอินสแตนซ์ภายในของคลาสพร็อกซีและผู้รับมอบสิทธิ์เพิ่มคุณสมบัติเพิ่มเติม (ลักษณะการทำงานของพร็อกซี) คำถามคือ - พร็อกซีที่สร้างด้วยการรวมยังเป็นพร็อกซีหรือมากกว่ามัณฑนากรหรือไม่ อนุญาต (ตามคำจำกัดความในรูปแบบ GoF) เพื่อสร้างพร็อกซีที่มีการรวมหรือไม่

7
การสร้างแบบจำลองลิฟต์โดยใช้การวิเคราะห์และออกแบบเชิงวัตถุ [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบพร้อมข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ มีชุดคำถามที่ดูเหมือนจะใช้กันทั่วไปในการสัมภาษณ์และชั้นเรียนเมื่อพูดถึงการออกแบบและวิเคราะห์เชิงวัตถุ นี่คือหนึ่งในนั้น น่าเสียดายที่อาจารย์ OOP ของฉันในวิทยาลัยไม่เคยให้คำตอบเลยฉันก็เลยสงสัย ปัญหามีดังนี้: ออกแบบชุดพื้นฐานของวัตถุ / วิธีการที่จะใช้ในการจำลองธนาคารลิฟต์ อะไรคือวัตถุและคุณลักษณะ / วิธีการ? เพื่อประโยชน์ในการโต้แย้งสมมติว่าอาคารของเรามียี่สิบชั้น ชั้นล่างสุดเป็นล็อบบี้และชั้นสองเชื่อมกับที่จอดรถ (ดังนั้นคนจะเข้า / ออกอาคารทั้งชั้นล่างสุดหรือชั้นสอง) มีลิฟต์ธนาคารหนึ่งแห่งที่ให้บริการทุกชั้น มีลิฟต์สามตัวในธนาคารลิฟต์และหนึ่งลิฟต์ต่อเพลา อะไรคือวิธีที่ถูกต้องในการสร้างแบบจำลองนี้ในแบบจำลองเชิงวัตถุ?


7
__init __ () ควรเรียก __init __ () ของคลาสผู้ปกครองหรือไม่
ฉันใช้สิ่งนั้นใน Objective-C ฉันมีโครงสร้างนี้: - (void)init { if (self = [super init]) { // init class } return self; } Python ควรเรียกการใช้งานของคลาสแม่__init__หรือไม่ class NewClass(SomeOtherClass): def __init__(self): SomeOtherClass.__init__(self) # init class นี่เป็นจริงหรือเท็จสำหรับ__new__()และ__del__()? แก้ไข:มีคำถามที่คล้ายกันมาก: การสืบทอดและการแทนที่__init__ใน Python
133 python  oop  superclass 

7
“ โปรแกรมไปยังอินเทอร์เฟซไม่ใช่การใช้งาน” หมายความว่าอย่างไร
มีคนหนึ่งสะดุดกับวลีนี้เมื่ออ่านเกี่ยวกับรูปแบบการออกแบบ แต่ฉันไม่เข้าใจมีใครช่วยอธิบายเรื่องนี้ให้ฉันได้ไหม

9
คุณจำลองการสืบทอดอย่างมีประสิทธิภาพในฐานข้อมูลได้อย่างไร?
แนวทางปฏิบัติที่ดีที่สุดสำหรับการสร้างแบบจำลองการสืบทอดในฐานข้อมูลคืออะไร? อะไรคือการแลกเปลี่ยน (เช่นความสามารถในการตอบสนอง)? (ฉันสนใจ SQL Server และ. NET มากที่สุด แต่ฉันก็อยากเข้าใจว่าแพลตฟอร์มอื่น ๆ แก้ไขปัญหานี้อย่างไร)

8
Java: คลาสคงที่?
ฉันมีคลาสที่เต็มไปด้วยฟังก์ชันยูทิลิตี้ การสร้างอินสแตนซ์ของอินสแตนซ์นั้นไม่สมเหตุสมผล แต่ฉันยังต้องการเรียกวิธีการของมัน วิธีที่ดีที่สุดในการจัดการกับปัญหานี้คืออะไร? ชั้นคง? บทคัดย่อ?
130 java  class  oop  static  utility 

3
การเริ่มฟังก์ชั่น PHP ด้วยแอมเปอร์แซนด์หมายความว่าอย่างไร?
ฉันใช้ห้องสมุด Facebook กับรหัสนี้: class FacebookRestClient { ... public function &users_hasAppPermission($ext_perm, $uid=null) { return $this->call_method('facebook.users.hasAppPermission', array('ext_perm' => $ext_perm, 'uid' => $uid)); } ... } & ที่จุดเริ่มต้นของนิยามฟังก์ชันหมายถึงอะไรและฉันจะใช้ไลบรารีแบบนี้ได้อย่างไร (ในตัวอย่างง่าย ๆ )
129 php  oop 

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

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