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

13
วัตถุใน OOP จำเป็นต้องแสดงถึงเอนทิตีหรือไม่?
วัตถุต้องแสดงถึงนิติบุคคลหรือไม่ โดยนิติบุคคลที่ผมหมายถึงสิ่งที่ชอบProduct, Motorเป็นParkingLotฯลฯ ทางกายภาพหรือแม้กระทั่งวัตถุแนวคิดที่ชัดเจนไม่ใช่ทางกายภาพ - บางสิ่งบางอย่างที่กำหนดไว้อย่างดีกับข้อมูลหลักบางอย่างชัดเจนที่อยู่ในวัตถุและบางฟังก์ชั่น / วิธีการ ที่ทำงานอย่างชัดเจนกับข้อมูลหลัก ตัวอย่างเช่นฉันสามารถมีวัตถุของ a Demon, นิติบุคคลในตัวเองหนึ่งในจินตนาการและอาจไม่ใช่ทางกายภาพ แต่ยังคงเป็นนิติบุคคล วัตถุสามารถเป็นเพียงชุดของวิธีการชุดของขั้นตอนทั่วไปที่เชื่อมโยงกับเป้าหมายทั่วไปได้หรือไม่ ตัวอย่าง: สามารถเรียกคลาสได้MotorOperationsหรือMotorActionsในกรณีที่ไม่มีเอนทิตี แต่วิธีการภายในคลาสสามารถทำสิ่งต่าง ๆ ได้ getMotorDataFromHTMLForm () getMotorManufacturers () selectMotorFromUserRequirements ($ ต้องการ) canMotorCanHandleOperatingConditions ($ เงื่อนไข) computePowerConsumptionForMotor ($ ID) โดยทั่วไปคลาสจะถูกกำหนดให้เป็นศูนย์กลางข้อมูลของการดำเนินการกับออบเจ็กต์ + กับข้อมูล ดังนั้นสำหรับ a Motorอาจมีตัวแปรยนต์บางอย่างที่เกี่ยวข้องกับข้อมูลจำเพาะของมอเตอร์และอาจมีการดำเนินการที่รวมข้อมูลเหล่านั้นเพื่อสร้างบางสิ่งบางอย่าง ในกรณีของฉันมันเหมือนกับว่าฉันมีคลาสที่มีการดำเนินงานเกี่ยวกับ data + data ที่ส่งผ่านคลาสไม่มี data centric สำหรับ "Motor Operations" นอกเหนือจากข้อมูลชั่วคราวที่ส่งผ่านคลาส …

8
ฉันจะพิสูจน์หรือหักล้าง“ วัตถุพระเจ้า” ผิดได้อย่างไร?
สรุปปัญหา: เรื่องสั้นสั้นฉันได้รับรหัสฐานและทีมพัฒนาที่ฉันไม่ได้รับอนุญาตให้แทนที่และการใช้ God Objects เป็นปัญหาใหญ่ ก้าวไปข้างหน้าฉันต้องการให้เราทำปัจจัยอีกครั้ง แต่ฉันได้รับการผลักดันกลับจากทีมที่ต้องการทำทุกอย่างกับ God Objects "เพราะมันง่ายกว่า" และนี่หมายความว่าฉันจะไม่ได้รับอนุญาตให้ทำปัจจัยอีกครั้ง ฉันผลักดันการอ้างอิงประสบการณ์การพัฒนาเป็นเวลาหลายปีว่าฉันเป็นเจ้านายคนใหม่ที่ได้รับการว่าจ้างให้รู้จักสิ่งเหล่านี้และอื่น ๆ บริษัท ภายนอกในต่างประเทศทำบัญชีตัวแทนฝ่ายขายและตอนนี้อยู่ในระดับผู้บริหารและการประชุมของฉัน เป็นวันพรุ่งนี้และฉันต้องการที่จะใช้กระสุนทางเทคนิคจำนวนมากเพื่อสนับสนุนการปฏิบัติที่ดีที่สุดเพราะฉันรู้สึกว่ามันจะถูกลงในระยะยาว (และโดยส่วนตัวฉันรู้สึกว่าเป็นสิ่งที่บุคคลที่สามเป็นห่วง) สำหรับ บริษัท ปัญหาของฉันมาจากระดับเทคนิคฉันรู้ดีในระยะยาว แต่ฉันมีปัญหากับระยะสั้นพิเศษและ 6 เดือนในขณะที่บางสิ่งที่ฉัน "รู้" ฉันไม่สามารถพิสูจน์ได้ด้วยการอ้างอิงและแหล่งอ้างอิงภายนอก ของคนคนหนึ่ง (Robert C. Martin หรือลุงลุง Bob) นั่นคือสิ่งที่ฉันถูกขอให้ทำเพราะฉันได้รับการบอกว่ามีข้อมูลจากบุคคลหนึ่งและมีเพียงคนเดียวเท่านั้น (Robert C Martin) ไม่ดีพอที่จะโต้แย้ง . คำถาม: มีแหล่งข้อมูลอะไรบ้างที่ฉันสามารถอ้างอิงได้โดยตรง (ชื่อเรื่อง, ปีที่พิมพ์, หมายเลขหน้า, คำพูด) โดยผู้เชี่ยวชาญที่รู้จักกันดีในสาขาที่กล่าวอย่างชัดเจนว่าการใช้ "พระเจ้า" วัตถุ / คลาส / ระบบนี้ไม่ดี …

