کار با اشیاء در جاوا - جلسه 1
1397/02/11 17:01 , بهزاد ناظمی

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

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

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

امروزه شما به طور گسترده ای با اشیا کار می کنید، همانطور که این وظایف اساسی را در نظر می گیرید :

  • ساخت اشیاء
  • تست و تغییر کلاس ها و متغییرهای وابسته
  • فراخوانی روش اشیاء
  • تبدیل یک شیء از کلاسی به کلاس دیگر

ساخت اشیاء جدید

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

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

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

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

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

استفاده از شیء جدید

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

نام کلاس داخل پرانتز آمده است، مانند سه مثال زیر:

String name = new String("Hal Jordan");
URL address = new URL("http://www.java21days.com");
MarsRobot robbie = new MarsRobot();

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

در اینجا دو شیء با شناسه یا شناسه ها ایجاد می شوند:

Random seed = new Random(606843071);
Point pt = new Point(0, 0);

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

اولین پروژه، نشان دادن ایجاد انواع مختلف اشیاء با اعداد مختلف و انواع شناسه  است. کلاس نشانه گذاری رشته (StringTokenizer) در بسته java.util یک رشته را به یک سری رشته های کوتاه تر به نام نشانه (tokens) تقسیم می کند.

شما یک رشته را با  استفاده از کاراکتر یا تعدادی از کاراکترها به عنوان یک جداکننده به نشانه ها تقسیم می کنید. بعنوان مثال متن  “02/20/67” باید به این 3 نشانه تبدیل شود - “02”, “20”, “67” – که از کاراکتر  / به عنوان یک جداکننده استفاده می شود.

اولین پروژه مورد بررسی یک برنامه جاوا است که برای تجزیه و تحلیل اطلاعات قیمت سهام از نشانه های رشته ای استفاده می کند. در NetBeans ، یک فایل جاوا جدید برای کلاس TokenTester در بسته com.java21days ایجاد کنید، سپس کد را در فهرست 3.1 به عنوان کد منبع آن وارد کنید. این برنامه ،  نشانه گذاری رشته ای شیء را با استفاده از  دو روش مختلف ایجاد می کند و سپس هر کدام از اشیاء حاوی کد را نمایش می دهد.

فهرست 3.1 متن کامل TokenTester.java

1: package com.java21days;
 2:
 3: import java.util.StringTokenizer;
 4:
 5: class TokenTester {
 6:
 7:     public static void main(String[] arguments) {
 8:         StringTokenizer st1, st2;
 9:
10:         String quote1 = "GOOG 530.80 -9.98";
11:         st1 = new StringTokenizer(quote1);
12:         System.out.println("Token 1: " + st1.nextToken());
13:         System.out.println("Token 2: " + st1.nextToken());
14:         System.out.println("Token 3: " + st1.nextToken());
15:
16:         String quote2 = "RHT@75.00@0.22";
17:         st2 = new StringTokenizer(quote2, "@");
18:         System.out.println("\nToken 1: " + st2.nextToken());
19:         System.out.println("Token 2: " + st2.nextToken());
20:         System.out.println("Token 3: " + st2.nextToken());
21:     }
22: }

این فایل را با انتخاب File، Save یا کلیک روی Save All در نوار ابزار NetBeans ذخیره کنید. برای اجرای برنامه ابتدا گزینهRun، سپس گزینه Run File را برای مشاهده خروجی نمایش داده شده در شکل 3.1 اجرا کنید.

کار با اشیاء در جاوا

شکل 3.1   یک نشانه گذار شیء را نشان می دهد.

دو اشیاء مختلف نشانه گذاری شده با استفاده از شناسه های مختلف توسط سازنده ایجاد می شوند. اولین شیء با استفاده از رشته نشانه گذاری شده جدید () با یک شناسه ایجاد می شود. یک شی رشته ای به نام quote1 (خط 11).

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

خطوط 12 تا 14 مقادیر این سه نشانه را نشان می دهد : "GOOG"، "530.80" و "- 9.98 ". دومین شیء نشانه گذاری رشته ای در این مثال دارای دو شناسه است که در خط 16 ساخته شده است. یک شیء رشته ای به نام quote2 و یک کاراکتر @.

این شناسه دوم نشان می دهد که علامت @ باید به عنوان جداکننده کننده میان نشانه ها استفاده شود. شیء نشانه گذاری شده رشته ای  که در خط 17 ایجاد شده است شامل سه نشانه: RHT"" ، ""75.00 و "0.22" است.

چگونه اشیاء ساخته می شوند ؟

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

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

در پروژه TokenTester، تعاریف چند سازنده ای، نشانه گذاری رشته ای ، کلاس را برای انجام کارهای مختلف با استفاده های متفاوت از عملگر جدید فعال می کند. هنگامی که کلاس های خود را ایجاد می کنید، می توانید هر تعداد سازنده که برای پیاده سازی رفتار کلاس نیاز دارید را تعریف نمایید.

دو سازنده در یک کلاس نمی توانند شماره و نوع شناسه یکسان داشته باشند، زیرا این تنها راه برای متمایز کردن سازنده ها است.

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

 یادداشتی در مدیریت حافظه

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

از آنجا که مدیریت حافظه جاوا به صورت خودکار است، لازم نیست که حافظه مورد استفاده را هنگامی که از آن استفاده نمی کنید حذف کنید. در بیشتر موارد، هنگامی که کار شما با یک شیء ایجاد شده تمام شد، جاوا قابلیت تشخیص عدم نیاز شیء به آن را دارد . (به عبارت دیگر، شیء به هر متغیری که در حال استفاده است یا در هر آرایه ذخیره نمی شود، اختصاص داده نخواهد شد.)

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

این ویژگی یکی از مهمترین مزایای ذکر شده زبان جاوا در برابر زبان قدیمی C++ است.

 

برگرفته از : informit.com

از آخرین دوره های آموزشی و تخفیف ها مطلع شوید

با تکمیل فرم زیر ، از اخبار و اطلاعات به روز برنامه نویسی و تکنولوژی عقب نمانید

آخرین مطالب

آموزش جامع SQL Server (جلسه ۱۲)
آموزش جامع SQL Server (جلسه ۱۲)

دستور UPDATE در SQL Server برای تغییر داده‌های موجود در یک جدول، از دستور UPDATE به شکل زیر استفاده ...

آموزش جامع SQL Server (جلسه ۱۵)
آموزش جامع SQL Server (جلسه ۱۵)

دستور DROP TABLE در SQL Server گاهی، لازم است یک جدول که دیگر استفاده‌ای ندارد را حذف کنید. برای ...

آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)
آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)

بخش اول از آخرین مبحث دوره جامع آموزش SQL Server در جلسه قبلی بررسی شد. این مبحث که ...

آخرین دیدگاه ها

دیدگاه خود را درباره این پست بنویسید

فرم ارسال نظرات