نکات کلیدی
۱. بنیان جاوا: کلاسها، اشیاء و ماشین مجازی جاوا (JVM)
کتاب «Head First Java» نوشته کتی و برت، صفحههای چاپی را به نزدیکترین شکل ممکن به یک رابط گرافیکی تبدیل میکند.
کلاسها و اشیاء. جاوا اساساً یک زبان شیءگرا است؛ یعنی همه چیز حول کلاسها و اشیاء میچرخد. کلاس بهعنوان یک الگو عمل میکند که ساختار و رفتار اشیاء را تعریف میکند. اشیاء نمونههایی از یک کلاس هستند که هرکدام دارای وضعیت (داده) منحصر به فرد و قابلیت انجام عملیات (متدها) میباشند.
ماشین مجازی جاوا. JVM موتور اجرای بایتکد جاوا است؛ بایتکدی که از کد منبع جاوا کامپایل شده و مستقل از پلتفرم است. این ویژگی امکان اجرای برنامههای جاوا را روی هر دستگاهی که JVM داشته باشد فراهم میکند. JVM همچنین مسئول مدیریت حافظه است، از جمله جمعآوری زباله که بهصورت خودکار حافظه اشیاء بلااستفاده را آزاد میکند.
کامپایل و اجرا. فرآیند توسعه جاوا شامل نوشتن کد منبع در فایلهای .java
، کامپایل آن به بایتکد با استفاده از کامپایلر javac
و سپس اجرای بایتکد روی JVM با دستور java
است. JVM بایتکد را تفسیر کرده و آن را به کد ماشین تبدیل میکند تا سیستمعامل بتواند آن را اجرا کند.
۲. متغیرها: نوعهای اولیه، مراجع و حافظه
متغیرها دو نوع اصلی دارند: اولیه و مرجع.
نوعهای اولیه. جاوا هشت نوع داده اولیه برای ذخیره مقادیر پایه ارائه میدهد: boolean
، char
، byte
، short
، int
، long
، float
و double
. هر نوع اولیه اندازه و دامنه خاصی دارد و مقادیر را مستقیماً در حافظه ذخیره میکند.
متغیرهای مرجع. متغیرهای مرجع خود شیء را ذخیره نمیکنند، بلکه اشارهگری به محل قرارگیری شیء در حافظه (heap) هستند. چندین متغیر مرجع میتوانند به یک شیء واحد اشاره کنند.
Heap و Stack. اشیاء در حافظه heap ایجاد و ذخیره میشوند که توسط جمعآورنده زباله JVM مدیریت میشود. متغیرهای محلی و پارامترهای متدها در حافظه stack ذخیره میشوند که برای فراخوانی متدها و دادههای موقتی استفاده میشود. درک تفاوت بین heap و stack برای فهم مدیریت حافظه و چرخه عمر اشیاء در جاوا ضروری است.
۳. متدها: رفتار، آرگومانها و نوع بازگشتی
متدها از وضعیت شیء استفاده میکنند (مثلاً صدای پارس کردن متفاوت است).
متدها و رفتار شیء. متدها عملیاتی هستند که یک شیء میتواند انجام دهد و بر وضعیت شیء که توسط متغیرهای نمونه نمایش داده میشود، تأثیر میگذارند. رفتار متد میتواند بسته به وضعیت شیء متفاوت باشد.
آرگومانها و پارامترها. متدها میتوانند آرگومانهایی دریافت کنند که هنگام فراخوانی به آنها داده میشود. پارامترها متغیرهای محلی متد هستند که این مقادیر را دریافت میکنند. جاوا از روش پاس دادن مقدار (pass-by-value) استفاده میکند، یعنی مقدار آرگومان در پارامتر کپی میشود.
نوع بازگشتی. متدها میتوانند مقداری را به فراخواننده بازگردانند که نوع آن باید در امضای متد مشخص شود. اگر متدی مقداری بازنگرداند، نوع بازگشتی آن void
است.
۴. بهرهگیری از API جاوا: کلاسها و بستههای آماده
لازم نیست چرخ را دوباره اختراع کنید اگر بدانید چگونه از کتابخانه جاوا (Java API) استفاده کنید.
API جاوا. API جاوا مجموعهای گسترده از کلاسها و رابطهای آماده است که امکانات متنوعی از ساختارهای داده پایه تا شبکه و اجزای رابط کاربری گرافیکی را فراهم میکند. با استفاده از API، توسعهدهندگان میتوانند از نوشتن کدهای تکراری اجتناب کرده و بر توسعه ویژگیهای اختصاصی تمرکز کنند.
بستهها. کلاسهای API جاوا در بستهها سازماندهی شدهاند که فضای نام ایجاد میکنند و از برخورد نامها جلوگیری میکنند و ساختار منطقی کتابخانه را شکل میدهند. برای استفاده از یک کلاس، باید بسته مربوطه را وارد (import) کنید یا نام کامل کلاس را به کار ببرید.
کاوش API. مستندات API جاوا منبعی ارزشمند برای یادگیری درباره کلاسها و متدهای موجود است و اطلاعات دقیق درباره هدف، متدها و نمونههای کاربردی هر کلاس را ارائه میدهد. کتابهای مرجع و منابع آنلاین نیز در این زمینه مفید هستند.
۵. طراحی شیءگرا: وراثت و چندریختی
وقتی وارد دنیای چندریختی میشوید، پنج گام برای طراحی بهتر کلاس، سه ترفند چندریختی، هشت روش برای کدنویسی انعطافپذیر و اگر هماکنون اقدام کنید، یک درس اضافی درباره چهار نکته بهرهبرداری از وراثت را خواهید آموخت.
وراثت. وراثت به شما امکان میدهد کلاسهای جدیدی (زیرکلاسها) بسازید که ویژگیها و رفتارهای کلاسهای موجود (ابرکلاسها) را به ارث میبرند. این کار باعث استفاده مجدد از کد و کاهش تکرار میشود. زیرکلاسها میتوانند متدها و متغیرهای نمونه جدید اضافه کنند و متدهای به ارث رسیده را بازنویسی کنند.
چندریختی. چندریختی به شما اجازه میدهد اشیاء از کلاسهای مختلف را به صورت یکنواخت مدیریت کنید. این ویژگی از طریق وراثت و رابطها تحقق مییابد. یک مرجع ابرکلاس میتواند به شیء هر یک از زیرکلاسهایش اشاره کند و متدها را بدون دانستن نوع دقیق شیء فراخوانی کند.
رابط IS-A. آزمون IS-A راهنمایی برای تشخیص مناسب بودن وراثت است. اگر بتوان گفت «A یک B است»، آنگاه کلاس A باید از کلاس B ارث ببرد. برای مثال، «سگ» یک «حیوان» است، پس کلاس Dog باید از Animal ارث ببرد.
۶. کلاسهای انتزاعی و رابطها: دستیابی به انعطافپذیری
وراثت تنها آغاز راه است.
کلاسهای انتزاعی. کلاسهای انتزاعی قابل نمونهسازی مستقیم نیستند و بهعنوان الگو برای زیرکلاسها عمل میکنند و ویژگیها و رفتارهای مشترک را تعریف میکنند. این کلاسها میتوانند متدهای انتزاعی (بدون پیادهسازی) و متدهای عادی (با پیادهسازی) داشته باشند.
رابطها. رابطها قراردادی را تعریف میکنند که کلاسها باید آن را پیادهسازی کنند. یک رابط مجموعهای از متدها را مشخص میکند که کلاس موظف به پیادهسازی آنها است. رابطها نمیتوانند متغیر نمونه یا متدهای عادی (به جز متدهای پیشفرض معرفی شده در جاوا ۸) داشته باشند.
چندریختی با رابطها. رابطها راهی قدرتمند برای تحقق چندریختی فراهم میکنند. میتوانید متغیری از نوع یک رابط تعریف کرده و شیء هر کلاسی که آن رابط را پیادهسازی کرده به آن اختصاص دهید. این امکان را میدهد که کدی بنویسید که با اشیاء کلاسهای مختلف به صورت یکنواخت کار کند.
۷. مدیریت استثناها: کنترل عملیات پرخطر
استثناها میگویند «ممکن است اتفاق بدی افتاده باشد...»
استثناها. استثناها رویدادهایی هستند که جریان عادی اجرای برنامه را مختل میکنند و معمولاً نشاندهنده خطاها یا شرایط استثنایی هستند که برنامه نمیتواند به روش معمول با آنها برخورد کند. جاوا مکانیزم قدرتمندی برای مدیریت استثناها ارائه میدهد.
بلوکهای try-catch. برای مدیریت استثناها، میتوانید کد پرخطر را در بلوک try
قرار دهید. اگر استثنایی در این بلوک رخ دهد، برنامه به بلوک catch
مربوطه میرود تا اقدامات لازم مانند ثبت خطا، نمایش پیام به کاربر یا تلاش برای بازیابی انجام شود.
استثناهای بررسیشده و بررسینشده. جاوا بین استثناهای بررسیشده و بررسینشده تمایز قائل میشود. استثناهای بررسیشده باید یا در بلوک catch
مدیریت شوند یا در امضای متد با کلیدواژه throws
اعلام شوند. استثناهای بررسینشده که زیرکلاسهای RuntimeException
هستند، نیازی به مدیریت یا اعلام صریح ندارند.
۸. Swing و رابطهای گرافیکی: ساخت برنامههای تعاملی
باید قبول کنید که به رابطهای گرافیکی نیاز دارید.
کامپوننتهای Swing. Swing یک جعبهابزار رابط کاربری گرافیکی است که مجموعهای غنی از کامپوننتها برای ساخت برنامههای تعاملی فراهم میکند. کامپوننتهای Swing سبک، مستقل از پلتفرم و بسیار قابل تنظیم هستند.
مدیران چیدمان. مدیران چیدمان مسئول سازماندهی کامپوننتها درون یک کانتینر مانند JFrame یا JPanel هستند. هر مدیر چیدمان سیاست خاصی برای تعیین اندازه و موقعیت کامپوننتها دارد. مدیران چیدمان رایج شامل BorderLayout، FlowLayout و BoxLayout هستند.
مدیریت رویدادها. مدیریت رویداد فرآیند پاسخ به اقدامات کاربر مانند کلیک دکمه، حرکت ماوس و ورودی صفحهکلید است. برای مدیریت رویدادها باید یک رابط شنونده (listener) را پیادهسازی، آن را به منبع رویداد ثبت و متد مدیریت رویداد را تعریف کنید.
۹. ساختارهای داده: مجموعهها و جنریکها
مرتبسازی در جاوا بسیار ساده است.
چارچوب مجموعهها. چارچوب مجموعههای جاوا مجموعهای از رابطها و کلاسها برای ذخیره و دستکاری گروهی از اشیاء فراهم میکند. انواع رایج مجموعهها شامل List، Set و Map هستند.
جنریکها. جنریکها به شما امکان میدهند نوع اشیائی که یک مجموعه میتواند نگه دارد را مشخص کنید. این کار ایمنی نوع را افزایش داده و نیاز به تبدیل نوع را کاهش میدهد. برای مثال، ArrayList<String>
لیستی است که فقط اشیاء رشتهای را نگه میدارد.
مرتبسازی. متد Collections.sort()
راهی آسان برای مرتبسازی لیستها فراهم میکند. برای مرتبسازی اشیاء کلاسهای سفارشی، کلاس باید رابط Comparable
را پیادهسازی کند یا باید یک Comparator
سفارشی ارائه دهید.
۱۰. بستهبندی و استقرار: انتشار کد شما
وقت رها کردن فرا رسیده است.
فایلهای JAR. فایل JAR (Java Archive) یک آرشیو فشرده است که تمام فایلهای کلاس، منابع و متادیتاهای یک برنامه جاوا را در یک فایل جمع میکند. فایلهای JAR توزیع و استقرار برنامههای جاوا را آسانتر میکنند.
JARهای اجرایی. برای اینکه یک فایل JAR اجرایی باشد، باید یک فایل manifest شامل کلاس اصلی برنامه در آن قرار گیرد. فایل manifest یک فایل متنی ساده است که جفتهای کلید-مقدار را در بر دارد.
Java Web Start. Java Web Start (JWS) فناوریای است که امکان استقرار برنامههای مستقل جاوا را از طریق وب فراهم میکند. برنامههای JWS از مرورگر وب راهاندازی شده و خارج از محیط محدود مرورگر اجرا میشوند و به منابع سیستم دسترسی دارند.
۱۱. محاسبات توزیعشده: RMI و خدمات راه دور
دور بودن الزاماً چیز بدی نیست.
فراخوانی متد راه دور (RMI). RMI یک API جاوا است که امکان فراخوانی متد روی اشیائی که در JVM دیگری، احتمالاً روی ماشینی دیگر اجرا میشوند را فراهم میکند. RMI فرآیند ساخت برنامههای توزیعشده را ساده میکند.
معماری RMI. RMI شامل چند جزء کلیدی است: رابط راه دور، پیادهسازی راه دور، stub (نماینده سمت کلاینت) و skeleton (نماینده سمت سرور). کلاینت با stub تعامل دارد که ارتباط با سرور را مدیریت میکند. سرور درخواست را دریافت کرده و متد را روی پیادهسازی راه دور اجرا میکند.
ثبت RMI. ثبت RMI یک سرویس نامگذاری است که به کلاینتها امکان میدهد اشیاء راه دور را پیدا کنند. سرور اشیاء راه دور خود را در این ثبت ثبت میکند و کلاینتها میتوانند آنها را با نام جستجو کنند.
آخرین بهروزرسانی::
نقد و بررسی
کتاب «هد فرست جاوا» با رویکردی منحصربهفرد و تصویری در آموزش برنامهنویسی جاوا، بازخوردهای بسیار مثبتی دریافت کرده است. خوانندگان سبک جذاب، توضیحات روشن و روشهای مؤثر یادگیری آن را ستایش میکنند. بسیاری این کتاب را برای مبتدیان و کسانی که از زبانهای برنامهنویسی دیگر به جاوا مهاجرت میکنند، بسیار مناسب میدانند. استفاده از طنز، تصاویر و روشهای غیرمتعارف در این کتاب به تثبیت مفاهیم کمک شایانی میکند. اگرچه برخی منتقدان آن را بیش از حد ساده یا حواسپرتکننده میدانند، اما اکثریت توانایی کتاب در دسترس و لذتبخش کردن موضوعات پیچیده را تحسین میکنند. بررسیکنندگان اغلب به حفظ اطلاعات در مدت طولانی پس از مطالعه اشاره کرده و آن را بهعنوان معرفی بسیار خوبی برای زبان جاوا توصیه میکنند.
Similar Books