6
คุณสามารถใช้การเขียนโปรแกรม "เชิงวัตถุ" โดยไม่มีคำหลักชั้น?
สมมติว่าเราต้องการให้มี "บัญชี" ที่เป็นนามธรรมในธนาคาร นี่คือวิธีหนึ่งโดยใช้functionวัตถุใน Python: def account(): """Return a dispatch dictionary representing a bank account. >>> a = account() >>> a['deposit'](100) 100 >>> a['withdraw'](90) 10 >>> a['withdraw'](90) 'Insufficient funds' >>> a['balance'] 10 """ def withdraw(amount): if amount > dispatch['balance']: return 'Insufficient funds' dispatch['balance'] -= amount return dispatch['balance'] def deposit(amount): dispatch['balance'] …

1
รูปแบบการออกแบบสำหรับการแปลงวัตถุ (java)
ฉันไม่ได้ใช้รูปแบบการออกแบบบ่อยครั้งนอกเหนือจากโรงงานเป็นครั้งคราวและ MVC และฉันต้องการเริ่มใช้พวกเขามากขึ้น ฉันมีกรณีที่เป็นรูปธรรมที่ฉันต้องการความเห็นของคุณเกี่ยวกับการใช้รูปแบบการออกแบบในกรณีนี้ ในแอปพลิเคชันของฉันฉันต้องแปลงวัตถุบ่อยครั้งในสถานการณ์ที่แตกต่างกัน ฉันอาจต้องแปลง PONO ของ Hibernate เป็น DTO เนื่องจากฉันใช้ GWT และ Hibernate POJO นั้นไม่สามารถต่อเนื่องได้และไม่สามารถส่งข้ามสายได้ ในสถานการณ์อื่นฉันอาจต้องแปลงวัตถุ Java เป็น SolrInputDocument เพื่อสร้างดัชนีโดย Solr ฉันต้องการทราบว่าฉันควรใช้รูปแบบการออกแบบสำหรับสิ่งนี้หรือไม่ ดูเหมือนว่า "การแปลงวัตถุ" เป็นงานทั่วไปที่สามารถจัดการในรูปแบบที่มีความยืดหยุ่น / เป็นนามธรรมโดยรูปแบบ แต่ฉันไม่เห็นวิธีจริงๆ หากไม่มีรูปแบบฉันจะสร้างคลาสแยกต่างหากสำหรับการแปลงแต่ละประเภทตัวอย่างเช่น CourseToSolrInputDocument (หลักสูตรเป็นเอนทิตีไฮเบอร์เนตในแอปพลิเคชันของฉัน) หรือ CourseToCourseDTO แต่ละคลาสการแปลงเหล่านี้อาจมีวิธีสแตติกเดียวที่เรียกconvert()ว่าใช้วัตถุต้นทางเป็นอินพุตและส่งคืนวัตถุเอาต์พุต แต่นั่นไม่ใช่รูปแบบจริงๆใช่ไหม? ดังนั้นฉันจึงเริ่มทำบางสิ่งกับยาชื่อสามัญและสร้างคลาสนี้ที่ใช้ส่วนต่อประสานตัวแปลง แต่อย่างใดรู้สึกโง่ tgo สร้างอินเทอร์เฟซทั่วไปและฉันไม่เห็นประโยชน์นอกเหนือจากความสามารถในการแสดงความยินดีกับการใช้ generics public class CourseToSolrInputDocument implements Converter<Course, SolrInputDocument> { @Override …

11
เมื่อใดที่คุณต้องการอ้างอิงสองรายการไปยังวัตถุเดียวกัน
ใน Java โดยเฉพาะ แต่มีแนวโน้มในภาษาอื่นเช่นกัน: เมื่อใดจะมีประโยชน์ที่จะมีสองการอ้างอิงไปยังวัตถุเดียวกัน ตัวอย่าง: Dog a = new Dog(); Dob b = a; มีสถานการณ์ที่สิ่งนี้จะเป็นประโยชน์หรือไม่? ทำไมนี้จะเป็นทางออกที่ต้องการที่จะใช้aเมื่อใดก็ตามที่คุณต้องการที่จะมีปฏิสัมพันธ์กับวัตถุที่แสดงโดยa?

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

3
จำนวนสตริงที่ถูกสร้างในหน่วยความจำเมื่อเชื่อมสตริงใน Java?
ฉันถูกถามเกี่ยวกับสตริงที่ไม่เปลี่ยนรูปแบบใน Java ฉันถูกมอบหมายให้เขียนฟังก์ชั่นที่เชื่อมจำนวน "a" เข้ากับสตริง สิ่งที่ฉันเขียน: public String foo(int n) { String s = ""; for (int i = 0; i < n; i++) { s = s + "a" } return s; } ฉันถูกถามแล้วว่าจะสร้างโปรแกรมจำนวนเท่าใดสตริงโดยสมมติว่าการรวบรวมขยะไม่ได้เกิดขึ้น ความคิดของฉันสำหรับ n = 3 คือ "" "A" "A" "AA" "A" "AAA" "A" โดยพื้นฐานแล้วจะมีการสร้างสตริง 2 สายในการวนซ้ำแต่ละรอบ …
17 java  strings  object 

4
ไม่สามารถแก้ไขความลึกลับของฟังก์ชั่นใน Javascript ได้
ฉันกำลังพยายามที่จะเข้าใจเบื้องหลังม่าน Javascript และชนิดของการติดอยู่ในการทำความเข้าใจการสร้างสร้างขึ้นในวัตถุโดยเฉพาะวัตถุและฟังก์ชั่นและความสัมพันธ์ระหว่างพวกเขา เมื่อฉันอ่านว่าวัตถุในตัวทั้งหมดเช่น Array, String ฯลฯ เป็นส่วนขยาย (สืบทอด) จาก Object ฉันคิดว่า Object เป็นวัตถุแรกที่สร้างขึ้นในวัตถุที่สร้างขึ้นและส่วนที่เหลือของวัตถุสืบทอดมาจากมัน แต่มันก็ไม่สมเหตุสมผลเมื่อคุณรู้ว่า Object สามารถสร้างได้โดยฟังก์ชั่นเท่านั้น แต่ฟังก์ชั่นนั้นก็ไม่ได้มี แต่วัตถุของ Function มันเริ่มที่จะฟังดูลำบากเช่นไก่และไก่ สิ่งที่สับสนอย่างยิ่งคือถ้าฉันconsole.log(Function.prototype)พิมพ์ฟังก์ชั่น แต่เมื่อฉันพิมพ์console.log(Object.prototype)มันจะพิมพ์วัตถุ ทำไมFunction.prototypeฟังก์ชั่นเมื่อมันถูกหมายถึงเป็นวัตถุ? นอกจากนี้ตามเอกสาร Mozilla ทุก javascript functionเป็นส่วนขยายของFunctionวัตถุ แต่เมื่อคุณconsole.log(Function.prototype.constructor)เป็นอีกฟังก์ชั่น ตอนนี้คุณจะใช้บางสิ่งเพื่อสร้างมันเองได้อย่างไร (Mind = blown) สิ่งสุดท้ายFunction.prototypeคือฟังก์ชั่น แต่ฉันสามารถเข้าถึงconstructorฟังก์ชั่นที่ใช้Function.prototype.constructorหมายความว่าFunction.prototypeเป็นฟังก์ชั่นที่ส่งกลับprototypeวัตถุ

4
อะไรคือความแตกต่างระหว่างตัวแปรคลาสและตัวแปรอินสแตนซ์ใน Java? [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันใหม่กับ Java และต้องการเข้าใจความแตกต่างระหว่างตัวแปรคลาสและตัวแปรอินสแตนซ์ ตัวอย่างเช่น: class Bicycle { static int cadence = 0; int speed = 0; int gear = 1; } ตัวแปรอินสแตนซ์และตัวแปรคลาสแตกต่างจากกันอย่างไร ตัวแปรใดที่นี่คือตัวแปรคลาสและตัวแปรอินสแตนซ์ใด สิ่งนี้มีผลต่อขอบเขตอย่างไร
16 java  class  object  instance 

1
ภาษาข้อ จำกัด ของวัตถุ (OCL) สำหรับสแต็กในแพคเกจ java.util
ฉันมีการสอบขึ้นมาและฉันกำลังดูเอกสารที่ผ่านมาเพื่อรับแนวคิดบางอย่างเกี่ยวกับสิ่งที่คาดหวัง ฉันติดอยู่กับสิ่งต่อไปนี้และจะซาบซึ้งจริง ๆ ถ้ามีคนให้คำตอบตัวอย่าง เขียนเงื่อนไขเบื้องต้นและ postconditions ใน OCL สำหรับแต่ละการดำเนินการดังต่อไปนี้ (รวมอยู่ในสแต็คคลาสในแพ็คเกจ java.util): (1) บูลีนว่างเปล่า () - ทดสอบว่าสแต็กนี้ว่างเปล่าหรือไม่ (2) E peek () - ดูที่วัตถุที่ด้านบนของสแต็กนี้โดยไม่ลบออกจากสแต็ก (3) E pop () - ลบวัตถุที่ด้านบนของสแต็กนี้และส่งคืนวัตถุนั้นเป็นค่าของการดำเนินการนี้ (4) E push (รายการ E) - กดรายการลงบนสุดของสแต็กนี้ นี่ E หมายถึงประเภทขององค์ประกอบในสแต็ก ความพยายามของฉันมีดังนี้ Boolean empty() pre: none post: self -> IsEmpty() = true //should …
10 design  languages  object  ocl 

5
กำหนดค่าระดับ / โครงสร้าง: รูปแบบหรือรูปแบบต่อต้าน? ทางเลือก?
หากคุณเพิ่มตัวเลือกการกำหนดค่าใหม่ให้กับโปรแกรมมันมักจะมีเอฟเฟ็กต์ระลอกคลื่นจำนวนมากในแง่ของการรับตัวเลือกไปยังตำแหน่งที่จำเป็นต้องดำเนินการ มีสามวิธีพื้นฐานในการจัดการกับสิ่งนี้ที่ฉันรู้: ส่งการตั้งค่าทั้งหมดไปยังส่วนต่าง ๆ ของโปรแกรมของคุณที่ต้องการการตั้งค่าพื้นฐาน นี่คือวิธีที่ชัดเจนที่สุดและวิธีที่แยกสิ่งต่าง ๆ ออกมามากที่สุด ข้อเสียคือว่านี่เป็นทั้ง verbose และเปราะ ทำให้การตั้งค่าการกำหนดค่าที่ใช้บ่อยที่สุดคือ global / static นี่เป็นวิธีที่ง่ายที่สุด แต่แนะนำให้ดำเนินการในระยะไกลเป็นอุปสรรคต่อการทดสอบและถือว่าการกำหนดค่านั้นเป็นระดับโลกอย่างแท้จริง (ซึ่งคุณต้องการเพียงหนึ่งการกำหนดค่าในเวลาที่กำหนด) สร้างคลาสการกำหนดค่า / โครงสร้างที่มีตัวเลือกการกำหนดค่าทั้งหมดสำหรับโปรแกรมทั้งหมดหรือสำหรับข้อกังวลหลัก ๆ ภายในโปรแกรมจากนั้นส่งผ่านสิ่งนี้อย่างชัดเจน สิ่งนี้ชัดเจนน้อยกว่า (1) แต่ชัดเจนกว่า (2) หากคุณต้องการเปลี่ยนการตั้งค่าสำหรับการเรียกใช้ฟังก์ชั่นเดียวคุณสามารถโคลนวัตถุกำหนดค่าและเปลี่ยนค่านี้ได้ สิ่งนี้มีประโยชน์ทั้งในการทดสอบและในทางปฏิบัติ อย่างไรก็ตามคุณยังคงสามารถส่งข้อมูลจำนวนมากไปยังฟังก์ชั่นที่ไม่ต้องการและเปลี่ยนค่าในคลาส / โครงสร้าง config ยังสามารถทำให้เกิดการกระทำที่ระยะไกล คุณจะพิจารณา (3) รูปแบบหรือรูปแบบการต่อต้านหรือไม่? หากเป็นรูปแบบการต่อต้านคุณจะทำอย่างไรแทน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.