درخواست های ارتباط
جستجو
لیست دوستان من
صندوق پیام
همه را دیدم
  • در حال دریافت لیست پیام ها
صندوق پیام
رویدادها
همه را دیدم
  • در حال دریافت لیست رویدادها
همه رویدادهای من
تخفیف های وب سایت
همه تخفیف ها

عضویت در

کانال تلگرام

توسینسو

اطلاعات مطلب
مدرس/نویسنده
مهدی عادلی فر
امتیاز: 160708
رتبه:6
163
199
299
1604
مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم. پروفایل کاربر

آموزش برنامه نویسی جاوا قسمت چهارم: معرفی مفاهیم شی گرایی در برنامه نویسی جاوا - ادامه

تاریخ 40 ماه قبل
نظرات 2
بازدیدها 2460
با سلام به همه دوستان و همراهان Itpro در ادامه مباحث زبان جاوا به بررسی شی گرایی در این زبان می پردازیم.

کلاس ها در جاوا


یک کلاس یک قالب برای اشیائی است که از آن ساخته می شود. به این معنی که کلاس مشخص می کند که شیئی که از این کلاس ساخته می شود باید چه ویژگی ها و چه رفتار هایی داشته باشد. همه اشیا از کلاس ها ساخته می شوند. در شکل زیر یک نمونه از کلاس را مشاهده می کنید.
public class Dog{
   int ageC
   String color;

   void barking(){
   }
   
   void hungry(){
   }
   
   void sleeping(){
   }
}
یک کلاس می تواند هرکدام از موارد زیر را داشته باشد.
  1. متغیر محلی: متغیری است که در داخل متدها و یا سازنده(constructor) ها و یا بلوک ها تعریف می شود. این متغیر ها در داخل متد و یا constructor و یا داخل یک بلوک کد تعریف می شوند و مورد استفاده قرار می گیرند و هنگامی که به پایان متد یا constructor رسیدیم از حافظه پاک خواهند شد.
  2. متغیر های عضو: متغیرهای نمونه متغیرهایی داخل کلاس هستند ولی داخل هیچ متد و یا بلوکی نیستند و بیرون از همه بلوک های موجود هستند. این متغیرها وقتی که از کلاس شی ساخته شد مقدار دهی می شوند. متغیرهای عضو از داخل همه ی متدها و constructor ها و بلوک های کلاس قابل دسترسی هستند.
  3. متغیر های کلاس: متغیرهایی هستند که در داخل کلاس تعریف شده اند ولی داخل هیچ متد یا بلوکی نیستند و داخل خود کلاس هستند. تفاوت این متغیر ها با متغیرهای عضو این است که این متغیر ها به صورت Static تعریف شده اند. یعنی برای تعریف آنها از به همراه نوع آنها از کلمه کلیدی static نیز استفاده شده است.
یک کلاس می تواند هر تعداد متد داشته باشد که می تواند به متغیرهای گفته شده دسترسی داشته باشد و متدهای دیگر را فراخوانی کند. در مثال بالا sleeping و hungry و barking به عنوان متد شناخته می شود. موارد مهمی که در باره ی کلاس ها وجود دارند در ادامه آورده شده اند.

Constructor


وقتی درباره ی کلاس ها بحث می شود یکی از مهمترین موضوعات در باره ی constructor ها خواهد بود. هر کلاس حداقل یک constructor دارد. اگر ما از خودمان برای کلاس یک constructor تعریف نکنیم کامپایلر جاوا به صورت پیشفرض برای کلاس یک constructor می سازد. هر وقت که یک شی جدید از کلاس ساخته می شود حداقل یکی از constructor ها فراخوانی خواهد شد. قانون اصلی برای تعریف constructor ها به این شکل است که constructorها توابعی هستند که همنام کلاس هستند و نوع بازگشتی برای آنان تعریف نمی شود. یک کلاس می تواند بیش از یک constructor داشته باشد. کد زیر یک نمونه از constructor ها را نشان می دهد.
public class Puppy{
   public Puppy(){
   }

   public Puppy(String name){
      // This constructor has one parameter, name.
   }
}

ساخت یک شی


