کپسوله سازی فرآیند بسته بندی کد و دیتا در یک واحد می باشد درست مانند کپسول که متشکل از چند دارو می باشد. برای اینکه یک کلاس را کپسوله کنیم، لازم است که تمام فیلدها را خصوصی تعریف کنیم و از متدهای getter و setter برای تغییر آنها بهره ببریم. از Java Bean می توان به عنوان یک کلاس کاملا کپسوله نام برد.
مزایای کپسوله سازی (Encapsulation) در جاوا
- با تعریف متدهای getter و setter تنها امکان خواندن یا نوشتن برقرار می شود.
- باعث کنترل بهتر بر روی اطلاعات می شود. در صورتی که به عنوان مثال بخواهید داده درون یک فیلد را تغییر بدهید، از متد setter مربوط به آن استفاده می کنید.
مثال زیر را که شامل یک فیلد و متدهای getter و setter آن می باشید را نگاه کنید:
مثال:
//save as Student.java package com.javatpoint; public class Student{ private String name; public String getName(){ return name; } public void setName(String name){ this.name=name } }
//save as Test.java package com.javatpoint; class Test{ public static void main(String[] args){ Student s=new Student(); s.setName("vijay"); System.out.println(s.getName()); } }
خروجی:
Output: vijay
آرایه (Array) در جاوا
به طور معمول، آرایه مجموعه ای عناصر با نوع یکسان است که دارای خانههای حافظه پشت سر هم می باشد. تعداد خانه های آرایه مقدار ثابتی می باشد و شماره خانه های آرایه از صفر شروع می شود.
مزایای استفاده از آرایه
- بهینه سازی کد: کد ما را بهینه می کند و باعث می شود که دریافت و مرتب سازی اطلاعات راحت تر باشد.
- دسترسی تصادفی: به تمام داده ها در تمام خانه های آرایه دسترسی وجود دارد.
اما مشکل آرایه این می باشد که سایز آن ثابت است و در صورتی که هنگام اجرای برنامه به سایز بیشتری نیاز باشد نمی توان به خانه های آرایه اضافه کرد. برای حل این مشکل از چهارچوب مجموعه (collection) در جاوا استفاده شده است.
انواع آرایه
در جاوا دو نوع آرایه وجود دارد:
- تک بعدی
- چند بعدی
آرایه تک بعدی در جاوا
سینتکس تعریف آرایه در جاوا:
dataType[] arr; (or) dataType []arr; (or) dataType arr[];
آغاز آرایه
arrayRefVar=new datatype[size];
مثال:
class Testarray{ public static void main(String args[]){ int a[]=new int[5];//declaration and instantiation a[0]=10;//initialization a[1]=20; a[2]=70; a[3]=40; a[4]=50; //printing array for(int i=0;i<a.length;i++)//length is the property of array System.out.println(a[i]); }}
خروجی:
Output: 10 20 70 40 50
در صورتی که بخواهیم، یک آرایه را بهتر با اطلاعات پر کنیم آنگاه داریم:
به مثال زیر دقت کنید:
مثال:
int a[]={33,3,4,5};//declaration, instantiation and initialization
class Testarray1{ public static void main(String args[]){ int a[]={33,3,4,5};//declaration, instantiation and initialization //printing array for(int i=0;i<a.length;i++)//length is the property of array System.out.println(a[i]); }}
خروجی:
class Testarray1{ public static void main(String args[]){ int a[]={33,3,4,5};//declaration, instantiation and initialization //printing array for(int i=0;i<a.length;i++)//length is the property of array System.out.println(a[i]); }}
پاس دادن آرایه (Array) به متد (Method)
یک آرایه را می توان به عنوان آرگومان به یک متد داد تا عملیات دلخواه بر روی آن صورت گیرد. در مثال پایین کوچکترین عدد موجود در یک آرایه را پیدا می کنیم:
مثال:
class Testarray2{ static void min(int arr[]){ int min=arr[0]; for(int i=1;i<arr.length;i++) if(min>arr[i]) min=arr[i]; System.out.println(min); } public static void main(String args[]){ int a[]={33,3,4,5}; min(a);//passing array to method }}
خروجی:
3
آرایه چندبعدی (Multidimensional Array) در جاوا
سینتکس تعریف:
dataType[][] arrayRefVar; (or) dataType [][]arrayRefVar; (or) dataType arrayRefVar[][]; (or) dataType []arrayRefVar[];
آغاز آرایه:
int[][] arr=new int[3][3];//3 row and 3 column
arr[0][0]=1; arr[0][1]=2; arr[0][2]=3; arr[1][0]=4; arr[1][1]=5; arr[1][2]=6; arr[2][0]=7; arr[2][1]=8; arr[2][2]=9;
مثال:
class Testarray3{ public static void main(String args[]){ //declaring and initializing 2D array int arr[][]={{1,2,3},{2,4,5},{4,4,5}}; //printing 2D array for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ System.out.print(arr[i][j]+" "); } System.out.println(); } }}
خروجی:
Output:1 2 3 2 4 5 4 4 5
نام کلاس آرایه جاوا چیست؟
برای بدست آوردن نام کلاس یک آرایه، یک کلاس پروکسی تعریف میکنیم و از متدهای getClass و getName استفاده می نماییم.
مثال:
class Testarray4{ public static void main(String args[]){ int arr[]={4,4,5}; Class c=arr.getClass(); String name=c.getName(); System.out.println(name); }}
خروجی:
I
کپی کردن آرایه در جاوا
می توان به کمک متد arraycopy از کلاس System یک کلاس را کپی کرد.
سینتکس:
public static void arraycopy( Object src, int srcPos,Object dest, int destPos, int length )
مثال:
class TestArrayCopyDemo { public static void main(String[] args) { char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'a', 't', 'e', 'd' }; char[] copyTo = new char[7]; System.arraycopy(copyFrom, 2, copyTo, 0, 7); System.out.println(new String(copyTo)); } }
خروجی:
caffein
در مثال زیر طرز جمع زدن دو ماتریس را می بینیم:
مثال:
class Testarray5{ public static void main(String args[]){ //creating two matrices int a[][]={{1,3,4},{3,4,5}}; int b[][]={{1,3,4},{3,4,5}}; //creating another matrix to store the sum of two matrices int c[][]=new int[2][3]; //adding and printing addition of 2 matrices for(int i=0;i<2;i++){ for(int j=0;j<3;j++){ c[i][j]=a[i][j]+b[i][j]; System.out.print(c[i][j]+" "); } System.out.println();//new line } }}
خروجی:
Output:2 6 8 6 8 10