Farzad Afi Logo

FarzadAfi

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

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

📖توضیحات درس

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

📄جزوه

مفاهیم کلیدی

Record یک ساختار داده‌ای در جاوا (از نسخه ۱۴ به بعد) که برای ایجاد کلاس‌های حامل داده (Data Classes) استفاده می‌شود و به طور خودکار متدهایی مانند toString و equals را تولید می‌کند.

DTO (Data Transfer Object) الگویی برای انتقال داده بین لایه‌ها؛ به گونه‌ای که فقط اطلاعات مورد نیاز (و نه تمام جزئیات موجودیت) به لایه‌های بالاتر یا کاربر نمایش داده شود.

Shift to Left فرآیندی در کار با آرایه‌ها که پس از حذف یک المان، برای جلوگیری از ایجاد فضای خالی (null) در وسط آرایه، سایر المان‌ها یک واحد به سمت چپ منتقل می‌شوند.

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

چرا از معماری چندلایه (Layered Architecture) استفاده می‌کنیم؟ برای رعایت اصل جداسازی وظایف (Separation of Concerns)؛ تا تغییر در نحوه ذخیره‌سازی داده‌ها (Repository) تأثیری بر منطق برنامه (Service) نداشته باشد.

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

هدف از استفاده از Record به جای Class در لایه DTO چیست؟ کاهش کدنویسی تکراری (Boilerplate code) و ایجاد اشیای غیرقابل تغییر (Immutable) که امنیت داده‌ها را در هنگام جابه‌جایی بین لایه‌ها تضمین می‌کند.

بیشتر بدانید

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