۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

کلاس ها و اشیاء در جاوا

در اینجا چیزی است که شما باید در مورد ساخت کلاس ها، فیلدها، متدها، سازنده ها و اشیاء با هم در برنامه های جاوا خود بدانید.

در اینجا چیزی است که شما باید در مورد ساخت کلاس ها، فیلدها، متدها، سازنده ها و اشیاء با هم در برنامه های جاوا خود بدانید.

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

آنچه در این آموزش جاوا خواهید آموخت

  • نحوه اعلان کلاس
  • استفاده از فیلدها برای توصیف ویژگی ها
  • استفاده از روش‌هایی برای توصیف رفتارها
  • استفاده از سازنده برای مقداردهی اولیه اشیا
  • نحوه کار با اشیاء جاوا

نحوه اعلان کلاس

یک کلاس الگویی برای ساخت اشیا است. شما یک کلاس را با تعیین کلمه کلیدی class و به دنبال آن یک شناسه غیر رزرو شده که آن را نامگذاری می کند، اعلام می کنید. یک جفت نویسه پرانتز باز و بسته منطبق ({ و }) بدنه کلاس را دنبال می‌کنند و آن را محدود می‌کنند. این نحو در زیر ظاهر می شود:

class identifier
{
   // class body
}

طبق قرارداد، حرف اول نام کلاس با حروف بزرگ و کاراکترهای بعدی کوچک می شوند (مثلاً کارمند). اگر نامی از چند کلمه تشکیل شده باشد، حرف اول هر کلمه بزرگ می شود (مانند SavingsAccount). این قرارداد نامگذاری CamelCasing نامیده می‌شود.

مثال زیر کلاسی به نام Book را اعلام می‌کند:

class Book
{
   // class body
}

بدنه یک کلاس با فیلدها، متدها و سازنده ها پر شده است. ترکیب این ویژگی های زبان در کلاس ها به عنوان encapsulation شناخته می شود. این قابلیت به ما امکان می‌دهد در سطح بالاتری از انتزاع (کلاس‌ها و اشیاء) برنامه‌نویسی کنیم تا اینکه به طور جداگانه روی ساختارهای داده و عملکرد تمرکز کنیم.

برنامه مبتنی بر شی چیست؟

یک برنامه مبتنی بر شی برنامه‌ای است که طراحی آن بر اساس اعلام کلاس‌ها، ایجاد اشیاء از آنها و طراحی تعاملات بین اشیا است.

کلاس های کاربردی

یک کلاس را می توان طوری طراحی کرد که ربطی به ساخت شیء نداشته باشد. در عوض، به عنوان یک مکان نگهدار برای فیلدهای کلاس و/یا متدهای کلاس وجود دارد. چنین کلاسی به عنوان کلاس ابزار شناخته می شود. نمونه ای از کلاس ابزار، کلاس Math کتابخانه کلاس استاندارد جاوا است.

تکنیک های پیشرفته: فیلدها و روش ها در جاوا

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

برنامه های کاربردی چند کلاسه و main()

یک برنامه جاوا توسط یک یا چند کلاس پیاده سازی می شود. برنامه‌های کوچک را می‌توان با یک کلاس تطبیق داد، اما برنامه‌های بزرگ‌تر اغلب به چندین کلاس نیاز دارند. در آن صورت یکی از کلاس‌ها به عنوان کلاس اصلی تعیین می‌شود و حاوی روش نقطه ورودی main() است. به عنوان مثال، فهرست ۱ یک برنامه کاربردی را ارائه می دهد که با استفاده از سه کلاس ساخته شده است: A، B، و C. C کلاس اصلی است.

class A
{
}

class B
{
}

class C
{
   public static void main(String[] args)
   {
      System.out.println("Application C entry point");
   }
}

شما می توانید این سه کلاس را در یک فایل منبع واحد، مانند D.java اعلام کنید. سپس این فایل منبع را به صورت زیر کامپایل می کنید:

javac D.java

کامپایلر سه فایل کلاس تولید می کند: A.class، B.class و C.class. این برنامه را از طریق دستور زیر اجرا کنید:

java C

شما باید خروجی زیر را مشاهده کنید:

Application C entry point

به طور متناوب، می توانید هر کلاس را در فایل منبع خودش اعلام کنید. طبق قرارداد، نام فایل منبع با نام کلاس مطابقت دارد. برای مثال می‌توانید A را در A.java اعلام کنید. سپس می توانید این فایل های منبع را جداگانه کامپایل کنید:

javac A.java
javac B.java
javac C.java

برای صرفه جویی در زمان، می توانید هر سه فایل منبع را به طور همزمان با جایگزین کردن نام فایل با ستاره کامپایل کنید (اما پسوند فایل .java را نگه دارید):

javac *.java

در هر صورت، برنامه را از طریق دستور زیر اجرا خواهید کرد:

java C

کلاس های عمومی

جاوا به شما امکان می دهد کلاسی را با دسترسی عمومی از طریق کلمه کلیدی public اعلام کنید. هنگامی که یک کلاس را public اعلام می کنید، باید آن را در فایلی با همین نام ذخیره کنید. برای مثال، کلاس عمومی C {} را در C.java ذخیره می‌کنید. شما می توانید فقط یک کلاس public را در یک فایل منبع اعلام کنید.

هنگام طراحی برنامه های چند کلاسه، یکی از این کلاس ها را به عنوان کلاس اصلی تعیین می کنید و متد main() را در آن قرار می دهید. با این حال، هیچ چیزی مانع از اعلام متدهای main() در کلاس‌های دیگر، شاید برای اهداف آزمایشی، نیست. این تکنیک در فهرست ۲ نشان داده شده است.

