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

Simple Library Management with OOP | پروژه کتابخانه با شی گرایی

01:50:34

توضیحات جلسه

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

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

مفاهیم کلیدی

Record

Record یک ساختار داده‌ای در جاوا، از نسخه 14 به بعد، است که برای ایجاد کلاس‌های حامل داده (Data Classes) استفاده می‌شود.

این ساختار به‌صورت خودکار متدهایی مانند toString()، equals() و hashCode() را تولید می‌کند.

DTO (Data Transfer Object)

DTO الگویی برای انتقال داده میان لایه‌های برنامه است.

با استفاده از DTO، فقط اطلاعات موردنیاز به لایه‌های بالاتر یا کاربر منتقل می‌شود و تمام جزئیات موجودیت اصلی نمایش داده نخواهد شد.

Shift to Left

Shift to Left فرایندی در کار با آرایه‌ها است که پس از حذف یک عنصر انجام می‌شود.

در این فرایند، برای جلوگیری از ایجاد فضای خالی با مقدار null در میانه آرایه، عناصر بعدی یک خانه به سمت چپ منتقل می‌شوند.

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

چرا از معماری چندلایه (Layered Architecture) استفاده می‌کنیم؟

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

با این ساختار، تغییر در نحوه ذخیره‌سازی داده‌ها در لایه Repository، تأثیری بر منطق برنامه در لایه Service نخواهد داشت.

تفاوت رابطه One-to-Many و Many-to-Many در این پروژه چیست؟

اگر از هر کتاب فقط یک جلد وجود داشت، رابطه از نوع یک‌به‌چند (One-to-Many) بود.

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

برای مدیریت این رابطه، از یک کلاس میانی با نام Loan استفاده می‌شود.

هدف از استفاده از Record به جای Class در لایه DTO چیست؟

استفاده از Record باعث کاهش کدنویسی تکراری (Boilerplate Code) می‌شود.

همچنین، اشیای ایجادشده با Record به‌صورت غیرقابل‌تغییر (Immutable) هستند و از امنیت داده‌ها هنگام جابه‌جایی میان لایه‌ها محافظت می‌کنند.

بیشتر بدانید

نکته فنی

استفاده از کلاس LocalDate و متد now()، یکی از بهترین روش‌ها برای ثبت تاریخ تراکنش‌ها در جاوا است.

برای محاسبه اختلاف زمانی میان دو تاریخ نیز می‌توان از متد ChronoUnit.DAYS.between() استفاده کرد.