آموزش برنامه نویسی اندروید

saalek110

Well-Known Member
JavaScript:
           int[][] myNumbers = { {111, 222, 333, 444}, {555, 666, 777} };
            for (int i = 0; i < myNumbers.length; ++i) {
              for(int j = 0; j < myNumbers[i].length; ++j) {
                System.out.println(myNumbers[i][j]);
              }
            }
چاپ همه اعضای آرایه با حلقه تودرتوی for.
b1.jpg
 

saalek110

Well-Known Member
خطای زمان اجرا:
اگر شما کد را بعد بنویسید خوب از شما خطا گرفته میشه.
ولی گاهی کد درست است ولی موقع اجرا خطا ایجاد می شود.کد زیر را ببینید:
JavaScript:
    int[] myNumbers = {1, 2, 3};
    System.out.println(myNumbers[10]); // error!
آرایه 3 عضو دارد ولی ما عضو یازدهم را می خواهیم چاپ کنیم. این عضو وجود ندارد.و خطای زمان اجرا اتفاق خواهد افتاد.
d1.jpg
 

saalek110

Well-Known Member
JavaScript:
public class MyClass {
  public static void main(String[] args) {
    System.out.println("Hello World");
    System.out.println("How are you?");
  
    try {
        int[] myNumbers = {1, 2, 3};
        System.out.println(myNumbers[10]);
      } catch (Exception e) {
        System.out.println("Something went wrong.");
      }
   
    System.out.println("continue");
    }
  }
d5.jpg
قالب try و catch را میشه تلاش و (اگرنشد) خوند. سعی خودش را برای انجام کاری می کند و اگر نشد یک کارهای دیگر می کند.
یکی از رایج ترین خطاهای زمان اجرا باز کردن یک فایل است. خوب ممکنه فایل موجود نباشد یا بازکردنش میسر نباشد.
هر جا احتمال خطای زمان اجرا هست باید از این قالب استفاده کرد.
 

saalek110

Well-Known Member
خوب کدنویسی تمام شد.
حالا می رسیم به بررسی فایل و کلاس و دسترسی ها و توارث و مسایلی از این قبیل.

h22.jpg
 

saalek110

Well-Known Member
Method:
متد یا تابع یا فانکشن مقداری کد است که اگر تابع را صدا بزنیم اون کدها اجرا میشه.
یک تابع می تواند ورودی داشته باشد که موقع صدا زدنش اون ها بهش ارسال می شود. که پارامتر هم بهش می گویند.
چرا تابع می سازیم؟
چون از یک کد می توانیم در خیلی جاها استفاده کنیم.
برای ساخت یک تابع یک کلاس هم نیاز است تا اون را در بر بگیرد.
JavaScript:
public class MyClass {
  static void myMethod() {
    // code to be executed
  }
}
در کد بالا کلمه استاتیک استفاده شده که بعدا روی آن بحث می کنیم.
کلمه void یعنی تابع myMethod خروجی برنمی گرداند.
بعضی تابع ها خروجی هم برمی گردانند ولی بعضی خروجی ندارند.

کد زیر را ببینید:
JavaScript:
public class MyClass {
  
  
      static void myMethod() {
            System.out.println("I am your function.");
          }
  
  
  public static void main(String[] args) {
    System.out.println("Hello World");
  
    myMethod();
  
    System.out.println("near end");
    }
  }
تابعی ساختیم که داخل کلاس خودمان است. داخل تابع main اون را صدا زدیم.
g1.jpg
در اینجا توابع را به شهرها تشبیه می کنیم و کلاس را به کشور تشبیه می کنیم.
تابع main پایتخت است. دستورات از اونجا آغاز می شود.
 

saalek110

Well-Known Member
h50.jpg
در اینجا 3 بار متوالی تابع را فواخوانی کرده. شاید اینجا کار عبتی به نظر برسد ولی فرض کنید تابع ورودی داشته باشد. مثلا تابع توان عدد ورودی را به توان 2 رسانده و برمی گرداند. و شما دارید
1
4
9
16
یعنی با ورودی های 1 و 2 و 3 و 4 خروجی های 1 و 4 و 9 و 16 داریم.
 

saalek110

Well-Known Member
تابع این مثال ورودی از نوع رشته دارد
و ورودی را با یک رشته از خودش مخلوط کرده چاپ می کند.
m60.jpg

و تابع زیر هم ورودی دارد هم خروجی:
m70.jpg

ph1.jpg

h88.jpg
 
آخرین ویرایش:

saalek110

Well-Known Member
JavaScript:
public class MyClass {
  static int myMethod(int x, int y) {
    return x + y;
  }

  public static void main(String[] args) {
    System.out.println(myMethod(5, 3));
  }
}
// Outputs 8 (5 + 3)
تابع ما در اینجا دو ورودی خود را جمع زده به عنوان خروجی می فرستد.
 

saalek110

Well-Known Member
JavaScript:
public class MyClass {
  static int myMethod(int x, int y) {
    return x + y;
  }

  public static void main(String[] args) {
    int z = myMethod(5, 3);
    System.out.println(z);
  }
}
// Outputs 8 (5 + 3)
میشه خروجی را در یک متغیر ریخت.
 

saalek110

Well-Known Member
فایل جاوای دیگری به پروژه خود بیافزایید.a31.jpg
نامش را second.java گذاشتم.a66.jpg
حالا پروژه دو فایل جاوا دارد.
c55.jpg
قبلا گفتم تابع را شهر در نظر بگیرید و کلاس را کشور. حالا دو کشور داریم.
سوال : چگونه از کدهای فایل جاوای دوم استفاده کنیم؟

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

saalek110

