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

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

20
ฉันสามารถขยายคลาสโดยใช้มากกว่า 1 คลาสใน PHP ได้หรือไม่?
หากฉันมีหลายคลาสที่มีฟังก์ชั่นที่ฉันต้องการ แต่ต้องการจัดเก็บแยกต่างหากสำหรับองค์กรฉันสามารถขยายคลาสให้มีทั้งสองได้หรือไม่ กล่าวคือ class a extends b extends c แก้ไข: ฉันรู้วิธีการขยายชั้นเรียนทีละครั้ง แต่ฉันกำลังมองหาวิธีการขยายชั้นเรียนโดยใช้คลาสพื้นฐานหลายชั้นทันที - AFAIK คุณไม่สามารถทำสิ่งนี้ใน PHP ได้ แต่ควรมีวิธีแก้ไขโดยไม่ต้องหันมาใช้class c extends b,class b extends a
150 php  class  oop  extends 

7
ความแตกต่างระดับคงที่และปิดผนึก
มีคลาสใดบ้างที่ถูกนำไปใช้ในคลาสแบบสแตติก? วิธีการ: static class ABC : Anyclass มีคลาสใดที่สามารถสืบทอดได้ทั้งในคลาสที่ปิดผนึกและคลาสคงที่? วิธีการ: static class ABC : AClass {} และ sealed class ABC : AClass {} ฉันขอผิดบ้างไหม?
150 c#  .net  oop  static  sealed 


6
ตรวจสอบว่าคลาสของอินสแตนซ์ใช้อินเตอร์เฟสหรือไม่?
รับอินสแตนซ์ของคลาสเป็นไปได้ไหมที่จะพิจารณาว่าใช้อินเทอร์เฟซเฉพาะหรือไม่ เท่าที่ฉันรู้ไม่มีฟังก์ชั่นในตัวที่จะทำสิ่งนี้โดยตรง ฉันมีตัวเลือกอะไรบ้าง (ถ้ามี)
148 php  interface  oop 

9
เหตุใด Java Map จึงไม่ขยายการรวบรวม
ฉันรู้สึกประหลาดใจโดยความจริงที่ว่าไม่ได้เป็นMap<?,?>Collection<?> ฉันคิดว่ามันคงสมเหตุสมผลถ้ามีการประกาศเช่นนี้: public interface Map<K,V> extends Collection<Map.Entry<K,V>> ท้ายที่สุดแล้ว a Map<K,V>คือชุดของMap.Entry<K,V>ใช่ไหม ดังนั้นมีเหตุผลที่ดีว่าทำไมจึงไม่ใช้งานเช่นนี้ ขอบคุณ Cletus สำหรับคำตอบที่เชื่อถือได้มากที่สุด แต่ฉันยังคงสงสัยว่าทำไมหากคุณสามารถดูMap<K,V>เป็นSet<Map.Entries<K,V>>(ผ่านentrySet()) มันไม่เพียงขยายส่วนต่อประสานนั้นแทน ถ้า a MapคือCollectionอะไรองค์ประกอบคืออะไร คำตอบที่สมเหตุสมผลคือ "คู่ของคีย์ - ค่า" ว่าinterface Map<K,V> extends Set<Map.Entry<K,V>>จะดี! แต่สิ่งนี้ให้สิ่งที่เป็นMapนามธรรมที่จำกัด (และไม่มีประโยชน์อย่างยิ่ง) แต่ถ้าเป็นอย่างนั้นทำไมentrySetอินเทอร์เฟซถูกระบุไว้ทำไม? มันจะต้องมีประโยชน์อย่างใด (และฉันคิดว่ามันง่ายที่จะเถียงกับตำแหน่งนั้น!) คุณไม่สามารถถามค่าคีย์แผนที่ที่กำหนดและไม่สามารถลบรายการสำหรับคีย์ที่กำหนดโดยไม่ทราบว่าคีย์แมปนั้นให้คุณค่าอะไร ฉันไม่ได้บอกว่านั่นคือทั้งหมดที่มีให้Map! สามารถและควรรักษาวิธีอื่น ๆ ทั้งหมด (ยกเว้นentrySetซึ่งซ้ำซ้อนในขณะนี้)!
146 java  oop  collections 

