𝗟𝗟𝗗 𝗗𝗲𝘀𝗶𝗴𝗻 𝗣𝗿𝗼𝗰𝗲𝘀𝘀 (𝗙𝗿𝗼𝗺 𝗥𝗲𝗾𝘂𝗶𝗿𝗲𝗺𝗲𝗻𝘁𝘀 𝘁𝗼 𝗖𝗼𝗱𝗲)

Low Level Design کا مطلب فوراً کوڈ لکھنا نہیں ہے۔ یہ ایک منظم عمل پر عمل کرنے کے بارے میں ہے۔

کسی مسئلے کے بیان (problem statement) سے کام کرنے والے کوڈ تک پہنچنے کے لیے ان مراحل پر عمل کریں۔

  1. ضروریات کو سمجھیں (Understand the Requirements) براہِ راست کلاسز (classes) کی طرف نہ جائیں۔ پہلے یہ معلوم کریں کہ سسٹم کو کیا کرنا چاہیے۔
  • اسے کن فیچرز (features) کی ضرورت ہے؟
  • اسے کن اعمال (actions) کی حمایت کرنی چاہیے؟
  • بعد میں کیا تبدیلیاں ہو سکتی ہیں؟
  1. کلاسز تلاش کرنے کے لیے اسم (Nouns) کی شناخت کریں اپنی ضروریات میں اسم (nouns) تلاش کریں۔ اسم آپ کی کلاسز بن جاتے ہیں۔ مثال: ایک Document Editor
  • اسم (Nouns): Document, Text, Image, Storage, Editor.
  • کلاسز (Classes): Document, TextElement, ImageElement, Storage, DocumentEditor.

مثال: ایک Parking Lot

  • اسم (Nouns): ParkingLot, Floor, Slot, Vehicle, Ticket.
  • کلاسز (Classes): ParkingLot, Floor, Slot, Vehicle, Ticket.
  1. وراثت (Inheritance) کے لیے IS-A کا استعمال کریں خود سے پوچھیں: "کیا چائلڈ (child) پیرنٹ (parent) کی ایک قسم ہے؟"
  • TextElement ایک DocumentElement ہے۔ (TextElement IS-A DocumentElement)
  • Car ایک Vehicle ہے۔ (Car IS-A Vehicle)
  • Dog ایک Animal ہے۔ (Dog IS-A Animal) اگر جواب ہاں ہے، تو inheritance کا استعمال کریں۔
  1. کمپوزیشن (Composition) کے لیے HAS-A کا استعمال کریں خود سے پوچھیں: "کیا ایک آبجیکٹ (object) میں دوسرا شامل ہے؟"
  • ایک Document میں elements کا مجموعہ ہوتا ہے۔ (A Document HAS-A collection of elements)
  • ایک ParkingLot میں فرشوں (floors) کا ایک سیٹ ہوتا ہے۔ (A ParkingLot HAS-A set of floors)
  • ایک Car میں انجن ہوتا ہے۔ (A Car HAS-A engine) ان آبجیکٹس کو جوڑنے کے لیے composition کا استعمال کریں۔
  1. میتھڈز (Methods) تلاش کرنے کے لیے فعل (Verbs) کی شناخت کریں ضروریات میں اعمال (actions) تلاش کریں۔ فعل آپ کے میتھڈز بن جاتے ہیں۔
  • Add text بن جاتا ہے addText()۔
  • Save document بن جاتا ہے save()۔
  • Park vehicle بن جاتا ہے parkVehicle()۔
  1. انٹرفیس (Interfaces) کے ذریعے تبدیلی کی منصوبہ بندی کریں مستقبل کی اپ ڈیٹس کے بارے میں سوچیں۔ اگر آپ کوئی دستاویز محفوظ کرتے ہیں، تو آپ فائل (File)، ڈیٹا بیس (Database)، یا کلاؤڈ (Cloud) کا استعمال کر سکتے ہیں۔
  • Persistence نامی ایک انٹرفیس بنائیں۔
  • FileStorage یا DBStorage جیسی امپلیمنٹیشنز (implementations) بنائیں۔ یہ آپ کو اپنے موجودہ کوڈ کو تبدیل کیے بغیر بعد میں CloudStorage شامل کرنے کی اجازت دیتا ہے۔
  1. UML بنائیں اور کوڈ لکھیں جب آپ کے پاس کلاسز، وراثت (inheritance)، کمپوزیشن (composition) اور میتھڈز آ جائیں، تو ایک UML ڈایاگرام بنائیں۔ یہ آپ کے بلیو پرنٹ (blueprint) کے طور پر کام کرتا ہے۔ آخر میں، اس بلیو پرنٹ کو صاف ستھرے کوڈ (clean code) میں تبدیل کریں۔

خلاصہ (Summary Flow):

  • ضروریات (Requirements)
  • اسم سے کلاسز (Nouns to Classes)
  • IS-A سے وراثت (IS-A to Inheritance)
  • HAS-A سے کمپوزیشن (HAS-A to Composition)
  • فعل سے میتھڈز (Verbs to Methods)
  • تغیرات سے انٹرفیس (Variations to Interfaces)
  • UML ڈایاگرام
  • حتمی کوڈ (Final Code)

Source: https://dev.to/roshan_singh_dd54d52bbaa7/lld-design-process-from-requirements-to-code-594m