جاوا یک زبان برنامه نویسی سطح بالا است و روی پلتفرمهای مختلف اجرا میشود. برای اموزش کامل جاوا باید درک درستی از مفاهیم شی گرایی داشت. پس در این پست به توضیح مفاهیم شی گرایی از جمله کلاس و اشیاء، وراثت، کپسوله سازی و غیره در جاوا خواهیم پرداخت.
مقدمه
امروزه جاوا به یک زبان محبوب برای برنامه نویسی تبدیل شده است. این زبان منبع باز بوده و کاربردهای فراوانی دارد. افرادی که در حوزه توسعه نرم افزار فعالیت دارند؛ آموزش جاوا را در اولویت آموزش خود قرار میدهند.
اگر در ابتدای راه یادگیری جاوا هستید پیشنهاد میکنیم ابتدا پیشنیازهای لازم، برای برنامه نویسی جاوا را دانلود کرده و نصب کنید. در ادامه این پست به معرفی محیطهای برنامه نویسی جاوا خواهیم پرداخت که میتوانید از آن ها برای کدنویسی و اجرا، استفاده کنید. وقتی یک برنامه در یک محیط نرم افزاری و سخت افزاری اجرا شود، آن را به عنوان پلتفرم تعریف میکنند؛ چون زبان برنامه نویسی جاوا دارای محیط زمان اجرا و رابط برنامه نویسی کاربردی است به آن پلتفرم میگویند.
از ویژگیهای زبان جاوا به چند مورد اشاره میکنیم:
- شی گرا بودن: در جاوا همه چیز به صورت شی است.
- ساده بودن: طراحی جاوا به گونهای است که میتوان به راحتی یاد گرفت.
- امنیت بالا: زبان جاوا یک بستر امن برای برنامه نویسی طراحی کرده است که این پکیج امنیتی اغلب به روزرسانی میشود.
برای آموزش بهتر جاوا می توانید از مجموعه های نفیس فرادرس استفاده کنید.
محیط های برنامه نویسی جاوا
با معرفی محیطهای برنامه نویسی برای زبان جاوا میتوانید یکی از آنها را دانلود و برای توسعه نرم افزار خود استفاده کنید. در ادامه به چهار مورد از IDE های معروف اشاره میکنیم:
1- محیط نت بینز (Net Beanse)
نت بینز Net Beanse توسط شرکت اوراکل معرفی شد و اکثر زبانهای برنامه نویسی را پشتیبانی میکند. با استفاده از این محیط برنامه نویسی میتوانید برنامههای مورد نظر را کد نویسی کنید. هدف این محیط بر روی زبان جاوا است اما زبانهای دیگر مثل سی پلاس پلاس، پایتون، روبی و غیره را نیز پشتیبانی میکند. این محیط از جاوا اسکریپت پشتیبانی میکند و به ابزار Profiler برای تهیه گزارش مجهز است. قابلیت Drag and Drop دارد و امکان طبقه بندی فایلها با پسوندهای مختلف را فراهم میکند.
2- محیط ای کلیپس (Eclipse)
ای کلیپس Eclipse یک محیط معروف برای برنامه نویسی جاوا است. این محیط به صورت منبع باز است. البته گوگل ابزارهای توسعه اندروید را بر روی این محیط جمع آوری کرده است. اگر ای کلیپس را برای کنویسی جاوا انتخاب کرده اید، ابزار Sdk و Adt نیز لازم است. این ابزار در ایجاد اولین برنامه کمک زیادی میکند. در Sdk دیباگر و شبیه ساز اندروید وجود دارد که کار را برای برنامه نویس راحت میکند. پیشنیازهای Sdk نیز Jdk و Python2.2 است که باید بر روی سیستم خود نصب کنید.
3- محیط اندروید استودیو (Android Studio)
اندروید استودیو Android Studio نیز یک محیط برای توسعه نرم افزار اندروید و زبان جاوا است و ابزار ویرایشگر کد را در خود جای داده است. ویرایشگر کد کمک میکند تا برنامه نویس کدها را به راحتی وارد کند و اشتباهات آن را رفع نماید. خروجی برنامههای نوشته شده در Android Studio در قالب apk است که برای اپلیکشن نویسی بسیار خوب است . این محیط از زبان سی پلاس پلاس و Ndk نیز پشتیبانی میکند. بیشتر برنامه نویسان اندروید از این محیط برای برنامه نویسی استفاده میکنند.
4- محیط ویژوال استودیو کد (Visual Studio Code)
ویژوال استودیو کد Visual Studio Code یک ویرایشگر منبع باز است که برنامه نویس برای ویرایش، اجرا و برطرف کردن اشکالات کدها از این محیط استفاده میکند. این محیط بیشتر در ویرایش متن مورد استفاده قرار میگیرد؛ این ویرایشگر بیشتر با نرم افزار Sublime text در حال مقایسه و رقابت است. این ویرایشگر برای کسانی که با #c برنامه نویسی میکنند آشناتر است. با استفاده از این ویرایشگر میتوان کدهایی با زبان های مختلف نوشت و ویرایش کرد. برای استفاده از این محیط نیز باید با بخشهای مختلف آن آشنایی داشت. (پیشنهاد ما برای اموزش کامل جاوا، استفاده از این محیط است)
کلاس ها و اشیاء در جاوا
در اموزش کامل جاوا به مبحث کلاسها و اشیا میرسیم. کلاس و اشیا دو مفهوم مهم در برنامه نویسی شی گرایی است و برای یادگیری جاوا که یک زبان برنامه نویسی شی گراست، بایستی مفاهیم و اصول شی گرایی را آموخت. در ادامه این پست به صورت کامل مبحث شی گرایی در جاوا را به صورت گام به گام و همراه با مثال بیان خواهیم کرد.
کلاس در جاوا
کلاس به معنی یک الگوی اولیه یا یک طرح ابتدایی است که توسط کاربر تعریف شده و به وسیله آن اشیاء ایجاد میشود. کلاس ویژگیهایی را نشان میدهد که برای همه اشیاء مشترک هستند. به صورت کلی اعلانهای کلاس شامل موارد زیر میباشد:
- دسترسی یا Modifiers: یک کلاس میتواند عمومی باشد یا به صورت پیش فرض سطح دسترسی داشته باشد.
- کلمه کلیدی کلاس یا Class keyword: کلمه کلیدی Class برای ایجاد یک کلاس استفاده میشود.
- نام کلاس یا Class name: نام کلاس باید با حروف بزرگ شروع شود.
- رابط یا Interfaces: Interfaces نمونهای از یک کلاس است. تمام متدهایی که در Interface وجود دارد، متدهای انتزاعی هستند. از واسط برای به دستیابی به وراثت چندگانه استفاده میشود.
- ساختار یا Body: ساختار یا بدنه کلاس داخل { } (آکولاد) قرار میگیرد.
همانطور که بارها تاکید کردیم، جاوا یک زبان برنامه نویسی شی گرا است. در جاوا همه چیز با کلاس و اشیا همراه با ویژگی و متدهای آن است. کلاس همانند یک طرح برای ایجاد اشیاء است. هر فایل در جاوا دارای یک کلاس است که همنام با فایل میباشد. ساختار کلی کلاس به صورت زیر نمایش داده میشود:
public class classname { }
در مثال زیر یک کلاس به نام “Main” با متغیر x ایجاد میکنیم:
public class Main { int x = 5; }
شی در جاوا
شیء موضوع مهم در برنامه نویسی شی گرایی محسوب میشود. یک شیء شامل ویژگیهای زیر است:
- حالت یا State: ویژگیهای یک شی را نشان میدهد.
- رفتار یا Behavior: پاسخ و رفتار یک شی یا اشیای دیگر را نشان میدهد.
- نام یا Identity: یک نام منحصر به فرد به یک شی میدهد و اشیا با یکدیگر در تعامل هستند.
در شکل زیر یک حیوانی را مثال زدیم که که ویژگی، نام و رفتار آن نشان داده شده است.
به طور کلی اشیاء با چیزهایی که در دنیای واقعی وجود دارد، مطابقت میکند. برای مثال یک سیستم خرید آنلاین را در نظر بگیرید؛ این سیستم ممکن است دارای مواردی مثل سبد خرید یا مشتری یا محصول باشد. در جاوا یک شی را از کلاس ایجاد میکنند. در مثال قبلی کلاسی به نام main ایجاد کردیم و از آن برای ایجاد اشیا استفاده میکنیم. پس برای ایجاد شی از main، نام کلاس و نام شیء را مشخص کرده و از کلمه new استفاده میکنیم.
public class Main { int x = 5; public static void main(String[] args) { Main myObj = new Main(); System.out.println(myObj.x); } }
در این مثال نام شیء را myobj انتخاب کردیم که مقدار x را چاپ میکند.
متد ها در جاوا
method ها در جاوا این امکان را به ما میدهند که از کدها بدون اینکه دوباره تایپ مجدد شوند استفاده کنیم. در جاوا هر متد بخشی از یک کلاس میباشد که با زبانهایی مانند C و ++C متفاوت است. برای اموزش کامل جاوا لازم است با متد ها و نحوه اعلان آن ها در جاوا آشنا شوید. اعلانهای متد در جاوا دارای پنج جزء هستند:
1- دسترسی یا Modifier: نوع دسترسی متد را مشخص میکند. در جاوا 4 نوع Modifier وجود دارد.
- عمومی یا public: در تمام کلاسها برنامه قابل دسترسی خواهد بود.
- محافظت شده یا protected: در کلاسی که تعریف شده و در زیر کلاسهای آن قابل دسترسی است.
- خصوصی یا private: فقط در کلاسی که در آن تعریف شده قابل دسترسی است.
- پیش فرض یا default: در همان کلاسی که تعریف شده است قابل دسترسی میباشد.
2- نوع بازگشتی یا The return type: در این نوع متد void مقداری را برنمیگرداند.
3- نام متد یا Method Name: قوانین نام گذاری برای فیلدها بر متدها هم اعمال میشود.
4- فهرست پارامترها یا Parameter list: پارامترهای ورودی با کاما ( , ) از هم جدا میشوند. اگر هیچ پارامتری وجود نداشت باید از پرانتز خالی () استفاده کرد.
5- ساختار متد یا Method body
اگر با توضیحات داده شده متوجه معنی کلمات نشدید بهتر است به تصویر زیر توجه کنید و آن را به خاطر بسپارید.
در مثال زیر متدی به نام ()my Method در Main ایجاد کردیم:
public class Main { static void myMethod() { System.out.println("Hello World!"); } }
()my Method یک متن را در زمان فراخوانی چاپ میکند. برای فراخوانی یک متد، نام متد را به همراه دو پرانتز () و نقطه ویرگول مینویسیم. به مثال زیر توجه کنید:
public class Main { static void myMethod() { System.out.println("Hello World!"); } public static void main(String[] args) { myMethod(); } }
خروجی به شکل زیر میباشد:
"Hello World!"
سطوح دسترسی در جاوا
چهار نوع سطح دسترسی در جاوا وجود دارد:
- پیش فرض یا default
- خصوصی یا private
- حفاظت شده یا protected
- عمومی یا public
به سطح دسترسی خصوصی (private) فقط میتوان در داخل کلاس دسترسی داشت. اگر به مثال زیر توجه کنید بیشتر متوجه خواهید شد. در این مثال دو کلاس A و Simple ایجاد شده است. یک کلاس شامل عضو داده خصوصی و متد خصوصی است. ما خارج از کلاس به این اعضای خصوصی دسترسی داریم، بنابراین یک خطای زمان کامپایل وجود دارد.
class A{ private int data=40; private void msg(){System.out.println("Hello java");} } public class Simple{ public static void main(String args[]){ A obj=new A(); System.out.println(obj.data);//Compile Time Error obj.msg();//Compile Time Error } }
سطح دسترسی عمومی در همه جا قابل دسترسی است. مثال زیر را در نظر بگیرید:
//save by A.java package pack; public class A{ public void msg(){System.out.println("Hello");} }
//save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A(); obj.msg(); } }
خروجی به شکل زیر خواهد بود:
Hello
کپسوله سازی در جاوا
در ادامه اموزش کامل جاوا به موضوع کپسوله سازی می رسیم. کپسوله سازی یکی از ویژگیهای کلیدی در برنامه نویسی شی گرا است. کپسوله سازی به دسته بندی فیلدها و متدها در داخل یک کلاس اشاره میکند. زمانیکه تمام اعضای یک کلاس را خصوصی کردید، یک کلاس کپسوله شده در جاوا ایجاد کرده اید. کپسوله سازی در جاوا امکان کنترل دادهها را ممکن میسازد همچنین راهی برای دستیابی به مخفی کردن دادهها است؛ زیرا کلاسهای دیگر نمیتوانند به دادهها از طریق اعضای خصوصی دسترسی داشته باشند. ایجاد کپسوله در جاوا آسان است.
یک مثال ساده از کپسوله سازی در جاوا:
class Area { // fields to calculate area int length; int breadth; // constructor to initialize values Area(int length, int breadth) { this.length = length; this.breadth = breadth; } // method to calculate area public void getArea() { int area = length * breadth; System.out.println("Area: " + area); } } class Main { public static void main(String[] args) { // create object of Area // value of length and breadth Area rectangle = new Area(5, 6); rectangle.getArea(); } }
خروجی به شکل زیر خواهد بود:
Area: 30
در مثال بالا کلاسی به نام Area ایجاد کردیم. این برنامه برای محاسبه مساحت نوشته شده است. برای اینکه مساحت را محاسبه کنیم نیاز به دو متغیر طول و عرض و متد ()getArea داریم؛ به همین خاطر فیلد و متد را در یک کلاس قرار دادیم.
مفهوم وراثت در جاوا
یکی از ویژگیهای کلیدی در شی گرایی یا OOP مفهوم وراثت است که به ما اجازه میدهد یک کلاس جدید از یک کلاس موجود ایجاد کنیم. کلاس جدیدی که ایجاد میکنیم، به عنوان زیر کلاس (کلاس فرزند یا مشتق شده) و کلاس موجود که کلاس فرزند از آنجا مشتق می شود به عنوان کلاس والد یا پایه شناخته میشود. کلمه کلیدی extends برای انجام وراثت در جاوا استفاده می شود.
در مثال زیر، کلاس Dog با به ارث بردن متدها و فیلدها از کلاس Animal ایجاد میشود. در اینجا، Dog کلاس فرزند و Animal به عنوان کلاس والد است.
class Animal { // methods and fields } // extends keyword // to perform inheritance class Dog extends Animal { // methods and fields of Animal // methods and fields of Dog }
به مثال دیگری توجه کنید. در مثال زیر، کلاس فرزند یا مشتق شده Dog را از superclass Animal به دست آورده ایم.
class Animal { // field and method of the parent class String name; public void eat() { System.out.println("I can eat"); } } // inherit from Animal class Dog extends Animal { // new method in subclass public void display() { System.out.println("My name is " + name); } } class Main { public static void main(String[] args) { // create an object of the subclass Dog labrador = new Dog(); // access field of superclass labrador.name = "Rohu"; labrador.display(); // call method of superclass // using object of subclass labrador.eat(); } }
خروجی به شکل زیر خواهد بود:
My name is Rohu I can eat
در این مثال، Labrador یک شیء از Dog است. می دانیم name و ()eat اعضای کلاس Animal هستند. از آنجایی که Dog فیلد و متد را از Animal ارثبری میکند، میتوان با استفاده از شیء Dog به فیلد و متد Animal دسترسی پیدا کرد.
سخن آخر در اموزش کامل جاوا
به پایان پست اموزش کامل جاوا رسیدیم. در این مبحث سعی کردیم به صورت ساده همراه با مثال مباحث کلاس و اشیاء، متدها در جاوا، سطح دسترسی در جاوا، کپسولهسازی و وراثت در جاوا را توضیح دهیم. شی گرایی در جاوا یکی از مهمترین موضوعها در بحث یادگیری است که در این بخش به آن پرداختیم. اگر زمان کافی برای یادگیری دارید می توانید از فیلم آموزش جاوا فرادرس که توسط استاد کلامی تدریس شده، استفاده کنید.
زبان برنامه نویسی جاوا رفته رفته به محبوبیت خود میافزاید و در بازار کار حرف زیادی برای گفتن دارد. پس اگر علاقمند به این زبان هستید از همین امروز شروع به آموزش و یادگیری کنید. یادگیری زبانهای برنامه نویسی خیلی سخت و دست نیافتنی نیست و میتوان با پشتکار آن را یاد گرفت. پیشنهاد می کنیم برای برنامه نویسی جاوا از مقاله آموزش برنامه نویسی جاوا در ویژوال استادیو – راهنمای راه اندازی و شروع کار برنامه نویسی جاوا با VS Code [5] استفاده کنید.