جلسه شماره 23رایگان

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

03:07:45

توضیحات جلسه

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

جزوه و مستندات

مفاهیم کلیدی

  • Validation (اعتبارسنجی)

Validation به بررسی صحت داده‌های ورودی، پیش از ذخیره‌سازی آن‌ها در دیتابیس، گفته می‌شود.

برای مثال، می‌توان طول کد ملی، نبودن عدد در نام یا میزان پیچیدگی رمز عبور را بررسی کرد.

  • DTO (Data Transfer Object)

DTO شیئی است که برای انتقال داده میان لایه‌های برنامه استفاده می‌شود.

این الگو به‌ویژه زمانی کاربرد دارد که لازم باشد ترکیبی از فیلدهای چند کلاس مختلف، مانند نام درس و نمره، با یکدیگر منتقل شوند.

  • Middle Table (جدول واسط)

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

برای مثال، در رابطه میان دانشجو و درس، جدول واسط مشخص می‌کند هر دانشجو چه درس‌هایی را اخذ کرده است.

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

  • چرا باید لایه Service و Repository را از هم جدا کرد؟

این جداسازی برای رعایت اصل تفکیک مسئولیت‌ها (Separation of Concerns) انجام می‌شود.

لایه Service فقط مسئول منطق برنامه است، درحالی‌که لایه Repository فقط نحوه ذخیره‌سازی و بازیابی داده‌ها را مدیریت می‌کند. این تفکیک، تست‌نویسی و نگهداری کد را ساده‌تر می‌کند.

  • تفاوت اعتبارسنجی کم‌هزینه و پرهزینه چیست؟

در فرایند Validation ابتدا باید بررسی‌های ساده و کم‌هزینه، مانند کنترل طول رشته با length()، انجام شوند.

سپس می‌توان سراغ بررسی‌های پرهزینه‌تر، مانند پیمایش تک‌تک کاراکترها با حلقه for، رفت تا عملکرد (Performance) برنامه حفظ شود.

  • چرا در پروژه از فیلدهای static برای آرایه‌های داده استفاده می‌کنیم؟

اگر آرایه به‌صورت فیلد نمونه (Instance Field) تعریف شود، با هر بار ایجاد یک نمونه جدید با new از لایه Service یا Repository، یک دیتابیس خالی جدید ایجاد خواهد شد.

اما استفاده از static باعث می‌شود داده‌ها در سطح کلاس نگهداری شوند و میان همه نمونه‌ها مشترک باشند.

بیشتر بدانید

  • Clean Code:

متدها را تا حد امکان کوچک و تک‌منظوره بنویسید.

این کار باعث می‌شود کد خواناتر شود و قابلیت استفاده مجدد (Reusability) افزایش یابد.

  • Naming Convention:

برای متدهایی که خروجی boolean دارند، بهتر است نام متد با واژه‌هایی مانند is یا has شروع شود؛ مانند isValidName یا isAccepted.