برنامه نویسیجاوا

آموزش زبان برنامه نویسی جاوا – جلسه ششم

مجله اینترنتی آی تی پورت | ITport

درود به همه همراهان آی تی پورت. متاسفانه در جلسه ششم با کمی تاخیر خدمت شما رسیدیم. دلیل این امر وجود پروژهای دانشگاه است، که کمتر وقت آزاد جهت تهیه آموزش به دست می آوریم. در آموزش های قبلی به مباحث  انواع متغییر ها ، انواع عملگر ، ساختارهای کنترلی ، آرایه ها ، برنامه نویسی شی گرایی و در بخش شی گرایی  به متدها ، خصوصیات ، Package و Object  سازی و متد سازنده شی گرایی  پرداختیم. در جلسه پنجم آموزش جاوا  در ادامه بحث شی گرایی به مباحث  ارث‌بری و دستور super، سطح‌های دسترسی، کلاس انتزاعی و متد انتزاعی و … پرداختیم. در این جلسه به مباحث نحوه تعریف نام، تبدیل داده ها به یکدیگر و معرفی چند متد می پردازیم. اما بریم برای شروع آموزش.

اصول تعریف نام

برای نام‌گذاری نیاز است گروهی از قواعد را رعایت کنیم مثلاً نام‌گذاری کلاس با نام‌گذاری متد فرق دارد، این قواعد اجباری نیست اما بهتر است از این قواعد تابعیت کرد. برای نام‌گذاری کلاس باید حرف اول کلاس بزرگ باشد، و اگر کلاس کلمه دیگری نیز داشته باشد باید حرف اول آن کلمه نیز بزرگ باشد. مثال :

class Amir

و یا

class AmirBahador

قواعد اجباری {به یاد داشته باشید که در جاوا نام فایل جاوا با نام کلاس تعریف شده در فایل باید یکی باشد (حتی از لحاظ بزرگی و کوچکی حروف)، در جاوا تنها یک کلاس می توان در یک فایل تعریف کرد، مگر کلاس ثانویه به صورت درونی در کلاس اصلی تعریف گردد. پسوند فایل های جاوا قبل از ترجمه .java است و بعد از ترجمه فایلی با پسوند .class از آن ایجاد می شود، نام پکیج مشخص شده در سورس کد با نام پوشه که فایل در آنجا موجود است باید یکی باشد.}برای نام‌گذاری متد باید حرف اول کوچک باشد، و اگر متد کلمه دیگری نیز داشته باشد باید حرف اول آن کلمه بزرگ باشد. مثال :

void send()

و یا

void sendEmail()

و یا

void sendEmailToAmir()

برای نام‌گذاری متغیر باید تمامی حروف متغیر کوچک باشد و جدا سازی کلمات بوسیله “_” انجام می‌شود.به عنوان مثال :

int age

ویا

int age_of_amir

برای نامگذاری package نیز باید تمامی حروف کوچک باشد.

تبدیل انواع داده به یکدیگر

در بسیاری موارد لازم است تا داده ای به نوع دیگر داده تبدیل شود، فرض کنید لازم است تا مقدار یک رشته با یک عدد جمع ریاضی شود در این شرایط می توان به شکل ذیل عمل کرد.

 

String a=”۱۲”;



int b = Integer.parseInt(a);



int c = b+2;



 

در این شرایط مقدار رشته ای ۱۲  به مقدار عددی ۱۲ تبدیل سپس با عدد ۲ جمع و حاصل درون متغیر c ریخته خواهد شد.در مثال قبل داده رشته ای تبدیل به داده عددی شده است، برای تبدیل داده عددی به رشته ای کافیست تا داده ی عددی را با “” جمع ببندیم.

int i = 12;



String j = i+””;

 

متد های کلاس String

کلاس String دارای متد های گوناگونی است، در این قسمت به بعضی از این متد ها اشاره شده است.

متد trim: این متد فاصله های ابتدا و انتهای رشته را حذف و مقدار رشته ای را باز می گرداند.

متد equals: این متد یک پارامتر دریافت و بررسی می کند که آیا مقدار رشته با مقدار پارامتر ورودی برابر است یا خیر (خروجی این متد یا صحیح و یا نا صحیح است)

متد indexOf: این متد یک پارامتر ورودی دریافت سپس درون رشته مورد نظر بدنبال مقدار پارامتر ورودی گشته و جایگاه اولین موجودی را به صورت عددی باز می گرداند.

متد length: این متد طول رشته را به صورت عددی باز می گرداند.

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

متد replaceAll: این متد دو پارامتر ورودی دریافت، سپس در رشته مورد نظر تمامی مقادیر برابر با پارامتر ورودی اول را به مقدار پارمتر ورودی دوم تغییر می دهد.

متد substring: این متد دو پارامتر ورودی به شکل عددی دریافت، سپس رشته را نسبت به  نقاط مشخص شده جدا کرده و مقدار را به صورت رشته ای باز می گرداند.

