คำถามติดแท็ก entry-point

8
ทำไมวิธีหลักแบบคงที่ใน Java และ C # มากกว่าตัวสร้าง?
ฉันกำลังมองหาคำตอบที่ชัดเจนจากแหล่งที่มาหลักหรือรองสำหรับเหตุผลที่ (โดยเฉพาะ) Java และ C # ตัดสินใจที่จะมีวิธีการแบบคงที่เป็นจุดเริ่มต้นของพวกเขาแทนที่จะเป็นตัวแทนอินสแตนซ์ของโปรแกรมประยุกต์โดยอินสแตนซ์ของApplicationชั้นเรียน เป็นตัวสร้างที่เหมาะสม) ความเป็นมาและรายละเอียดของการวิจัยก่อนหน้าของฉัน สิ่งนี้เคยถูกถามมาก่อน แต่น่าเสียดายที่คำตอบที่มีอยู่เป็นเพียงการขอถาม โดยเฉพาะอย่างยิ่งคำตอบต่อไปนี้จะไม่ทำให้ฉันพึงพอใจเพราะฉันคิดว่าไม่ถูกต้อง: จะมีความกำกวมหากคอนสตรัคเตอร์มากเกินไป - ในความเป็นจริง C # (เช่นเดียวกับ C และ C ++) ช่วยให้ลายเซ็นที่แตกต่างกันเพื่อMainให้มีความกำกวมที่อาจเกิดขึ้นเหมือนกันและมีการจัดการ staticวิธีหมายถึงวัตถุที่ไม่สามารถ instantiated ก่อนเพื่อให้คำสั่งของ initialisation เป็นที่ชัดเจน - นี่เป็นเพียงความผิดจริงวัตถุบางอย่างจะถูกยกตัวอย่างก่อน (เช่นในตัวสร้างแบบคงที่) ดังนั้นจึงสามารถเรียกใช้โดยรันไทม์โดยไม่ต้องสร้างอินสแตนซ์ของวัตถุหลัก - นี่ไม่ใช่คำตอบเลย เพื่อให้เหตุผลเพิ่มเติมว่าทำไมฉันจึงคิดว่านี่เป็นคำถามที่ถูกต้องและน่าสนใจ: กรอบหลายคนไม่ใช้ชั้นเรียนเพื่อเป็นตัวแทนของการใช้งานและการก่อสร้างเป็นจุดเข้า ยกตัวอย่างเช่นกรอบใบสมัคร VB.NETใช้โต้ตอบเฉพาะหลัก (และตัวสร้างของมัน) เป็นจุดเริ่มต้นที่1 ทั้ง Java และ C # ในทางเทคนิคต้องการวิธีการหลัก ดี C # ต้องการคอมไพล์ …
54 java  c#  history  entry-point 

2
ข้อกำหนดการตั้งชื่อสำหรับคลาส Java ที่มีเมธอด main static หรือไม่?
หลังจากอ่านคำตอบของ gnatไปที่ทำไมวิธีหลักแบบคงที่ใน Java และ C # แทนที่จะเป็นตัวสร้าง? ฉันใช้คำตอบของเขาเพื่อหมายความว่าจุดประสงค์ของคลาส Java ที่มีเมธอด main static คือเพื่อdefine a program entry pointและไม่ได้หมายความว่าเป็นโปรแกรมเอง อาจมีวิธีที่ดีกว่าในการทำเช่นนี้ แต่ฉันมักจะมีชั้นเรียนที่มีวิธีหลักแบบคงที่เพื่อทำสิ่งที่ง่ายเช่นนี้ public class MenuLauncher { public static void main(String[] args) { Menu menu = new Menu(); menu.run(); } } โค้ดด้านบนจะเป็นแนวปฏิบัติที่ดีที่สุดสำหรับ OOP หรือไม่หากคลาสที่มีสแตติกหลักไม่ได้ทำอะไรมากไปกว่าการเริ่มต้นหรือเริ่มโปรแกรมตรรกะภายในวัตถุที่ไม่คงที่แยกต่างหาก หลังจากทั้งหมดหลักเป็นแบบคงที่ดังนั้นชั้น MenuLauncher จะไม่ถูก จำกัด มาก? เนื่องจาก main เป็นจุดเริ่มต้นฉันไม่เห็นจุดประสงค์อื่นใดสำหรับชั้นเรียนอื่นที่ไม่ใช่จุดเข้า มีแบบแผนการตั้งชื่อ Java …

3
แบบแผนของการตั้งชื่ออาร์กิวเมนต์บรรทัดคำสั่งเป็น 'argv' มาจากไหน
ดูเหมือนว่าPython , PHPและRubyทั้งหมดใช้ชื่อ "argv" เพื่ออ้างถึงรายการอาร์กิวเมนต์บรรทัดคำสั่ง ชื่อ "argv" มาจากไหน ทำไมไม่เหมือน "args" ล่ะ? ฉันเดาว่ามันมาจาก C ซึ่ง v จะยืนสำหรับ "เวกเตอร์" Wikipedia มีเชิงอรรถที่ระบุว่า: คำเวกเตอร์ในชื่อของตัวแปรนี้ใช้ในความหมายดั้งเดิมเพื่ออ้างถึงสตริง อย่างไรก็ตามไม่มีแหล่งข้อมูลสำหรับข้อมูลนี้ จริง ๆ ฉันอยากรู้ว่ามันมีรากที่ติดตามแม้กระทั่งไกลออกไป C ใช้เพราะบางสิ่งก่อนหน้านั้นใช้หรือไม่

4
อะไรคือความรับผิดชอบหลักในการเขียนโปรแกรมเชิงวัตถุ?
ฉันใหม่สำหรับการเขียนโปรแกรมเชิงวัตถุและฉันไม่เข้าใจว่าจุดประสงค์หลักของอะไร ใช่ฉันอ่านว่ามันเป็น "จุดเริ่มต้น" ของโปรแกรม แต่สิ่งที่ฉันไม่เข้าใจคือสิ่งที่ควรจะเป็นในหลัก และความรับผิดชอบของมันคืออะไร? อาจเกิดขึ้นว่าสิ่งที่เขียนในหลักอาจถูกห่อหุ้มในวัตถุอื่น แต่คุณควรใช้วิธีการนี้มากแค่ไหน? นี่คือหลักแรกของฉันที่ฉันเขียนใน Java มันง่ายมาก แต่อาจทำให้คุณเข้าใจข้อสงสัยของฉันดีขึ้น ฉันมีสัตว์ที่เป็นนามธรรมซึ่งขยายโดย "Cat" และ "Dog" ฉันใช้หลักในการสร้างวัตถุบางอย่างและยังเป็น "ส่วนต่อประสาน" กับผู้ใช้ด้วยอย่างที่คุณเห็นฉันใช้คำสั่งแบบมีเงื่อนไขเพื่อ "ถามผู้ใช้" สิ่งที่เขาต้องการจะทำ คำถามของฉันเกิดขึ้นจากความจริงที่ว่าอินเทอร์เฟซสามารถถูกห่อหุ้มในวัตถุอื่นและไม่ให้ความรับผิดชอบหลัก public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("What type of animal do you want to create? \n dog cat"); String type = input.nextLine(); if …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.