6
ส่วนตัว vs ได้รับการป้องกัน - การเปิดเผยที่ดีเกี่ยวกับการปฏิบัติที่เกี่ยวข้อง [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันค้นหามาแล้วและฉันรู้ความแตกต่างทางทฤษฎี สาธารณะ - คลาสใด ๆ / ฟังก์ชั่นสามารถเข้าถึงวิธีการ / ทรัพย์สิน ได้รับการป้องกัน - เฉพาะคลาสนี้และคลาสย่อยใด ๆ เท่านั้นที่สามารถเข้าถึงเมธอด / คุณสมบัติได้ ส่วนตัว - คลาสนี้เท่านั้นที่สามารถเข้าถึงวิธีการ / คุณสมบัติ มันจะไม่ได้รับมรดกด้วยซ้ำ นั่นคือทั้งหมดที่ดีและดีคำถามคือสิ่งที่แตกต่างในทางปฏิบัติระหว่างพวกเขา? คุณจะใช้privateเมื่อใดและจะใช้เมื่อprotectedใด มีวิธีปฏิบัติที่ดีที่เป็นมาตรฐานหรือเป็นที่ยอมรับได้หรือไม่? จนถึงตอนนี้เพื่อรักษาแนวคิดของการสืบทอดและ polymorphism ฉันใช้publicสำหรับทุกสิ่งที่ควรเข้าถึงได้จากภายนอก (เช่นตัวสร้างและการทำงานของคลาสหลัก) และprotectedสำหรับวิธีการภายใน (ตรรกะวิธีการช่วยเหลือ ฯลฯ ) ฉันกำลังติดตามใช่ไหม? (โปรดทราบว่าคำถามนี้มีไว้สำหรับฉัน แต่ยังใช้สำหรับการอ้างอิงในอนาคตเนื่องจากฉันไม่ได้เห็นคำถามเช่นนี้ดังนั้น)

4
MATLAB OOP ช้าหรือฉันทำอะไรผิดหรือเปล่า?
ผมทดลองกับMATLAB OOPเป็นจุดเริ่มต้นที่ผมเลียนแบบของฉัน c ++ 's เรียน Logger และฉันวางฟังก์ชั่นผู้ช่วยสตริงของฉันทั้งหมดในชั้นเรียน String คิดว่ามันจะดีที่จะสามารถที่จะทำสิ่งที่ชอบa + b, a == b, a.find( b )แทนstrcat( a b ), strcmp( a, b ), ดึงองค์ประกอบแรกของstrfind( a, b )ฯลฯ ปัญหา: การชะลอตัว ฉันใช้สิ่งต่าง ๆ ข้างต้นเพื่อใช้งานและสังเกตเห็นการชะลอตัวที่รุนแรงในทันที ฉันทำผิดหรือเปล่า (ซึ่งเป็นไปได้อย่างแน่นอนเนื่องจากฉันมีประสบการณ์ค่อนข้าง จำกัด MATLAB) หรือ OOP ของ MATLAB เพิ่งแนะนำค่าใช้จ่ายจำนวนมากหรือไม่? กรณีทดสอบของฉัน นี่คือการทดสอบง่ายๆที่ฉันทำกับสตริงโดยทั่วไปเพียงแค่ต่อท้ายสตริงและนำส่วนที่ต่อท้ายออกมาอีกครั้ง: หมายเหตุ: อย่าเขียนคลาส String อย่างนี้ในรหัสจริง! Matlab …

5
ควรใช้คลาสที่ซ้อนและคลาสที่ซ้อนในโมดูลหรือไม่
ฉันค่อนข้างคุ้นเคยกับการใช้คลาสย่อยและโมดูล แต่เมื่อเร็ว ๆ นี้ฉันได้เห็นคลาสที่ซ้อนกันเช่นนี้ class Foo class Bar # do some useful things end end เช่นเดียวกับคลาสที่ซ้อนกันในโมดูลเช่น: module Baz class Quux # more code end end ทั้งเอกสารและบทความกระจัดกระจายหรือฉันไม่ได้รับการศึกษาในเรื่องเพียงพอที่จะคลานหาคำค้นหาที่ถูกต้อง แต่ดูเหมือนว่าฉันไม่สามารถหาข้อมูลจำนวนมากในหัวข้อ ใครสามารถให้ตัวอย่างหรือลิงค์ไปยังโพสต์ว่าทำไม / เมื่อจะใช้เทคนิคเหล่านั้น
144 ruby  oop 

6
ฉันจะออกแบบคลาสใน Python ได้อย่างไร
ฉันมีความช่วยเหลือที่ยอดเยี่ยมสำหรับคำถามก่อนหน้านี้ของฉันในการตรวจจับอุ้งเท้าและนิ้วเท้าภายในอุ้งเท้าแต่วิธีแก้ปัญหาทั้งหมดเหล่านี้ใช้ได้กับการวัดครั้งละครั้งเท่านั้น ตอนนี้ฉันมีข้อมูลที่ประกอบด้วย: ประมาณ 30 ตัว; แต่ละคนมี 24 วัด (แบ่งออกเป็นหลายกลุ่มย่อย); การวัดแต่ละครั้งมีอย่างน้อย 4 หน้าสัมผัส (หนึ่งอันสำหรับแต่ละอุ้งเท้า) และ การติดต่อแต่ละครั้งจะถูกแบ่งออกเป็น 5 ส่วนและ มีพารามิเตอร์หลายอย่างเช่นเวลาติดต่อสถานที่แรงทั้งหมดเป็นต้น เห็นได้ชัดว่าการรวมทุกอย่างไว้ในวัตถุขนาดใหญ่ชิ้นเดียวจะไม่ตัดมันดังนั้นฉันจึงคิดว่าฉันต้องใช้คลาสแทนฟังก์ชั่นการฆ่าในปัจจุบัน แต่ถึงแม้ว่าฉันจะอ่านบทการเรียนรู้ของงูหลามเกี่ยวกับชั้นเรียนฉันไม่สามารถนำไปใช้กับโค้ดของตัวเอง ( ลิงค์ GitHub ) ฉันรู้สึกเหมือนมันค่อนข้างแปลกที่จะประมวลผลข้อมูลทุกครั้งที่ฉันต้องการได้รับข้อมูลบางอย่าง เมื่อฉันรู้ตำแหน่งของอุ้งเท้าแต่ละตัวแล้วฉันก็ไม่มีเหตุผลที่จะคำนวณสิ่งนี้อีก นอกจากนี้ฉันต้องการเปรียบเทียบอุ้งเท้าทั้งหมดของสุนัขตัวเดียวกันเพื่อกำหนดว่าผู้ติดต่อรายใดที่เป็นของอุ้งเท้าหน้า (หน้า / หลังหลังซ้าย / ขวา) สิ่งนี้จะกลายเป็นความยุ่งเหยิงถ้าฉันยังคงใช้ฟังก์ชั่นเท่านั้น ดังนั้นตอนนี้ฉันกำลังมองหาคำแนะนำเกี่ยวกับวิธีการสร้างคลาสที่จะให้ฉันประมวลผลข้อมูลของฉัน ( ลิงก์ไปยังข้อมูลซิปของสุนัขตัวหนึ่ง ) อย่างสมเหตุสมผล
143 python  oop  class-design 

10
ตัวอย่างโลกแห่งความจริงเกี่ยวกับวิธีการใช้คุณสมบัติคุณสมบัติในหลาม?
ฉันสนใจวิธีใช้งาน@propertyPython ฉันอ่าน python docs แล้วและตัวอย่างในความคิดของฉันเป็นเพียงรหัสของเล่น: class C(object): def __init__(self): self._x = None @property def x(self): """I'm the 'x' property.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x ฉันไม่รู้ว่าฉันจะได้ประโยชน์อะไรจากการห่อหุ้ม_xด้วยมัณฑนากร ทำไมไม่ใช้เพียงแค่เป็น: class C(object): def __init__(self): self.x = None ฉันคิดว่าคุณสมบัติคุณสมบัติอาจมีประโยชน์ในบางสถานการณ์ แต่เมื่อ? ใครช่วยกรุณายกตัวอย่างจริง ๆ ให้ฉันได้บ้าง ขอบคุณ

20
ซิงเกิลที่มีอาร์กิวเมนต์ใน Java
ฉันอ่านบทความ Singleton ใน Wikipedia และฉันพบตัวอย่างนี้: public class Singleton { // Private constructor prevents instantiation from other classes private Singleton() {} /** * SingletonHolder is loaded on the first execution of Singleton.getInstance() * or the first access to SingletonHolder.INSTANCE, not before. */ private static class SingletonHolder { private static final Singleton …

5
Java `วิธีสุดท้าย ': มันสัญญาอะไร?
ในคลาส Java สามารถกำหนดวิธีเป็นfinalเพื่อทำเครื่องหมายว่าวิธีนี้อาจไม่ถูกแทนที่: public class Thingy { public Thingy() { ... } public int operationA() {...} /** this method does @return That and is final. */ public final int getThat() { ...} } ชัดเจนและอาจเป็นประโยชน์ในการป้องกันการทับซ้อนโดยไม่ตั้งใจหรืออาจเป็นการทำงาน - แต่นั่นไม่ใช่คำถามของฉัน คำถามของฉันคือ: จากมุมมอง OOP ฉันเข้าใจว่าโดยการกำหนดวิธีการfinalที่นักออกแบบชั้นสัญญาว่าวิธีนี้จะทำงานได้ตามที่อธิบายไว้หรือโดยนัย แต่บ่อยครั้งนี้อาจจะเป็นนอกอิทธิพลของผู้เขียนชั้นถ้าสิ่งที่วิธีการที่จะทำมีความซับซ้อนมากขึ้นแล้วเพียงแค่การส่งมอบทรัพย์สิน ข้อ จำกัด ทางวากยสัมพันธ์ชัดเจนสำหรับฉัน แต่ความหมายของ OOP คืออะไร? มีการfinalใช้อย่างถูกต้องในแง่นี้โดยผู้เขียนชั้นเรียนมากที่สุด? วิธีการ "สัญญา" …
141 java  oop  final 

12
การสร้างวัตถุที่ไม่ระบุชื่อใน PHP
อย่างที่เรารู้การสร้างวัตถุที่ไม่ระบุชื่อใน JavaScript นั้นง่ายเหมือนโค้ดด้านล่าง: var object = { p : "value", p1 : [ "john", "johnny" ] }; alert(object.p1[1]); เอาท์พุท: an alert is raised with value "johnny" สามารถใช้เทคนิคเดียวกันนี้ใน PHP ได้หรือไม่? เราสามารถสร้างวัตถุนิรนามใน PHP ได้ไหม?
141 php  oop  object 

6
จุดประสงค์ของฟังก์ชั่นเสมือนส่วนตัวที่บริสุทธิ์คืออะไร?
ฉันเจอรหัสต่อไปนี้ในไฟล์ส่วนหัว: class Engine { public: void SetState( int var, bool val ); { SetStateBool( int var, bool val ); } void SetState( int var, int val ); { SetStateInt( int var, int val ); } private: virtual void SetStateBool(int var, bool val ) = 0; virtual void SetStateInt(int var, int …


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