คำจำกัดความของสถานะของวัตถุใน OOP


11

ฉันต้องการคำจำกัดความที่กระชับของ "สถานะของวัตถุ" ในการเขียนโปรแกรมเชิงวัตถุ (สำหรับกระดาษ)

ประมาณครึ่งวันฉันค้นหากระดาษที่ฉันสามารถอ้างอิงในหัวข้อนี้ แต่ฉันหาไม่เจอ เอกสารทั้งหมดที่ฉันพบส่วนใหญ่เป็นเอกสารทั่วไปเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุและพวกเขาไม่ได้กำหนดสถานะของวัตถุ

ฉันไม่แน่ใจ แต่สิ่งที่คาดเดาได้ดีที่สุดคือ: สถานะของวัตถุนั้นถูกกำหนดโดยสถานะของตัวแปรอินสแตนซ์ของวัตถุ

ฉันกำลังค้นหาคำจำกัดความของสถานะของวัตถุและ / หรือการอ้างอิงในหัวข้อ

(btw ฉันสามารถอ้างถึงแนวคิดเป็น "สถานะวัตถุ" หรือเป็นเรื่องผิดปกตินี้ได้หรือไม่)


ฉันคิดว่ามีห้องสำหรับความคลุมเครืออยู่ที่นี่ดังนั้นคุณควรระบุไว้ในบทความของคุณว่า 'รัฐ' หมายถึงอะไร '_you _; หากคุณไม่สามารถทำเช่นนั้นได้บางทีคุณอาจไม่ได้อยู่ในตำแหน่งที่จะปล่อยกระดาษของคุณ
PJTraill

คำตอบ:


9

คุณสามารถดู (และอ้างอิง) หนังสือ"การวิเคราะห์เชิงวัตถุและการออกแบบ" โดย G. Booch :

... วัตถุคือเอนทิตีที่มีสถานะพฤติกรรมและเอกลักษณ์ โครงสร้างและพฤติกรรมของวัตถุที่คล้ายกันถูกกำหนดไว้ในคลาสทั่วไป อินสแตนซ์ข้อกำหนดและวัตถุสามารถใช้แทนกันได้

เราจะพิจารณาแนวคิดของรัฐพฤติกรรมและเอกลักษณ์ในรายละเอียดเพิ่มเติมในส่วนที่ตามมา ...

และมีส่วนย่อยทั้งหมดที่อธิบายแนวคิดของรัฐ :

... จากตัวอย่างนี้เราอาจสร้างคำจำกัดความระดับต่ำดังต่อไปนี้

สถานะของวัตถุบนโลกไซเบอร์ของคุณสมบัติ (มักจะคงที่) ของวัตถุรวมทั้งค่าปัจจุบัน (มักจะแบบไดนามิก) ของแต่ละคุณสมบัติเหล่านี้ ...


4
เลือนตามปกติ Booth หมายถึงอะไร: รัฐคือการกำหนดค่าให้กับตัวแปรเหล่านั้น
reinierpost

3

คุณต้องจำไว้ว่าสถานะของวัตถุนั้นเป็นเอนทิตี "นามธรรม" ตามที่กำหนดโดยวิธีการที่สังเกตได้ ตัวอย่างเช่นวัตถุที่ใช้ตารางแฮชมีสถานะเป็นคอลเลกชันของค่าที่เก็บไว้ในตารางแฮชไม่ใช่รายละเอียดการเป็นตัวแทนภายในทั้งหมด


2

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

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