Well-Known Member
ساده ترین حالت:
کد فایل دوم یا کلاس دوم این است:
JavaScript:
public class second {
  int x = 5;
}
d1.jpg
کد فایل اول چنین است:
JavaScript:
public class MyClass {
  public static void main(String[] args) {
    System.out.println("Hello World");

    second myObj = new second();
    System.out.println(myObj.x); // 5


    }
  }
d3.jpg

d4.jpg
 
آخرین ویرایش:

saalek110

Well-Known Member
کلاس موجود در فایل دوم یک قالب است. می شود بی نهایت شی ازش ساخت.
d5.jpg
فرض کنید کلاس person را بسازیم و از روی آن آدمهای زیادی بسازیم.
یا کلاس car بسازیم و ماشین های مختلفی از این قالب بسازیم.

یا مثل نقشه ساختمان می ماند. از روی یک نقشه میشه صدها خانه ساخت.
d6.jpg

البته ممکنه شما تغییراتی در نقشه اولیه بدهید ولی طرح کلی را از همون نقشه گرفتید.
 
آخرین ویرایش:

saalek110

Well-Known Member
JavaScript:
public class MyClass {   
  public static void main(String[] args) {
    System.out.println("Hello World");
   
    second myObj = new second();
    myObj.x=40;
    System.out.println(myObj.x); //40
    
    }
  }
در کد بالا بعد خلق شی متغیر x آن را مقدار دهی کرده ایم.
کلاس موجود در فایل دوم تغییر نکرده و همون کلاس پست های قبلی است.
 

saalek110

Well-Known Member
در کد زیر خطا دریافت کرده ایم چون متغیر که final بوده را خواستیم تغییر دهیم:
o1.jpg

نوع متغیر final برای وقتی خوبه که نخواهیم عدد متغیری تغییر کند مثل عدد پی. 3.14
 

saalek110

Well-Known Member
پس تا اینجا یاد گرفتیم یک شی از کلاس خلق بکنیم.
گاهی می توانستیم متغیر شی را مقدار دهی کنیم
و گاهی نمی توانستیم متغیر شی را مقدار دهی کنیم.

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

saalek110

Well-Known Member
متد استاتیک static :

JavaScript:
public class second {
      static void myMethod() {
            System.out.println("Hello World from second file!");
          }
}
کلاس فایل دوم ما دارای تابعی استاتیک است.
JavaScript:
public class MyClass {   
  public static void main(String[] args) {
    System.out.println("Hello World");
   
    second.myMethod();
    
    }
  }
در کد بالا می بینید ما شی خلق نکردیم و فقط با گفتن اینکه متد در کلاس دوم است ازش استفاده کردیم!
نتیجه اجرا:
Hello World
Hello World from second file!
چون تابع از نوع استاتیک static است میشه بی خلق شی ازش استفاده کرد.
 

saalek110

Well-Known Member
Static or Public
توابع پابلیک را بعد خلق شی میشه استفاده کرد
ولی توابع استاتیک را میشه با اسمش و نام کلاسش استفاده کرد.
سئوال اینجاست که موارد کاربرد هر یک کجاست؟
در کد زیر کلاس فایل دوم ما الان دو متد دارد. یکی استاتیک و یکی پابلیک:
کد:
public class second {
      // Static method
      static void myStaticMethod() {
        System.out.println("Static methods can be called without creating objects");
      }

      // Public method
      public void myPublicMethod() {
        System.out.println("Public methods must be called by creating objects");
      }
}
و در کد زیر در تابع main هر دو تابع را فراخوانده ایم ولی هر یک را با روش خودش:
JavaScript:
public class MyClass {   
  public static void main(String[] args) {
    System.out.println("Hello World");
   
    second.myStaticMethod(); // Call the static method
     //second.myPublicMethod(); This would compile an error

    second myObj = new second(); // Create an object of MyClass
    myObj.myPublicMethod(); // Call the public method on the object
    
    }
  }
نتیجه اجرا:
Hello World
Static methods can be called without creating objects
Public methods must be called by creating objects
 

saalek110

Well-Known Member
ادامه داستان و توسعه:
ممکن است کلاس فایل دوم توابع public متعددی داشته باشد. و بعضی از اونها ورودی هم بگیرن.
ممکن است کلاس فایل دوم شما متغیرهای متعددی هم داشته باشد و انواع مختلفی داشته باشد این متغیرها. مثلا نوع متغیر final را دیدیم نمیشه تغییر داد.
 

saalek110

Well-Known Member
در کلاس فایل اول هم میشه متدهایی اضافه کرد و از نوع پابلیک و استاتیک انتخاب کرد.
متدهای استاتیک کلاس فایل فعلی را دیگه لازم نیست قبل اسمشون نام کلاس را بگی. چون همین کلاس فعلی است.
JavaScript:
// Create a Car class
public class Car {
  // Create a fullThrottle() method
  public void fullThrottle() {
    System.out.println("The car is going as fast as it can!");
  }

  // Create a speed() method and add a parameter
  public void speed(int maxSpeed) {
    System.out.println("Max speed is: " + maxSpeed);
  }

  // Inside main, call the methods on the myCar object
  public static void main(String[] args) {
    Car myCar = new Car();     // Create a myCar object
    myCar.fullThrottle();      // Call the fullThrottle() method
    myCar.speed(200);          // Call the speed() method
  }
}

// The car is going as fast as it can!
// Max speed is: 200
منبع: Java Class Methods
دو متد پابیلک داریم در کلاس و با main میشه 3 متد.
یک شی به نام myCar ساختیم و دو تابع public را به این شیوه فراخواندیم.
یکی از متدها ورودی عدد صحیح می گیره و اونو چاپ می کند.
 

جدیدترین ارسال ها

بالا