آموزش زبان برنامه نویسی جاوا و مقدمات آن
زبان کامپیوتر
کامپیوتر یک دستگاه الکترونیکی است.سیگنال های الکترونیکی در داخل کامپیوتر از کانالهایی عبور می کنند.
دو سیگنال کامپیوتری وجود دارد :
۱- سیگنال های آنالوگ
۲- سیگنال های دیجیتال
سیگنال های آنالوگ شکل موجهای پیوسته ایی هستند که برای نمایش چیز هایی مثل صدا استفاده می شود.
سیگنال های دیجیتال اطلاعات را با دنباله ایی از صفر ها و یک ها نمایش می دهند. ۰ نماینده ولتاژ پایین و ۱ نماینده ولتاژ بالا است.
سیگنال های دیجیتال نسبت به سیگنال های آنالوگ حامل های قابل اعتمادتری برای اطلاعات هستند و میتوانند با دقت کافی از دستگاهی به دستگاه دیگر انتقال پیدا کنند.
چون سیگنال های دیجیتال در کامپیوتر پردازش میشوند زبان کامپوتر به زیان ماشین دنباله ایی از ۰ ها و ۱ ها است.
رقم ۰ یا ۱ به نام رقم دودویی (binary) یا بیت (bit) خوانده می شود.
دنباله ایی از ۸ بیت بایت (byte) نام دارد.
جدول واحد های دودویی یا واحد های حافظه
واحد | نماد | بیت/بایت |
بایت | - | 8 bits |
کیلوبایت | KB | 210 bytes = 1024 bytes |
مگابایت | MB | 1024 KB = 210KB = 220bytes = 1,048,576 bytes |
گیگابایت | GB | 1024 MB = 210MB = 230bytes = 1,073,741,824 bytes |
ترابایت | TB | 1024 TB = 210GB = 240bytes = 1,099,511,627,776 bytes |
پتابایت | PB | 1024 TB = 210TB = 250bytes = 1,125,899,906,824,624 bytes |
اگزابایت | EB | 1024 PB = 210PB = 260bytes = 1,152,921,504,606,846,976 bytes |
زتابایت | ZB | 1024 EB = 210EB = 270bytes = 1,180,591,620,717,411,303,424 bytes |
هر حرف یا عدد یا نماد خاصی (مثل * یا } ) روی صفحهکلید به صورت دنباله ایی از بیتها رمز گذاری میشود و هرکدام نمایش یکتایی دارد. متداولترین رمزگذاری اَسکی (ASCII) است که مجموعه داده ایی آن شامل ۱۲۸ کاراکتر است که از ۰ تا ۱۲۷ شماره گذاری می شود.
برای مثال کاراکتر اسکی 'A' با 1000001 نمایش داده می شود. طرح رمزگذاری دیگر یونیکد (unicode) نام دارد که توسعه جدید محسوب می شود. Unicode دارای ۶۵۵۳۶ کاراکتر است و برای ذخیره کاراکتر آن به دو بایت (16 bit) نیاز است. جاوا از مجموعه کاراکتری unicode استفاده می کند. یعنی در جاوا هر کاراکتر به صورت دنباله ایی ۱۶ بیتی نمایش داده می شود. مثلاً کاراکتر 'A' در unicode با 0000000001000001 نمایش داده می شود.
کاراکتر ASCII زیر مجموعه unicode است. ۱۲۸ کاراکتر اول unicode مثل کاراکتر های ASCII است.
سادهترین زبان کامپیوتر یعنی زبان ماشین دستورالعمل های برنامه را به صورت بیتی مشخص می کند.
کامپیوتر ها اغلب انواع یکسانی از عملیات را انجام میدهند اما طراحان CPU های مختلف مجموعه متفاوتی از کد های دودویی را برای نمایش و اجرای این عملیات فرآهم می سازند.
بنابر این زبان یک ماشین الزاماً مثل زبان ماشین کامپیوتر دیگر نیست. تنها سازگاری بین کامپیوتر ها این است که در هر کامپیوتر تمام دادهها به صورت کد هایی دودویی ذخیره و بازیابی می شوند.
زبان اسمبلی
با توضیحات بالا نوشتن برنامه به زبان ماشین بسیار دشوار است. و ممکن است برای کامپیوتر های مختلف متفاوت باشد.
بنابر این زبانی به نام اسمبلی ایجاد شد.(assembly language) تا کار برنامه نویسیان راحتتر شود.
در این زبان هر دستورالعمل به صورت یک نماد است. مثلاً برای
LOAD rate
MULT hourse
STORE salary
این تکه کد میگوید مقدار rate را بارگذلری کن در مقدار hourse ضرب کن و نتیجه را در salary ذخیره کن. نوشتن برنامه به زبان اسمبلی به مراتب سادهتر از زبان ماشین است.
اسمبلر (assembler) برنامه ایی است که برنامه نوشته شده به زبان اسمبلی را به برنامه ی معادل در زبان ماشین تبدیل می کند.
زبانهای سطح بالا (high level language)
مرحله بعدی زبانهای سطح بالا هستند که دستور العمل ها در این زبانها خیلی شبیه به محاوره در زبان انگلیسی است. نمونه ایی از زبانهای سطح بالا میتوان به BASIC, FORTRAN, COBOL, PASCAL, C C++ و JAVA اشاره کرد. فرمول محاسبه ایی که با اسمبلی نوشته شد به صورت زیر در زبان جاوا قابل پیادهسازی است
salary = rate * hourse
کامپیوتر ها نمیتوانند مستقیماً دستورالعمل ها در حالت سطح بالا را اجرا کنند.
برای اینکه این دستور جاوا بتواند در کامپیوتر اجرا شود ابتدا باید به یک زبان میانی (intermediated language) به نام بایت کد (byte code) ترجمه شود و سپسبه زبان ماشین خاصی تفسیر (interpret) گردد.
برنامه ایی به نام کامپایلر (compiler) دستورالعمل های نوشته شده به زبان جاوا را به بایت کد تبدیل می کند.
JVM یا Java Virtual Machine
چون کامپیوتر فقط زبان ماشین را درک میکند و CPU های مختلف زبانهای ماشین مختلفی دارند و برای اینکه جاوا مستقل از محیط باشد یعنی با بایت کد برنامه در محیط های مختلف با CPU ها و زبانهای ماشین مختلف کار کند طراحان جاوا یک کامپیوتر مجازی به نام ماشین مجازی جاوا JVM را طراحی کردن.
Byte code زبان ماشین برای JVM است.
بنابراین جاوا استقلال از محیط را با JVM انجام می دهد.
جاوا و نحوه ی کارکرد آن
یکی از بزرگترین امتیازها جاوا که باعث شهرت این زبان شده است عدم وابستگی آن به محیط برنامه نویسی است.یعنی برنامههای آن بدون تضییر در ویندوز مکینتاش و لینوکس و سایر محیط هایی که از جاوا پشتیبانی میکند اجرا می شود.ولی در زبانهای کامپایلری دیگر برای محیط های مختلف باید نسخه های مختلف نوشته شود.
برای پی بردن به این ویژگی زبان برنامه نویسی C را در نظر بگیرید.
یک برنامه C توسط کامپایلر به زبان ماشین تبدیل می شود. یعنی به دستوراتی تبدیل میشود که مخصوص پردازنده آن ماشین است.
اگر این برنامه در یک سیستم با پردازنده اینتل ترجمه شود در سایر سیستمهای اینتل اجرا میشود ولی در ماشینهای دیگر مانند مکینتاش اجرا نخواهد شد. برای استفاده برنامه در چنین ماشینهایی باید ابتدا کد منبع (source code) به آن ماشین انتقال یابد و برنامه دوباره کامپایل شود تا کدی برای آن ماشین تولید گردد. در بعضی از موارد نیز بسته به نوع پردازنده ها و عوامل دیگر source code باید تغییرات هم داشته باشد. جاوا این استقلال از محیط را با java virtual machine فراهم کرده است.
JVM یک کامپیوتر فرضی است. برنامههای کامپایل شده جاوا را میگیرد و دستورهای آن را برای سیستم عامل های مختلف تبدیل به فرمانهایی میکند که برای آنها قابل استفاده باشد. برنامه کامپایل شده ایی که به شکا بایت کد است بر روی هر کامپیوتری با هر سیستم عاملی که JVM را داشته باشد اجرا خواهد شد. ماشین مجازی جاوا را مفسر جاوا یا روال جاوا (java routine) نیز می گویند. به طور کلی برنامه نویس جاوا نیاز به نوشتن چندین نسخه از برنامه خود برای محیط های مختلف را ندارد زیرا JVM آن را برای محیط های مختلف ترجمه می کند. برنامههای جاوا قبل از ترجمه به صورت یک فایل متنی ساده با پسوند .java ایجاد می شوند. این فایل به بایت کد تبدیل می شود. بایت کد سطحی را بین source code و کد ماشین اضافه می کند. به دلیل استفاده از ماشین مجازی که یک سطح بین سورس کد و کد ماشین ایجاد میکند اجرای برنامه جاوا کمی کند است. ولی امروز با استفاده از الگوریتم های بهینه شده و پیشرفت سخت افزاری این کند بودن نمیتواند در کیفیت برنامه شما تأثیری داشته باشد. زیرا این کندی فدای قابل حمل بودن جاوا و شعار سازندگان جاوا که یک بار بنویس همه جا استفاد کن شده است.
با این حال اگر نیاز به برنامه ایی دارید که سرعتش از ماشین مجازی بیشتر باشد میتوان دو روش عمل کرد
- در برنامه جاوا از کد ماشین خاصی استفاده کنیم که منجر به برنامه ایی میشود که وابسته محیط است.
- از کامپایلر های بی درنگ (just in time) که بایت کد را به کدی برای ماشین خاص تبدیل می کند.
جاوا در اینترنت و اپلت ها (applet)
یکی از ویژگیهای جاوا قابلیت اجرا شدن آن در وب جهانی است. مرورگر ها میتوانند برنامههای جاوا را از اینترنت دریافت کنند و آن را در کامپیوتر کاربر اجرا کنند. برنامه جاوایی که در اینترنت اجرا میشود اپلت نام دارد. این برنامهها همچون تصاویر در مرورگر ها ظاهر میشوند اما محاوره ایی هستند. یعنی قادر به دریافت و ورودی پاسخ دادن به آنها هستند.
برخی از کاربرد های اپلت
- ایجاد انیمیشن
- بازی ها
-فرم هایی برای ارتباط با کاربران و سایر جلوههای محاوره ایی در صفحات وب.
ماشی مجازی جاوا میتواند در خود مرورگر وجود داشته باشد یا به صورت جداگانه load شود و در مرورگر قرار بگیرد و اپلت را اجرا کند.
از اصول نوشتن برنامههای کاربردی میتوان برای applet ها استفاده کرد.
در بخشهای بعدی بیشتر به مزایا و معایب اپلت ها می پردازیم.
یادگیری جاوا آسان است
جاوا زبان کوچکی است طراحی شده تا نوشتن برنامههای کاربردی کامپایل و اشکال زدایی آنها آسان باشد. جاوا بعد از C++ که زبان شی گرایی است ایجاد شده و نحو (syntax) آن بسیار مشابه است و جنبههای منفی C++ را که مستعد خطا میشد را شامل نمی شود. مثلاً در جاوا اشاره گر به اشاره گر وجود ندارد . رشته و آرایه در جاوا برخلاف C++ به صورت اشیاء تعریف م ی شوند. مدیریت حافظه به صورت خودکار انجام می گیرد.
سبک های برنامه نویسی
روش ساخت یافته (structure approach)
روش شی گرا (object oriented approach)
روش ساخت یافته
مسأله ایی که باید حل شود به چند مسأله ی کوچکتر به نام زیر مسأله تقسیم می گردد. هر زیر مسأله تحلیل میشود و جوابی برای آن به دست می آید. گاهی یک زیر مسأله به زیر مسأله های کوچکتری تبدیل میشود و جواب تمام زیر مسأله ها با هم ترکیب میشوند تا کل مسأله حل شود. به این فرآیند پیادهسازی برای یک روش ساخت یافته برنامه نویسی ساخت یافته می گویند. این روش به نام های طراحی بالا به پایین (top-down design) پایین به بالا (bottom-down design) پالایش گام به گام (stepwise refinement) و طراحی پیمانه ایی (modular design) نیز خوانده می شود.
روش شی گرا
یک روش برنامه نویسی پر استفاده است. اولین قدم در آن مشخص کردن اجزایی به نام اشیاء (object) میباشد که مبنای جواب مسأله است و تعییت چگونگی تعامل این اشیاء با یکدیگر را مشخص می کند.
هر شی داده ایی دارد.
هر شی عملیاتی بر روی داده هایش انجام می دهد.
شی دادهها و عملیات روی دادهها را در یک واحد (unit) ترکیب می کند. این فرآیند نیز بسته بندی (encapsulation) نام دارد.
در برنامه نویسی شی گرا برنامه نهایی مجموعه ایی از اشیاء هستند که با یکدیگر تعامل دارند.
زبان برنامه نویسی شی گرا
زبان برنامه نویسی که (object oriented design) را پیادهسازی میکند زبان برنامه نویسی شی گرا Object Oriented Programming Language یا به اختصار OOP نامیده می شود.
متد ها در جاوا method
شی های موجود در برنامههای پیچیده معمولاً عملیات های فراوانی دارند. برای جدا کردن عملیات ها از یکدیگر و استفاده ی مؤثر آنها از متد ها (method) برای پیادهسازی الگوریتم های موجود یک شی استفاده می کنیم.
کلاسها در جاوا class
جاوا به شما اجازه میدهد که دادهها و عملیات های روی آنها را در یک واحد ترکیب کنید که این واحد ها کلاس نام دارند. بنابراین در جاوا تمام برنامهها از کلاس استفاده می کنند. نحوه تعریف کلاس و متد ها را در بخشهای بعدی بررسی خواهیم کرد.
بسته به شرایط انتخاب نوع برنامه نویسی که ساخت یافته باشد یا شی گرا به شما بستگی داد. جاوا طراحی شده تا OOD را پیادهسازی کند. به عبارت دیگر جاوا یک زبان برنامه نویسی شی گرا است. OOD در رابطه با طراحی ساخت یافته نیز به خوبی کار می کند. یعنی یک طرح ساخت یافته به خوبی با OOD قابل پیادهسازی است.
چون هر شی شامل داده و عملیاتی روی آنها است قبل از طراحی و استفاده از شی لازم است چگونگی نمایش دادهها در کامپیوتر را بدانیم. در بخش بعدی که میتوان اولین بخش شروع آموزش جاوا آن را دانست با انواع نوع دادهها در جاوا آشنا می شویم.