متد های toUpperCase و toLowerCase: تمامی حروف رشته مورد نظر را به حروف بزرگ و یا کوچک تغییر خواهند داد.

 

Generic ها

در بسیاری از مواقع لازم است تا نوع خصوصیات یک کلاس به صورت داینامیک تغیر نماید در این صورت باید از مبحث Generic استفاده کرد، به مثال ذیل توجه کنید.

class Amirsam <noe> {



noe data;



public noe getData() {



return data;



}



 



public void setData(noe data) {



this.data = data;



}



 



public static void main(String[] args) {



Amirsam <String> amirsam = new Amirsam<String>();



amirsam.setData("12");



System.out.println(amirsam.getData()+2);



}



}



همانطور که حدث زده اید خروجی برنامه فوق ۱۲۲ است دلیل این امر آن است که در زمان شی سازی مقدار noe را String مشخص کرده ایم در این حالت نوع متغیر data از نوع String تعریف می شود، حال به مثال ذیل توجه کنید:

class Amirsam <noe> {



noe data;



public noe getData() {



return data;



}



 



public void setData(noe data) {



this.data = data;



}



 



public static void main(String[] args) {



Amirsam <Integer> amirsam = new Amirsam<Integer>();



amirsam.setData(12);



System.out.println(amirsam.getData()+2);



}



}



همانطور که حدث زده اید خروجی برنامه فوق ۱۲۲ است دلیل این امر آن است که در زمان شی سازی مقدار noe را Integer مشخص کرده ایم در این حالت نوع متغیر data از نوع Integer تعریف می شود.

 

کلاس Object

گهگاه نیاز است تا اشیا خود را درون یک شی عمومی ذخیره کنیم برای اینکار میتوان از کلاس Object استفاده کرد به مثال ذیل دقت کنید:

class Amirsam {



public static void main(String[] args) {



Object amir = new Amirsam();



}



}



 

همانطور که مشاهده می کنید شی جدید را درون amir که از نوع Object است ذخیره کرده ایم، تمامی اشیا را در درون شی Object می توان ذخیره کرد، حال به مثال ذیل دقت کنید:

class Amirsam {



public static void main(String[] args) {



Object amir = new Amirsam();



Amirsam x = (Amirsam) amir;



}



}

همانطور که مشاهده می کنید شی amir که از نوع Object است را نمی توان به صورت مستقیم در درون x که از نوع Amirsam است ذخیره کنیم، برای اینکار باید اول شی amir تبدیل به نوع Amirsam شود، برای اینکار از دستور (Amirsam) باید استفاده کنیم. به این عمل casting گویند!

 

Annotation ها

گهگاه نیاز است تا توضیحاتی در سطح برنامه نوشته شود و از این توضیحات در روند اجرای برنامه استفاده نمود. برای اینکار می توان از Annotation ها استفاده نمود.

@Retention(RetentionPolicy.RUNTIME)



@interface Check {



public String checkerName() default "Nadarad";



public boolean status() default false;



}



در این حالت نیاز است تا ما توضیحات را قاعده مند کنیم، در مثال بالا یک توضیح به نام Check ایجاد کرده ایم که این چک دارای دو خصوصیت checkerName و status می باشد مقدار پیش فرض این خصوصیات به ترتیب Nadarad و false می باشد.

@Check(checkerName = "RezaAmini", status = true)



class Amirsam {



public static void main(String[] args) {



 



Annotation[] annotations = Amirsam.class.getAnnotations();



 



if (annotations[0].toString().equals("@test.controller.Check(status=true, checkerName=RezaAmini)")) {



System.out.println("in class tavasote aghaye RezaAmini check shode ast");



 



 



} else {



 



System.out.println("in class check nashode ast!");



 



}



}



}



در این حالت خروجی برنامه in class tavasote aghaye RezaAmini check shode ast خواهد بود.

@Check(checkerName = "RezaAmini", status = false)



class Amirsam {



public static void main(String[] args) {



 



Annotation[] annotations = Amirsam.class.getAnnotations();



 



if (annotations[0].toString().equals("@test.controller.Check(status=true, checkerName=RezaAmini)")) {



System.out.println("in class tavasote aghaye RezaAmini check shode ast");



 



 



} else {



 



System.out.println("in class check nashode ast!");



 



}



}



}



حال اگر مقدار status را همانند مثال بالا به false تغیر دهیم خروجی برنامه in class check nashode ast خواهد بود.

 

ویرایش های زبان برنامه نویسی جاوا