ส่วนหนึ่งของความยากลำบากในการกำหนดสถานะของวัตถุใน OOP คือเมื่อเราจำลองเอนทิตีในภาษาเฉพาะภาษานั้นมักจะไม่อนุญาตให้เราแยกแยะคุณลักษณะของวัตถุที่เป็นแนวคิดของเอนทิตีเดียวกันจากคนอื่นที่ไม่ใช่ ตัวอย่างเช่นรายการที่เชื่อมโยงของCarจะประกอบด้วยจำนวนLink-objects ซึ่งมีพอยน์เตอร์ไปยังหน้าถัดไป (และอาจจะก่อนหน้านี้) Linkแม้ว่าแนวคิดในรายการจะเป็นวัตถุเดียว ลิงก์อาจฝังอยู่ด้วยCar--objects หรือมีตัวชี้ไปยังพวกเขา แต่ในกรณีนี้วัตถุที่เชื่อมโยงจะถูกแยกแนวคิดมากกว่าส่วนหนึ่งของรายการ; ในรายการการเปลี่ยนแปลงล่าสุดไม่ว่าจะเป็นการเปลี่ยนแปลงใด ๆ อาจมีอยู่ในรายการและถือเป็นส่วนหนึ่งของการเปลี่ยนแปลง ในกรณีต่าง ๆ เหล่านี้เราต้องตัดสินใจว่าเราจะพิจารณาสถานะของวัตถุหนึ่ง ๆ เพื่อรวมว่าของวัตถุที่เชื่อมโยงหรือไม่ นอกจากนี้ a Carอาจมีลิงก์ไปยังRegistering_Authority- เราอาจไม่พิจารณาสถานะของรถยนต์ที่จะเปลี่ยนเมื่อหน่วยงานที่ลงทะเบียนเปลี่ยน URL ของเว็บไซต์ เว้นแต่ว่าภาษาที่ใช้งานจะช่วยให้เราแยกแยะความแตกต่างของลิงค์มันจะไม่สามารถสร้างนิยามทั่วไปของสถานะของวัตถุในแง่ของภาษาเพียงอย่างเดียว

ว่า ' ภายนอก ' หรือ ' ทำงาน ' รัฐอาจจะหมายถึง 'ว่ามันจะทำงาน' ee.g. วิธีตอบสนองต่อการเรียกใช้เมธอดหรือกับส่วนต่อประสานผู้ใช้ สำหรับวัตถุเป็นคลาสอินสแตนซ์คำจำกัดความนี้ขึ้นอยู่กับชนิดของวัตถุที่ถูกมองว่าเป็นของ: เห็นเป็นCircleสีของColoured_Circleมองไม่เห็นและด้วยเหตุนี้ไม่เกี่ยวข้องกับรัฐ ปัญหานี้คือ 'วิธีการตอบสนอง' อาจจำเป็นต้องกำหนดในแง่ของค่าที่ส่งคืนและ 'ค่า' เหล่านี้อาจเป็นสถานะของวัตถุอื่น ๆ วิธีหนึ่งในการทำให้เป็นระเบียบนี้คือการพูดว่าสองสถานะของวัตถุนั้นเหมือนกันถ้าการประมวลผลในอนาคตที่เป็นไปได้ทั้งหมดของระบบบางระบบซึ่งถูกฝังอยู่ส่งผลให้มีการแมปเดียวกันจากอินพุตไปยังระบบนั้น ระบบการปิดล้อมนี้อาจจำเป็นต้องเป็นระบบที่มีในตัวเองสามารถดำเนินการได้โดยไม่ขึ้นกับสภาพแวดล้อมของระบบ ในทางกลับกันใคร ๆ ก็ยอมให้มันมีขนาดเล็กเท่ากับวัตถุที่สงสัย ไม่ว่าในกรณีใดวิธีการทางคณิตศาสตร์จะกำหนดสถานะเป็นคลาสที่เทียบเท่า

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


นี่เป็นหนึ่งในคำตอบที่มีประโยชน์ที่สุดเกี่ยวกับสถานะวัตถุที่ฉันได้พบ มีเอกสาร PDF ออนไลน์และส่วนใหญ่เป็นเอกสาร โดยเฉพาะส่วนที่เกี่ยวกับการเป็นตัวแทน (สถานะภายใน) มันเปิดตาของฉันและทำให้ฉันเกี่ยวกับวัตถุที่แตกต่างกัน
Miroslav Trninic