همانگونه که قبلا نیز گفتیم یک کلاس یک قالب است و یک شی از یک کلاس ساخته می شود. در جاوا ما با استفاده از کلمه کلیدی new شی خود را از کلاس می سازیم. سه مرحله برای ساخت یک شی از کلاس وجود دارد که به شکل زیر است.
  1. تعریف متغیر در این مرحله یک متغیر را از نوع همان کلاسی که می خواهیم از آن شی بسازیم تعریف می کنیم
  2. نمونه سازی با استفاده از کلمه کلیدی new یک نمونه جدید ایجاد می شود.
  3. مقدار دهی اولیه وقتی با استفاده از کلمه کلیدی new شی جدیدی ساخته می‌شود constructor فراخوانی می‌شود و این به معنی مقداردهی شی ساخته شده است.
نمونه‌هایی از ساخت شی جدید در کد زیر آمده است.
public class Puppy{

   public Puppy(String name){
      // This constructor has one parameter, name.
      System.out.println("Passed Name is :" + name ); 
   }
   
   public static void main(String []args){
      // Following statement would create an object myPuppy
      Puppy myPuppy = new Puppy( "tommy" );
   }
}

همانطور که در کد مشاهده می‌کنید کلاسی به نام Puppy داریم که یک سازنده دارد. سازنده دارای یک آرگومان ورودی از نوع String می باشد.constructor مقدار ورودی را در صفحه چاپ می‌کند. در داخل تابع main با استفاده از کلمه کلیدی new یک شی جدید ساخته شده است و به عنوان ورودی نام tommy را برای آن قرار داده است. اگر برنامه فوق را اجرا کنیم خروجی آن به شکل زیر خواهد بود.
Passed Name is :tommy


دسترسی به متدها و متغیرهای عضو


همان گونه که گفتیم هر شی دارای متدها و متغیرهای عضو یا همان فیلد ها می باشند. که باید برای این که بتوان با اشیا کار کرد به این اعضا دسترسی داشت. برای این ه به فیلدها دسترسی داشته باشیم باید به شکل زیر عمل کنیم:
/* First create an object */
ObjectReference = new Constructor();


ObjectReference.variableName;


ObjectReference.MethodName();
طبق کد ابتدا باید یک شی جدید بسازیم سپس با استفاده از عملگر نقطه . به اعضای آن دسترسی داشت. برای مثال به مثال زیر دقت کنید.
public class ItPro {

    String url;

    public ItPro(String name){
        // This constructor has one parameter, name.
        System.out.println("Url chosen is :" + name );
    }

    public void setUrl( String webUrl ){
        url = webUrl;
    }

    public String getUrl( ){
        System.out.println("website url is :" + url);
        return url;
    }

    public static void main(String []args){
     
        ItPro webAddress = new ItPro( "tosinso.com" );

 
        webAddress.setUrl("programming.tosinso.com");

     
        webAddress.getUrl();

     
        System.out.println("Variable Value :" + webAddress.url);
    }
}
در این برنامه یک کلاس ItPro داریم که یک فیلد به نام url دارد و متدهایی به نام getUrl و setUrl دارد. که در طی برنامه از آن استفاده شده است. حال اگر کد بالا را اجرا کنیم خروجی به شکل زیر خواهد شد.
Url chosen is :tosinso.com
website url is :programming.tosinso.com
Variable Value :programming.tosinso.com

قوانین تعریف فایل های سورس


در این بخش به معرفی قوانین فایل های سورس می پردازیم:
  • در هر فایل سورس باید یک کلاس از نوع public وجود داشته باشد.
  • یک فایل سورس می تواند چند کلاس غیر public داشته باشد.
  • نام کلاس public باید با نام فایل سورس یکی باشد. پسوند فایل های سورس .java است. برای مثال در کد بالا باید نام فایل ItPro.java باشد.
  • اگر کلاس داخل یک پکیج ساخته شده باشد باید نام پکیج در خط اول فایل سورس باشد.
  • عبارات import باید بین خط پکیج و کلاس باشد. برای یک فایل سورس نمی شود که برای هر کلاس به طور جداگانه عبارت import نوشت. عبارات import برای اضافه کردن کتابخانه های مختلف به داخل برنامه به کار می روند.
کلاس چندین سطح دسترسی دارند و انواع کلاس های متفاوتی وجود دارد مانند کلاس های final و کلاس های abstract و ... که در بخش های بعدی هرکدام از این نوع ها را شرح خواهیم داد.

پکیج های جاوا

اگر بخواهیم اینترفیس ها و کلاس های جاوا را در زمان برنامه نویسی دسته بندی کنیم. در پروژه های بزرگ ممکن است که صدها کلاس در پروژه ما وجود داشته باشد که بدون دسته بندی بسیار نامنظم خواهد بود. بنابراین باید این فایل ها را با استفاده از پکیج ها دسته بندی کرد.

عبارات import