حال که با هسته اصلی اولیه زبان جاوا آشنا شدید باید بدانید که این زبان دارای ویرایش های متعددی می باشد:

  • ویرایش J2SE برای پیاده سازی برنامه های کاربردی کنسولی و دسکتاپی.
  • ویرایش J2EE برای پیاده سازی برنامه های سازمانی و تحت وب/وپ.
  • ویرایش J2ME برای پیاده سازی برنامه های کاربردی موبایل و ابزار های الکترونیکی.
  • ویرایش Android برای پیاده سازی برنامه های کاربردی بر روی سیستم عامل آندروید. (البته این ویرایش متعلق به شرکت Google می باشد)
  • ویرایش JavaCard برای پیاده سازی برنامه های کاربردی کارت های هوشمند.

در حال حاضر شرکت Oracle شرکت Sun را خریداری کرده است پس برای کسب اطلاعات بیشتر به سایت شرکت Oracle مراجعه فرمائید.

 

گفتگو ها
    ali

    سلام

    واقعا دستتون درد نکنه.مرسی ازآموزشتون.فقط اگه میشه جلسه هفتمشم زودتر بذارین تو سایت!!!!!!!!!!

      حسین جاهدی

      خواهش می کنم

      ممنون از شما

      ولی متاسفانه تا پایان ترم امکان ارسال بخش جدید وجود ندارد.

        ali

        سلام آقا حسین. ۶ ماه آز آخرین آموزش جاوا گذشت ولی هنوز شروع نکردید!

          حسین جاهدی

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

    تشکر عالی بود

    روح الله بلوردی

    جالب بود ممنون 🙂

    میلاد

    سلام

    با تشکر از شما

    آقا تو آموزش جاوا چرا کسی روش ایجاد یک پروژه جدید رو آموزش نمیده ؟؟؟! همه بلافاصله میرن سر اصل مطلب که دستورات شرطی چین و یه helloword مینویسن و … از این جور مسائل ! بعدش کسی حتی یه برنامه ساده مثل طریقه گرفتن عدد از ورودی یا مثلا برنامه تشخیص عدد اول با جاوا و همین چیزهایی که توی سی و سی پلاس پلاس یاد گرفتیمو یاد نمیده اصلا!!! بنظر من نه کتاب درست حسابی برای آموزش جاوا توی اینترنت گیر میاد نه ویدیوی خوب و کارآمدی !

      حسین جاهدی

      سلام
      چرا شما کمی در سایت جستجو نمی کنید؟ مگر نمی بینید که آموزش ششم هست خوب پس باید برید سمت جلسه اول و دوم دیگه 😀
      جلسه اول: http://www.itport.ir/1392/05/28/java-training-session-1/
      جلسه دوم: http://www.itport.ir/1392/06/05/java-training-session-2/
      جلسه سوم: http://www.itport.ir/1392/07/18/java-training-session-3/
      چند نکته که باید در مورد جاوا بدونید این هست که جاوا زبان برنامه نویسی نیست که خواسته باشید برنامه مهدکودک یا برنامه های سطح پایین باهش بنویسید. به همین دلیل هیچ کس در دنیا نمیاد همچین برنامه های رو با جاوا پیاده سازی کنه.
      جاوا در پروژه های استفاده میشه که قیمتش حداقل ۵۰ الی ۱۰۰ میلیون هست. درضمن میشه گفت سخت ترین زبان برنامه نویسی هست ولی یکی از قدرتمندترین ها
      برای مثال ناسا میاد از جاوا استفاده می کنی یا در ایران هسته بانک رو با جاوا می نویسند یا ایرانسل در برخی از پروژه هاش که می تونه پولش رو بده استفاده میشه.
      پس دنبال این نباش که با جاوا بخوای عدد اول رو شناسایی کنی.
      برای یادگیرش هم حتما باید با یک مدرس در ارتباط باشی چرا که خیلی سخت هست و خیلی سوال برات در طی آموزش پیش میاد که باید کی حرفه ای پاسخش رو بده تا در آینده یک فرد موفق باشی.

    فاطیما

    سلام

    آموزش هاتون عالی ولی چرا ادامه نداره؟!!!!!!!!!!

    مهمان

    ممنون از شما

    حسین

    برای نامگذاری package اگر بیش از یک کلمه داشتیم بین آن ها را _ می گذاریم یا فاصله می دهیم یا کلمات را بهم چسبیده می نویسیم؟

    محمد

    جناب استاد جاهدی عزیز بابت آموزشای بی دریغ تون ازتون تشکر میکنم ومنتظر آموزشای بعدیتون هستم.

    پیروز و موفق باشید.

    hameed

    سلام خستە نباشید

    چطوری میشە با برنامەی جاوا اکانت ویندوز درست کرد

    مثل درست کردن فلدر

    مثلا

    واسە درست کردن فلدر

    import java.io.*;

    public class Test {

    public static void main(String[] args) {

    File myFile=new File(“D:\\Test”);

    if(!myFile.exists()){

    if(myFile.mkdir())

    System.out.println(“Folder Created”);

    }

    else

    System.out.println(“This name is exist”);

    }

    }

    مطالب آموزشیتون خیلی خوبه !

    ممنون

    مطالب آموزشیتون خیلی خوبه

    ممنون