1

IBM มีอภิธานศัพท์ที่นิยามคำว่า "state" ในคำจำกัดความต่าง ๆ ที่คล้ายกันมาก พวกเขาไม่ได้ระบุว่าพวกเขาเกี่ยวข้องกับการเขียนโปรแกรมเชิงวัตถุ แต่สามารถคาดการณ์และใช้พวกมันในบริบทนั้นได้

Def 3: ระยะในวงจรชีวิตของวัตถุที่ระบุสถานะของวัตถุนั้น

Def 5: เงื่อนไขหรือสถานการณ์ในช่วงชีวิตของวัตถุที่มีคุณสมบัติตรงตามเงื่อนไขดำเนินการกิจกรรมบางอย่างหรือรอเหตุการณ์บางอย่าง

def 8: คุณลักษณะของวัตถุที่ปรากฏในข้อมูลสาธารณะและส่วนตัวของสมาชิกและสามารถแบ่งออกเป็นสองประเภท: รัฐสำคัญและรัฐที่ไม่จำเป็น

Def 9: ในเครื่องสถานะธุรกิจหนึ่งในหลายขั้นตอนแยกกันที่จัดเรียงตามลำดับเพื่อสร้างธุรกรรมทางธุรกิจ

Def 10: สภาวะที่วงจรยังคงอยู่จนกว่าจะใช้พัลส์ที่เหมาะสม

พจนานุกรมวิทยาลัยโลกใหม่ของเว็บสเตอร์กำหนด 'สถานะ' เป็น:

ชุดของสถานการณ์หรือคุณลักษณะที่บ่งบอกถึงบุคคลหรือสิ่งของในเวลาที่กำหนด วิธีหรือรูปแบบของการเป็น: เงื่อนไข

ตัวหารร่วมของสิ่งเหล่านี้คือเวลา การเปลี่ยนแปลงสถานะเมื่อเวลาดำเนินไป นั่นคือลักษณะของตัวแปร หากมีคนถามว่า "สถานะปัจจุบันของคุณคืออะไร" คุณสามารถพูดได้วันนี้ว่าคุณแต่งงานแล้วและพรุ่งนี้จะเป็นโสด

การพิจารณาคำจำกัดความทั้งหมดเหล่านี้เราสามารถคาดการณ์ได้ว่า 'สถานะ' เป็นวิธีการที่วัตถุมีอยู่ ณ เวลาใดเวลาหนึ่งโดยพิจารณาจากค่าของคุณลักษณะของมันคือคุณสมบัติ / ตัวแปร

ฉันไม่คิดว่ามันจะง่ายกว่านี้อีกแล้ว


นี่เป็นเพียงการลงคะแนนเสียงสองสามข้อเนื่องจากมันทำให้ศักยภาพในการคลุมเครือชัดเจนกว่าคำตอบอื่น ๆ
PJTraill

ความคิดเห็นก่อนหน้าของฉันอีกครั้ง: ฉันได้เพิ่มคำตอบของฉันเองเพื่ออธิบายความคลุมเครือมากขึ้นอย่างเห็นได้ชัด
PJTraill

0

ระบบเชิงวัตถุจะรวมเงื่อนไขของรหัสและข้อมูลโดยใช้แนวคิดของ "วัตถุ" วัตถุมีสถานะ (ข้อมูล) และพฤติกรรม (รหัส) ดังนั้นสถานะของวัตถุคืออินสแตนซ์ (ตัวแปร) ภายในวัตถุที่มีข้อมูล


นี่เป็นเรื่องจริง แต่ก็ไม่ได้เพิ่มคำตอบที่มีอยู่มากมาย
David Richerby

1
บางทีมันอาจจะเป็นเรื่องง่ายที่จะเข้าใจสำหรับบางคน :)
Syed MEhran Hussain

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