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

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

2
การลบล้างค่าคงที่คลาสเทียบกับคุณสมบัติ
ฉันต้องการทำความเข้าใจให้ดีขึ้นว่าเหตุใดในสถานการณ์ด้านล่างจึงมีความแตกต่างในวิธีการสืบทอดค่าคงที่ของคลาสเทียบกับตัวแปรอินสแตนซ์ <?php class ParentClass { const TEST = "ONE"; protected $test = "ONE"; public function showTest(){ echo self::TEST; echo $this->test; } } class ChildClass extends ParentClass { const TEST = "TWO"; protected $test = "TWO"; public function myTest(){ echo self::TEST; echo $this->test; } } $child = new ChildClass(); $child->myTest(); $child->showTest(); …

12
วิธีสร้างแอปพลิเคชัน OOP ที่สมบูรณ์แบบ [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิด6 เดือนที่แล้ว . ปรับปรุงคำถามนี้ เมื่อเร็ว ๆ นี้ฉันกำลังพยายามหา บริษัท 'x' พวกเขาส่งชุดคำถามมาให้ฉันและบอกให้ฉันแก้เพียงข้อเดียว ปัญหาเป็นเช่นนี้ - ภาษีการขายขั้นพื้นฐานมีผลในอัตรา 10% สำหรับสินค้าทั้งหมดยกเว้นหนังสืออาหารและผลิตภัณฑ์ทางการแพทย์ที่ได้รับการยกเว้น อากรขาเข้าคือภาษีขายเพิ่มเติมที่ใช้กับสินค้านำเข้าทั้งหมดในอัตรา 5% โดยไม่มีข้อยกเว้น เมื่อฉันซื้อสินค้าฉันจะได้รับใบเสร็จรับเงินซึ่งแสดงชื่อของสินค้าทั้งหมดและราคา (รวมภาษี) จบด้วยต้นทุนรวมของสินค้าและจำนวนภาษีขายทั้งหมดที่จ่าย กฎการปัดเศษสำหรับภาษีขายคือสำหรับอัตราภาษี n% ราคาชั้นวางของ p จะมีจำนวน (np / 100 ปัดเศษขึ้นเป็น 0.05 ที่ใกล้ที่สุด) “ พวกเขาบอกฉันว่าพวกเขาสนใจในด้านการออกแบบของโซลูชันของคุณและต้องการประเมินทักษะการเขียนโปรแกรมเชิงวัตถุของฉัน” นี่คือสิ่งที่พวกเขาบอกด้วยคำพูดของพวกเขาเอง สำหรับวิธีแก้ปัญหาเราต้องการให้คุณใช้ Java, Ruby หรือ C # เรามีความสนใจในด้านการออกแบบของการแก้ปัญหาของคุณและต้องการที่จะประเมินผลการศึกษาของคุณObject Oriented ทักษะการเขียนโปรแกรม …
98 c#  oop 


11
การสืบทอดหลายรายการใน PHP
ฉันกำลังมองหาวิธีที่ดีและสะอาดเพื่อหลีกเลี่ยงข้อเท็จจริงที่ว่า PHP5 ยังไม่รองรับการสืบทอดหลายรายการ นี่คือลำดับชั้นของคลาส: ข้อความ - TextMessage -------- InvitationTextMessage - EmailMessage -------- InvitationEmailMessage คลาส Invitation * ทั้งสองประเภทมีหลายอย่างที่เหมือนกัน ฉันชอบที่จะมีคลาสผู้ปกครองทั่วไปคำเชิญที่ทั้งคู่จะสืบทอดมา น่าเสียดายที่พวกเขามีหลายสิ่งที่เหมือนกันกับบรรพบุรุษปัจจุบันของพวกเขา ... TextMessage และ EmailMessage ความปรารถนาคลาสสิกสำหรับการสืบทอดหลายรายการที่นี่ วิธีใดที่มีน้ำหนักเบาที่สุดในการแก้ปัญหานี้ ขอบคุณ!
97 php  oop  inheritance 

18
คุณจะเข้าถึงคุณสมบัติของวัตถุจากภายในวิธีการวัตถุได้อย่างไร [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา วิธี "เจ้าระเบียบ" หรือ "ถูกต้อง" ในการเข้าถึงคุณสมบัติของวัตถุจากภายในเมธอดอ็อบเจ็กต์ที่ไม่ใช่เมธอด getter / setter คืออะไร? ฉันรู้ว่าจากภายนอกวัตถุคุณควรใช้ getter / setter แต่จากภายในคุณจะทำ: Java: String property = this.property; PHP: $property = $this->property; หรือคุณจะทำ: Java: String property = this.getProperty(); PHP: $property = $this->getProperty(); ยกโทษให้ฉันด้วยถ้า Java ของฉันหลุดไปนิดหน่อยเป็นเวลาหนึ่งปีแล้วที่ฉันตั้งโปรแกรมใน Java ... แก้ไข: ดูเหมือนว่าผู้คนจะสมมติว่าฉันกำลังพูดถึงตัวแปร / คุณสมบัติส่วนตัวหรือที่ได้รับการป้องกันเท่านั้น …
97 java  php  oop  theory 

5
Javascript เรียกใช้เมธอดอ็อบเจ็กต์แบบไดนามิกจากสตริง
ฉันสามารถเรียกเมธอดอ็อบเจ็กต์แบบไดนามิกโดยมีชื่อเมธอดเป็นสตริงได้หรือไม่ ฉันจะจินตนาการได้ดังนี้: var FooClass = function() { this.smile = function() {}; } var method = "smile"; var foo = new FooClass(); // I want to run smile on the foo instance. foo.{mysterious code}(); // being executed as foo.smile();

3
ฉันจะติดตั้ง Access Control List ในแอปพลิเคชัน Web MVC ของฉันได้อย่างไร
คำถามแรก โปรดอธิบายฉันได้ไหมว่า ACL ที่ง่ายที่สุดสามารถนำไปใช้ใน MVC ได้อย่างไร นี่คือแนวทางแรกของการใช้ Acl ใน Controller ... <?php class MyController extends Controller { public function myMethod() { //It is just abstract code $acl = new Acl(); $acl->setController('MyController'); $acl->setMethod('myMethod'); $acl->getRole(); if (!$acl->allowed()) die("You're not allowed to do it!"); ... } } ?> มันเป็นแนวทางที่แย่มากและสิ่งที่ลบคือเราต้องเพิ่มชิ้นส่วนของ Acl ลงในวิธีการของคอนโทรลเลอร์แต่ละตัว แต่เราไม่ต้องการการอ้างอิงเพิ่มเติม! แนวทางต่อไปคือการสร้างวิธีการทั้งหมดของคอนโทรลเลอร์privateและเพิ่มรหัส …

9
การสร้างวัตถุขนาดใหญ่ที่ไม่เปลี่ยนรูปโดยไม่ใช้ตัวสร้างที่มีรายการพารามิเตอร์ยาว ๆ
ฉันมีวัตถุขนาดใหญ่ (มากกว่า 3 ช่อง) ที่สามารถและไม่เปลี่ยนรูปได้ ทุกครั้งที่ฉันเจอกรณีนั้นฉันมักจะสร้างสิ่งที่น่ารังเกียจของตัวสร้างที่มีรายการพารามิเตอร์ยาว ๆ รู้สึกไม่ถูกต้องใช้ยากและความสามารถในการอ่านไม่เพียงพอ จะยิ่งแย่ไปกว่านั้นถ้าฟิลด์นั้นเป็นประเภทคอลเลกชันบางประเภทเช่นรายการ วิธีง่ายๆaddSibling(S s)จะทำให้การสร้างวัตถุง่ายขึ้นมาก แต่ทำให้วัตถุไม่แน่นอน พวกคุณใช้อะไรในกรณีเช่นนี้? ฉันใช้ Scala และ Java แต่ฉันคิดว่าปัญหาคือภาษาไม่เชื่อเรื่องพระเจ้าตราบใดที่ภาษานั้นมุ่งเน้นไปที่วัตถุ วิธีแก้ปัญหาที่ฉันคิดได้: "สิ่งที่น่ารังเกียจของตัวสร้างที่มีรายการพารามิเตอร์ยาว" รูปแบบตัวสร้าง
96 java  oop  scala  immutability 

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


8
Mediator Vs Observer รูปแบบการออกแบบเชิงวัตถุ
ฉันอ่านGang Of Fourเพื่อที่จะแก้ปัญหาบางอย่างของฉันและเจอรูปแบบคนกลาง ก่อนหน้านี้ฉันใช้Observerในโครงการของฉันเพื่อสร้างแอปพลิเคชัน GUI ฉันสับสนเล็กน้อยเพราะฉันไม่พบความแตกต่างระหว่างสองอย่างนี้ ฉันเรียกดูเพื่อค้นหาความแตกต่าง แต่ไม่พบคำตอบที่เหมาะสมสำหรับคำถามของฉัน มีใครช่วยฉันแยกความแตกต่างระหว่างสองอย่างด้วยตัวอย่างที่ดีที่แบ่งเขตทั้งสองอย่างชัดเจนได้ไหม


17
รูปแบบโรงงานใน C #: จะแน่ใจได้อย่างไรว่าอินสแตนซ์ออบเจ็กต์สามารถสร้างได้โดยคลาสโรงงานเท่านั้น
เมื่อเร็ว ๆ นี้ฉันคิดเกี่ยวกับการรักษาความปลอดภัยของรหัสของฉัน ฉันอยากรู้ว่าเราจะแน่ใจได้อย่างไรว่าจะไม่สามารถสร้างวัตถุได้โดยตรง แต่ด้วยวิธีการบางอย่างของคลาสโรงงานเท่านั้น สมมติว่าฉันมีคลาส "วัตถุทางธุรกิจ" และฉันต้องการตรวจสอบให้แน่ใจว่าอินสแตนซ์ใด ๆ ของคลาสนี้จะมีสถานะภายในที่ถูกต้อง เพื่อให้บรรลุสิ่งนี้ฉันจะต้องทำการตรวจสอบบางอย่างก่อนที่จะสร้างวัตถุอาจอยู่ในตัวสร้าง ทั้งหมดนี้ไม่เป็นไรจนกว่าฉันจะตัดสินใจว่าต้องการให้การตรวจสอบนี้เป็นส่วนหนึ่งของตรรกะทางธุรกิจ ดังนั้นฉันจะจัดให้ออบเจ็กต์ทางธุรกิจสามารถสร้างได้โดยใช้วิธีการบางอย่างในคลาสตรรกะทางธุรกิจของฉัน แต่ไม่สามารถสร้างได้โดยตรงได้อย่างไร ความปรารถนาแรกตามธรรมชาติที่จะใช้คีย์เวิร์ด "เพื่อน" เก่าที่ดีของ C ++ จะขาดหายไปกับ C # ดังนั้นเราจึงต้องการทางเลือกอื่น ... ลองดูตัวอย่าง: public MyBusinessObjectClass { public string MyProperty { get; private set; } public MyBusinessObjectClass (string myProperty) { MyProperty = myProperty; } } public MyBusinessLogicClass { public …

10
แนวทางปฏิบัติที่ดีที่สุด: การสั่งซื้อสาธารณะ / ป้องกัน / ส่วนตัวภายในนิยามคลาส?
ฉันกำลังเริ่มโครงการใหม่ตั้งแต่ต้นและต้องการให้มันสะอาด / มีมาตรฐานการเข้ารหัสที่ดี นักพัฒนาที่ช่ำชองที่นี่ชอบจัดวางสิ่งต่างๆภายในชั้นเรียนในลำดับใด ตอบ: 1) วิธีการสาธารณะ 2) วิธีการส่วนตัว 3) ตัวแทนสาธารณะ 4) ตัวแทนส่วนตัว B: 1) ตัวแทนสาธารณะ 2) ตัวแทนส่วนตัว 3) วิธีการสาธารณะ 4) วิธีการส่วนตัว C: 1) public vars 2) public method 3) private method 4) private vars โดยทั่วไปฉันชอบใส่ vars คงที่สาธารณะไว้ด้านบน แต่ถ้าอย่างนั้นวิธีการแบบคงที่สาธารณะจะแสดงอยู่ข้างหน้าตัวสร้างของคุณหรือตัวสร้างควรอยู่ในรายการก่อนเสมอ? แบบนั้น ... ฉันรู้ว่ามันฟิน แต่ฉันแค่สงสัย: แนวทางปฏิบัติที่ดีที่สุดสำหรับสิ่งนี้คืออะไร? PS: ไม่ฉันไม่ใช้ Cc # ฉันรู้ว่า. ฉันเป็น …

3
คุณสามารถอธิบาย Liskov Substitution Principle ด้วยตัวอย่าง C # ที่ดีได้หรือไม่? [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้น ปิดให้บริการเมื่อปีที่แล้ว ปรับปรุงคำถามนี้ คุณสามารถอธิบาย Liskov Substitution Principle (The 'L' of SOLID) ด้วยตัวอย่าง C # ที่ดีซึ่งครอบคลุมทุกแง่มุมของหลักการในรูปแบบที่เรียบง่ายได้หรือไม่? ถ้าเป็นไปได้จริงๆ.

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