در جاوا اگر بخواهیم از کتابخانه ای استفاده کنیم باید نام کامل آن کتابخانه را به همراه همه ی پکیج ها و کلاس آن بنویسیم که ممکن است طول خط کدهای ما را بسیار طولانی کند و کدنویسی خسته کننده شود. عبارات import به ما کمک می کند که کد خود را کوتاهتر کنیم. همچنین به کامپایلر می گوید که در کدام کتابخانه باید به دنبال کلاس مربوطه بگردد. برای مثال خط کد زیر به کامپایلر می گوید که همه کلاس های قسمت java/io را لود کند. که این پوشه ها در محل نصب جاوا وجود دارد.
import java.io.*;
تا به این قسمت از مطالب به معرفی تئوری زبان جاوا پرداختیم در قسمت های بعد بیشتر وارد کد و مباحث فنی زبان جاوا خواهیم شد و مباحث گفته شده را به کار خواهیم گرفت. Itpro باشید


نویسنده: مهدی عادلی فر
منبع: انجمن تخصصی فناوری اطلاعات ایران
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.
برچسب ها
ردیف عنوان
1 آموزش برنامه نویسی جاوا قسمت اول : معرفی ویژگیها ، خصوصیات و نحوه شروع به کار با زبان برنامه نویسی جاوا
2 آموزش برنامه نویسی جاوا قسمت دوم : بررسی مفاهیم شیء ، کلاس ، Method و شروع برنامه نویسی با زبان جاوا
3 آموزش برنامه نویسی جاوا قسمت سوم: معرفی مفاهیم اولیه و مفاهیم شی گرایی در برنامه نویسی جاوا
4 آموزش برنامه نویسی جاوا قسمت چهارم: معرفی مفاهیم شی گرایی در برنامه نویسی جاوا - ادامه
5 آموزش برنامه نویسی جاوا قسمت پنجم: معرفی انواع داده ها در جاوا
6 آموزش برنامه نویسی جاوا قسمت ششم: آموزش انواع متغیر در جاوا
7 آموزش برنامه نویسی جاوا قسمت هفتم: معرفی Modifierها در جاوا
8 آموزش برنامه نویسی جاوا قسمت هشتم: معرفی و آموزش عملگرهای جاوا
9 آموزش برنامه نویسی جاوا قسمت نهم: معرفی و آموزش کار با عملگرها در جاوا - ادامه
10 آموزش برنامه نویسی جاوا قسمت دهم: کار با حلقه های تکرار در جاوا
11 آموزش برنامه نویسی جاوا قسمت یازدهم: معرفی و آموزش استفاده از عبارات شرطی در جاوا
12 آموزش برنامه نویسی جاوا قسمت دوازدهم: معرفی انواع کلاس wrapper مربوط به اعداد در جاوا و نحوه استفاده از آنها
13 آموزش برنامه نویسی جاوا قسمت سیزدهم: معرفی انواع کلاس wrapper مربوط به اعداد در جاوا و نحوه استفاده از آنها -ادمه
14 آموزش برنامه نویسی جاوا قسمت چهاردهم: معرفی و نحوه استفاده از کلاس Wrapper مربوط به کاراکتر ها در جاوا
15 آموزش برنامه نویسی جاوا قسمت پانزدهم: معرفی و آموزش نحوه استفاده از کلاس String و کار با رشته ها در جاوا
16 آموزش برنامه نویسی جاوا قسمت شانزدهم: معرفی و آموزش نحوه استفاده از کلاس String در جاوا و کار با رشته ها در جاوا ادامه
17 آموزش برنامه نویسی جاوا قسمت هفدهم: معرفی و آموزش نحوه استفاده از کلاس String در جاوا و کار با رشته ها در جاوا-ادامه 2
18 آموزش برنامه نویسی جاوا قسمت هجدهم: معرفی و آموزش نحوه استفاده از کلاس String در جاوا و کار با رشته ها در جاوا-ادامه 3
19 آموزش برنامه نویسی جاوا قسمت نوزدهم: معرفی و آموزش نحوه استفاده از کلاس های StringBuilder و StringBuffer
20 آموزش برنامه نویسی جاوا قسمت بیستم: معرفی و آموزش نحوه استفاده از آرایه ها
21 آموزش برنامه نویسی جاوا قسمت بیست و یکم: آموزش کار با تاریخ
22 آموزش برنامه نویسی جاوا قسمت بیست و دوم: معرفی و آموزش عبارات منظم(Regular expression)
23 آموزش برنامه نویسی جاوا قسمت بیست و سوم: نحوه تعریف و استفاده از متدها
24 آموزش برنامه نویسی جاوا قسمت بیست و چهارم: نحوه تعریف و استفاده از متدها- ادامه
25 آموزش برنامه نویسی جاوا قسمت بیست و پنجم: نحوه کار با استریم ها و فایل ها
26 آموزش برنامه نویسی جاوا قسمت بیست و ششم: نحوه کار با دایرکتوری ها
27 آموزش برنامه نویسی جاوا قسمت بیست و هفتم: معرفی و آموزش کلاس ByteArrayInputStream و کار با استریم ها
28 آموزش برنامه نویسی جاوا قسمت بیست و هشتم: معرفی کلاس File و شرح متدهای آن
29 آموزش برنامه نویسی جاوا قسمت بیست و نهم: معرفی و شرح Exception ها
30 آموزش برنامه نویسی جاوا قسمت سی ام: معرفی و شرح Exception ها- ادامه
31 آموزش برنامه نویسی جاوا قسمت سی و یکم: معرفی و شرح Exception ها- ادامه 2
32 آموزش برنامه نویسی جاوا قسمت سی و دوم: معرفی و شرح استفاده از انوع کلاس های داخلی
33 آموزش برنامه نویسی جاوا قسمت سی و سوم: شرح وراثت کلاس ها و انواع آن
34 آموزش برنامه نویسی جاوا قسمت سی و چهارم: معرفی و شرح override کردن متد ها
35 آموزش برنامه نویسی جاوا قسمت سی و پنجم: معرفی و شرح چند ریختی (polymorphism)
36 آموزش برنامه نویسی جاوا قسمت سی و ششم: شرح enum و ویژگی های آن
37 آموزش برنامه نویسی جاوا قسمت سی و هفتم: معرفی و شرح abstract
38 آموزش برنامه نویسی جاوا قسمت سی و هشتم: معرفی و آموزش نحوه استفاده از کپسول بندی (encapsulation)
39 آموزش برنامه نویسی جاوا قسمت سی و نهم: معرفی و آموزش نحوه استفاده از اینترفیس ها
40 آموزش برنامه نویسی جاوا قسمت چهلم: معرفی مفهوم پکیج(package) و نحوه استفاده از آن
41 آموزش برنامه نویسی جاوا قسمت چهل و یکم: معرفی داده ساختارها - Enumeration
42 آموزش برنامه نویسی جاوا قسمت چهل و دوم: داده ساختار BitSet
43 آموزش برنامه نویسی جاوا قسمت چهل و سوم: داده ساختار Vector
44 آموزش برنامه نویسی جاوا قسمت چهل و چهارم: داده ساختار Stack(پشته)
45 آموزش برنامه نویسی جاوا قسمت چهل و پنجم: داده ساختار dictionary
46 آموزش برنامه نویسی جاوا قسمت چهل و ششم: داده ساختار Hashtable
47 آموزش برنامه نویسی جاوا قسمت چهل و هفتم: داده ساختار properites
48 آموزش برنامه نویسی جاوا قسمت چهل و هشتم: معرفی و آموزش مفهوم جنریک
49 آموزش برنامه نویسی جاوا قسمت چهل و نهم: معرفی و آموزش برنامه نویسی سوکت و شبکه سمت سرور
50 آموزش برنامه نویسی جاوا قسمت پنجاهم: معرفی و آموزش برنامه نویسی سوکت و شبکه- سمت کلاینت و ارتباط با یکدیگر
51 آموزش برنامه نویسی جاوا قسمت پنجاه و یکم: معرفی و آموزش استفاده از lambda expression
52 آموزش برنامه نویسی جاوا قسمت پنجاه و دوم:‌ معرفی مفاهیم Thread ها و Multi-Threading
53 آموزش برنامه نویسی جاوا قسمت پنجاه و سوم: معرفی و آموزشRunnable در Thread ها و Multi-Threading
54 آموزش برنامه نویسی جاوا قسمت پنجاه و چهارم: کلاس Thread و کار کردن با متدهای این کلاس
دوره مجموعه کل دوره
مطالب مرتبط

در حال دریافت اطلاعات

نظرات
  • ممنونم فقط کاش کمی درباره تفاوت method و constructor بیشتر توضیح می دادید ... و کلیه خطهای فرمان مثل جلسات قبل کامل توضیح داده میشد ... سپاس ...
  • خیلی ممنون به خاطر آموزشتون . عالی بود .

برای ارسال نظر ابتدا به سایت وارد شوید