OOP in Java Frist Section | شی گرایی در جاوا قسمت اول
توضیحات جلسه
جزوه و مستندات
مفاهیم کلیدی
OOP (Object-Oriented Programming)
OOP یا برنامهنویسی شیگرا، رویکردی در برنامهنویسی است که فضای حل مسئله را به دنیای واقعی نزدیکتر میکند و بر پایه اشیا (Objects) استوار است.
Class
کلاس (Class) یک الگو (Template) یا نقشه (Blueprint) برای ساخت اشیا است که ویژگیها و رفتارهای مشترک آنها را تعریف میکند.
Object
شیء (Object) یک نمونه واقعی (Instance) از کلاس است که در حافظه ساخته میشود و دادهها، یعنی وضعیت، و متدها، یعنی رفتارها، را در بر میگیرد.
Attribute (Field)
ویژگی یا فیلد (Field) متغیرهایی هستند که داخل کلاس تعریف میشوند و وضعیت یا خصوصیات یک Object را نگه میدارند.
Method
متد (Method) بلوکی از کد است که مسئول انجام عملیات یا رفتار مشخصی در یک کلاس است.
Constructor
سازنده (Constructor) یک متد ویژه است که نام آن با نام کلاس یکسان است و هنگام ساخته شدن Object، وظیفه مقداردهی اولیه ویژگیهای آن را بر عهده دارد.
this
کلمه کلیدی this به Object فعلی اشاره میکند و برای رفع ابهام میان فیلدهای کلاس و پارامترهای ورودی متد استفاده میشود.
Method Overloading
قابلیت Method Overloading به ما اجازه میدهد چند متد با نام یکسان، اما با پارامترهای متفاوت از نظر تعداد یا نوع داده، در یک کلاس تعریف کنیم.
نکات مهم مصاحبهای
چهار اصل اصلی شیگرایی چیست؟
چهار اصل اصلی برنامهنویسی شیگرا عبارتاند از:
Inheritance یا ارثبری، Encapsulation یا کپسولهسازی، Abstraction یا انتزاع و Polymorphism یا چندریختی.
تفاوت Class و Object در چیست؟
کلاس (Class) یک مفهوم انتزاعی و نقشه ساخت است؛ در حالی که شیء (Object) نمونه واقعی ساختهشده از کلاس است که در حافظه قرار میگیرد.
ویژگیهای اصلی یک Constructor چیست؟
نام Constructor باید دقیقاً با نام کلاس یکسان باشد، هیچ نوع بازگشتی—even void—ندارد و هنگام استفاده از کلمه کلیدی new اجرا میشود.
اگر برای کلاسی Constructor تعریف نکنیم چه اتفاقی میافتد؟
اگر هیچ Constructorای در کلاس تعریف نکنیم، جاوا بهصورت خودکار یک سازنده پیشفرض (Default Constructor) بدون پارامتر برای آن کلاس ایجاد میکند.
مفهوم Shadowing چیست و چگونه حل میشود؟
Shadowing زمانی رخ میدهد که نام پارامتر یک متد با نام یکی از فیلدهای کلاس یکسان باشد. در این حالت، متغیر محلی روی فیلد کلاس سایه میاندازد.
برای رفع این ابهام و اشاره به فیلد کلاس، از کلمه کلیدی this استفاده میکنیم.
مثال کاربردی: مدیریت حساب بانکی
در این سناریو، کلاسی با نام BankAccount طراحی میشود. این کلاس دارای ویژگیهایی مانند نام صاحب حساب (firstName و lastName) و موجودی حساب (balance) است.
- مقداردهی اولیه:
با استفاده از یک Constructor، هنگام باز کردن حساب، نام فرد دریافت میشود و مقدار موجودی بهصورت پیشفرض برابر با 0 قرار میگیرد.
- رفتارها (متدها):
۱. متد deposit برای واریز وجه استفاده میشود و مبلغ ورودی را به موجودی اضافه میکند.
۲. متد withdraw برای برداشت وجه استفاده میشود. این متد ابتدا بررسی میکند که مبلغ درخواستی از موجودی بیشتر نباشد؛ در غیر این صورت، پیام خطا نمایش میدهد. اگر موجودی کافی باشد، مبلغ از موجودی کسر میشود.
بیشتر بدانید
نکته IDE
در محیط IntelliJ، برای ساخت سریع متد اصلی برنامه، کافی است عبارت main یا psvm را تایپ کرده و کلید Enter را فشار دهید.
نکته کدنویسی
طبق قراردادهای جاوا، نام کلاسها باید با حرف بزرگ شروع شود و از الگوی PascalCase پیروی کند.
نکته IDE
برای مشاهده پارامترهای ورودی یک متد یا Constructor هنگام فراخوانی، از کلید ترکیبی Ctrl + P استفاده کنید.