class A
{
   public static void main(String[] args)
   {
      System.out.println("Testing class A");
   }
}

class B
{
   public static void main(String[] args)
   {
      System.out.println("Testing class B");
   }
}

class C
{
   public static void main(String[] args)
   {
      System.out.println("Application C entry point");
   }
}

پس از کامپایل کد منبع، دستورات زیر را برای آزمایش کلاس های کمکی A و B و اجرای کلاس برنامه C اجرا کنید. کد>:

java A
java B
java C

سپس خطوط خروجی زیر را مشاهده خواهید کرد، یک خط در هر دستور java:

Testing class A
Testing class B
Application C entry point

مراقب main() باشید

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

استفاده از فیلدها برای توصیف ویژگی ها

یک کلاس یک موجودیت دنیای واقعی را از نظر وضعیت (ویژگی ها) مدل می کند. به عنوان مثال، یک وسیله نقلیه دارای رنگ و یک حساب جاری دارای موجودی است. یک کلاس همچنین می تواند شامل حالت غیر موجودیت باشد. صرف نظر از این، state در متغیرهایی ذخیره می شود که به عنوان fields شناخته می شوند. یک اعلان فیلد دارای نحو زیر است:

[static] type identifier [ = expression ] ;

یک اعلام فیلد به صورت اختیاری با کلمه کلیدی static (برای یک ویژگی غیر نهاد) شروع می شود و با یک نوع ادامه می یابد که پس از آن یک غیر است. شناسه رزرو شده که فیلد را نامگذاری می کند. با تعیین = و به دنبال آن یک عبارت با یک نوع سازگار می توان به طور صریح مقداردهی اولیه کرد. نقطه ویرگول اعلان را خاتمه می دهد.

مثال زیر یک جفت فیلد را در Book اعلام می‌کند:

class Book
{
   String title;
   int pubYear; // publication year
}

اعلان‌های فیلد title و pubYear با اعلان‌های متغیری که در Java 101: Elementary language language ویژگی‌های جاوا ارائه کردم، یکسان هستند. این فیلدها به عنوان فیلدهای نمونه شناخته می‌شوند، زیرا هر شیء دارای کپی مخصوص به خود از آنها است.

فیلدهای title و pubYear مقادیر یک کتاب خاص را ذخیره می‌کنند. با این حال، ممکن است بخواهید حالتی را ذخیره کنید که مستقل از کتاب خاصی باشد. برای مثال، ممکن است بخواهید تعداد کل اشیاء Book ایجاد شده را ثبت کنید. نحوه انجام این کار به این صورت است:

class Book
{
   // ...

   static int count;
}

این مثال یک فیلد عدد صحیح count را اعلام می کند که تعداد اشیاء Book ایجاد شده را ذخیره می کند. اعلان با کلمه کلیدی static شروع می شود تا نشان دهد که فقط یک کپی از این فیلد در حافظه وجود دارد. هر شی Book می تواند به این کپی دسترسی داشته باشد و هیچ شیئی کپی مخصوص به خود را ندارد. به همین دلیل، count به عنوان فیلد کلاس شناخته می‌شود.

آغازسازی

به فیلدهای قبلی مقادیری اختصاص داده نشده است. هنگامی که شما به طور صریح یک فیلد را مقداردهی اولیه نمی کنید، به طور ضمنی با تمام بیت های آن مقداردهی اولیه می شود. شما این مقدار پیش فرض را به عنوان نادرست (برای بولی'\u0000' (برای char)، < code>۰ (برای int0L (برای long۰.0F (برای float۰.۰ (برای double)، یا null (برای نوع مرجع).

با این حال، زمانی که فیلد اعلام می شود، می توان به طور صریح مقداردهی اولیه کرد. برای مثال، می‌توانید static int count = 0; را تعیین کنید (که لازم نیست زیرا count پیش‌فرض ۰ است)، String logfile = "log.txt" ;، static int ID = 1;، یا حتی double sinPIDiv2 = Math.sin(Math.PI / 2);.

اگرچه می‌توانید یک فیلد نمونه را از طریق انتساب مستقیم مقداردهی اولیه کنید، معمولاً این مقداردهی اولیه در سازنده انجام می‌شود که بعداً نشان خواهم داد. در مقابل، یک فیلد کلاس (مخصوصاً یک ثابت کلاس) معمولاً از طریق تخصیص مستقیم یک عبارت به فیلد مقداردهی اولیه می‌شود.

طول عمر و دامنه

یک فیلد نمونه زمانی به وجود می‌آید که شیء آن ایجاد می‌شود و هنگامی که شی زباله جمع‌آوری می‌شود، می‌میرد. یک فیلد کلاس زمانی ایجاد می شود که کلاس بارگیری می شود و زمانی که کلاس تخلیه می شود یا زمانی که برنامه به پایان می رسد از بین می رود. این ویژگی به عنوان طول عمر شناخته می شود.

فیلدهای نمونه و کلاس از اعلان‌هایشان تا انتهای کلاس‌های اعلام‌کننده قابل دسترسی هستند. علاوه بر این، زمانی که سطوح دسترسی مناسب به آنها داده شود، به کدهای خارجی فقط در یک زمینه شی (به عنوان مثال فیلدها) یا زمینه های شی و کلاس (برای فیلدهای کلاس) قابل دسترسی هستند. این ویژگی به عنوان scope شناخته می شود.

در مرحله بعدی: استفاده از روش‌هایی برای توصیف رفتارها

شاید به این مطالب علاقمند باشید