Farzad Afi Logo

FarzadAfi

آموزش تخصصی برنامه نویسی

Simple University Project with OOP | پروژه دانشگاه با شی گرایی

📖توضیحات درس

🎥 این ویدیو قسمت بیست و سوم از بوت‌کمپ رایگان جاواست. 🎓 پروژه دانشگاه با استفاده از شی‌گرایی در جاوا 📝 در این قسمت، تمام مفاهیم شی‌گرایی که تا الان یاد گرفتیم رو در قالب یک پروژه واقعی پیاده‌سازی می‌کنیم: طراحی و پیاده‌سازی سیستم ساده مدیریت دانشگاه. 🏗️ در این پروژه قدم‌به‌قدم جلو می‌ریم؛ از تعریف کلاس‌ها و روابط بین اون‌ها (دانشجو، استاد، درس و...) تا مدیریت داده‌ها، ارتباط بین اشیاء، و پیاده‌سازی رفتارهای واقعی سیستم. ✅ این پروژه کمک می‌کنه تا OOP رو نه فقط تئوری، بلکه کاملاً عملی و پروژه‌محور درک کنی و برای پروژه‌های بعدی آماده‌تر باشی. 💻 سورس‌کد این قسمت در گیت‌هاب: 🔗 github.com/farzadafi/ProgrammingByFarzadAfi/tree/master/01_oop_project/university 👥 گروه پرسش و پاسخ تلگرام: @programmingByFarzadAfi 💬 گروه پرسش و پاسخ بله: @programming_by_farzadafi ❓ هر سوالی داشتی، توی گروه بپرس؛ خودم یا مربی‌های گروه پاسخ می‌دیم 🚀 بوت‌کمپ رایگان جاوا – آموزش تمرین‌محور برای یادگیری عمیق و ورود به بازار کار.
03:07:45🎯رایگان

📄جزوه

مفاهیم کلیدی

  • Validation (اعتبار‌سنجی)
    بررسی صحت داده‌های ورودی (مانند طول کد ملی، وجود اعداد در نام یا پیچیدگی رمز عبور) قبل از ذخیره‌سازی در دیتابیس.

  • DTO (Data Transfer Object)
    آبجکت‌هایی که برای انتقال داده بین لایه‌ها استفاده می‌شوند؛ به خصوص زمانی که نیاز داریم ترکیبی از فیلدهای چند کلاس مختلف (مثلاً نام درس و نمره) را با هم منتقل کنیم.

  • Middle Table (جدول واسط)
    کلاسی که برای مدیریت روابط چند-به-چند (Many-to-Many) بین موجودیت‌ها (مانند رابطه دانشجو و درس) استفاده می‌شود تا مشخص کند هر دانشجو چه درس‌هایی را اخذ کرده است.

نکات مهم مصاحبه‌ای

  • چرا باید لایه Service و Repository را از هم جدا کرد؟
    برای رعایت اصل تفکیک مسئولیت‌ها (Separation of Concerns)؛ لایه سرویس فقط درگیر منطق برنامه است و لایه ریپازیتوری فقط نگران نحوه ذخیره و بازیابی داده‌هاست، که این کار تست‌نویسی و نگهداری کد را آسان‌تر می‌کند.

  • تفاوت اعتبار‌سنجی کم‌هزینه و پرهزینه چیست؟
    در اعتبار‌سنجی‌ها ابتدا باید موارد ساده و کم‌هزینه مثل چک کردن طول رشته (length) را انجام داد و سپس سراغ موارد پرهزینه مانند پیمایش تک‌تک کاراکترها با حلقه for رفت تا پرفورمنس برنامه حفظ شود.

  • چرا در پروژه از فیلدهای static برای آرایه‌های داده استفاده می‌کنیم؟
    چون اگر آرایه به صورت instance تعریف شود، با هر بار new کردن لایه سرویس یا ریپازیتوری، یک دیتابیس خالی جدید ایجاد می‌شود؛ اما static باعث می‌شود داده‌ها در سطح کلاس و بین تمام نمونه‌ها مشترک باشند.

بیشتر بدانید

  • Clean Code: متدها را تا حد امکان کوچک و تک‌منظوره بنویسید. این کار باعث می‌شود کد شما خواناتر شده و قابلیت استفاده مجدد (Reusability) پیدا کند.
  • Naming Convention: برای متدهایی که خروجی boolean دارند، بهتر است نام را با کلماتی مثل is یا has شروع کنید (مانند isValidName یا isAccepted) .