تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 2 12 آخرآخر
نمايش نتايج 1 به 10 از 11

نام تاپيک: آموزش برنامه نویسی اندروید - سری اول

  1. #1
    داره خودمونی میشه uncocoder's Avatar
    تاريخ عضويت
    Mar 2011
    محل سكونت
    تهران - شهرآرا
    پست ها
    21

    پيش فرض آموزش برنامه نویسی اندروید - سری اول

    منبع این مطلب [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] است.
    در ویرایش مطالب سعی شده، تمامی کدها، جداول و جزئیات نوشتار، رعایت گردد. اما چنانچه ضعف هایی در مطالعه آن دیدید، می توانید از منبع اصلی هم استفاده نمایید.
    چنانچه پرسشی در خصوص آموزشها در ذهن شماست، لطفاً آنرا در سایت [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مطرح نمایید تا مورد استفاده مشترک کاربران هر دو سایت قرار گیرد.
    لطفاً با حمایت خود از این مطالب در سایت منبع، باعث ایجاد انگیزه مضاعف در به اتمام رسانیدن این آموزشها باشید.


    مقدمه و توافق نامه:

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

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

    در مورد ارسال نظرات خواهشمندم که از نوشتن نظرات جنجال برانگیز و جوساز جداً خودداری فرمائید. دوستانی که این مباحث برایشان جالب نیست یا احساسی خوبی از خواندن مطالب ندارند، لطفاً به این مطلب مراجعه نکنند تا باعث رنجش خود و سایرین نگردند.

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

    مسلم است که برنامه نویسی اندروید، فقط با مطالعه این مطالب ممکن نخواهد بود و به مطالعه آزاد و گسترده خود شما نیازمند است. همینطور علاقه، انگیزه، پشتکار و سرعت عمل می تواند مسیر را برای شما شیرینتر و ساده تر کند. صرف زمان حدود 6 ساعت در روز برای علاقه مندان توصیه می شود و در شرایطی وقت آزاد دارید، مطالعه و تمرین حتی تا 13 ساعت در طول شبانه روز ممکن خواهد بود ( البته کم کم باید به ذهن و بدن خود عادت بدهید و یکباره ساعت کار خود را افزایش ندهید ).

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

    کپی رایت این مطالب برای نویسنده مطلب محفوظ بوده. عدم رعایت حقوق نویسنده، خلاف اصول اخلاقی و حرفه ای می باشد.


    پیشاپیش از توجه شما به نکات فوق سپاسگزارم
    بهنام آقاجانی

  2. 2 کاربر از uncocoder بخاطر این مطلب مفید تشکر کرده اند


  3. #2
    داره خودمونی میشه uncocoder's Avatar
    تاريخ عضويت
    Mar 2011
    محل سكونت
    تهران - شهرآرا
    پست ها
    21

    پيش فرض

    منبع این مطلب [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] است.
    در ویرایش مطالب سعی شده، تمامی کدها، جداول و جزئیات نوشتار، رعایت گردد. اما چنانچه ضعف هایی در مطالعه آن دیدید، می توانید از منبع اصلی هم استفاده نمایید.
    چنانچه پرسشی در خصوص آموزشها در ذهن شماست، لطفاً آنرا در سایت [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مطرح نمایید تا مورد استفاده مشترک کاربران هر دو سایت قرار گیرد.
    لطفاً با حمایت خود از این مطالب در سایت منبع، باعث ایجاد انگیزه مضاعف در به اتمام رسانیدن این آموزشها باشید.


    روش مطالعه:

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

    هر دوره آموزشی را در چندین مرور بخوانید.

    - بار اول سریع و بدون توجه به جزئیات مطالعه کنید. کدها و تصاویر را خیلی سطحی نگاه کنید، نیاز نیست آنها را در برنامه بنویسید و آزمایش کنید، فقط نگاه کنید و بدنبال علل و چگونگی نوشتار نباشید. در این مرحله اگر 10% از کل مطلب را متوجه شوید کفایت می کند.
    - بار دوم، دقیقتر به مطالب توجه کنید. از لینک های کمکی که با * مشخص شده اند جهت کسب راهنمایی بیشتر استفاده کنید. باز هم نیاز به نوشتن کدها و برنامه نیست اما با دقت بیشتری کدها را بررسی کنید و سعی کنید عملکرد کدها را حدث بزنید. در این بار مرور اگر 20% دیگر از مطالب را متوجه شوید کفایت می کند.
    - بار سوم، دقیقتر از بار دوم مطالب را مطالعه کنید. در این مرحله با نوشتن بعضی نکات، رسم نمودارها، رسم چارت های مطالعه و ... می تواند کمک بیشتری به شما بکند. کدها را بنویسید و بررسی کنید اما نه خیلی دقیق بلکه سطحی. در این بار مرور اگر 20% دیگر مطالب برای شما آشکار شود کفایت می کند.
    - بار چهارم، سعی کنید مطالب را با کدهای نوشته شده تطبیق دهید و هر تعریف تئوری را در کد پیدا کنید و کاربرد آنرا ببینید. در این مرحله انتظار می رود حدود 80% از کل مطلب را دریافته باشید. این مرحله می تواند بیشترین زمان را از شما بگیرد.
    - بار پنجم، به توصیه ها عمل کرده تا بتوانید 100% مطالب بیان شده را بکار ببرید. سرعت اتمام این مرحله به تمرین و توانایی های قبلی شما بستگی دارد و شاید کوتاهتر از مرحله چهارم باشد، شاید هم بیشتر از مرحله چهارم به طول انجامد ولی سعی کنید به تمام توصیه های نوشته شده در انتهای مطلب عمل کنید.

    پیشنهاد می شود هر روز بیش از 6 ساعت برای برنامه نویسی وقت بگذارید.

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

    هر دوره به طور معمول حدود 3 تا 7 روز نیاز به کار دارد و بستگی به ساعتی است که در روز صرف انجام تمرینات و مرور ها می نمایید.

    از لینک های * دار در حدی استفاده نمایید که فقط بدانید چیست و در صورت داشتن وقت بیشتر آنرا بیشتر مطالعه کنید.

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

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

    مطالب را به دلخواه خود، رد نکنید و آنها را به ترتیب بخوانید، مگر اینکه در مطلبی ذکر شده باشد که مطالعه آن دلخواه است.

    جلسه اول آموزش دارای تعداد زیادی از اصطلاحات و واژه های معمولاً نا آشناست. بیشتر وقت شما در این جلسه صرف فهمیدن این واژه ها می شود که جهت ادامه کار به شما کمک زیادی خواهد کرد. بدانید که این واژه ها در بین برنامه نویس ها مصطلح است و دانستن آن در آینده ضروری خواهد بود و در اوایل کار کمک کننده.

    کتاب خاصی برای مطالعات اضافه پیشنهاد نمی شود و اکیداً توصیه می شود که خود را به یک کتاب محدود نکنید. می توانید انواع کتب را از سایتهایی که به طور غیر مجاز کتابهای غیر رایگان را برای دانلود می گذارند دانلود کنید و هر بار که در مورد مطلبی سئوال دارید به سرفصل اکثر آنها مراجعه و بهترین گزینه را برای مطالعه انتخاب کنید. هیچ کتابی در ارائه همه مطالب قوی نیست و هر کدام برای زمان و شرایط خاصی مناسب هستند. اما توصیه بهتر اینست که سئوالات خود را مستقیماً از گوگل درخواست کنید. با یک search keyword مناسب در گوگل بسیار بسیار سریعتر به مطالب آموزشی دست پیدا خواهید کرد.


    با آرزوی موفقیت
    بهنام آقاجانی
    Last edited by uncocoder; 27-07-2012 at 03:04.

  4. 2 کاربر از uncocoder بخاطر این مطلب مفید تشکر کرده اند


  5. #3
    داره خودمونی میشه uncocoder's Avatar
    تاريخ عضويت
    Mar 2011
    محل سكونت
    تهران - شهرآرا
    پست ها
    21

    پيش فرض

    لطفاً حذف شود
    Last edited by uncocoder; 27-07-2012 at 17:01.

  6. #4
    داره خودمونی میشه uncocoder's Avatar
    تاريخ عضويت
    Mar 2011
    محل سكونت
    تهران - شهرآرا
    پست ها
    21

    پيش فرض فهرست و سرفصل

    منبع این مطلب [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] است.
    در ویرایش مطالب سعی شده، تمامی کدها، جداول و جزئیات نوشتار، رعایت گردد. اما چنانچه ضعف هایی در مطالعه آن دیدید، می توانید از منبع اصلی هم استفاده نمایید.
    چنانچه پرسشی در خصوص آموزشها در ذهن شماست، لطفاً آنرا در سایت [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مطرح نمایید تا مورد استفاده مشترک کاربران هر دو سایت قرار گیرد.
    لطفاً با حمایت خود از این مطالب در سایت منبع، باعث ایجاد انگیزه مضاعف در به اتمام رسانیدن این آموزشها باشید.


    فهرست و سرفصل:

    سرفصل اصلی آموزش در حدود 35 قسمت پیش بینی گردیده و به امید خدا تهیه خواهد شد و بطور مستمر در اختیار علاقه مندان از طریق همین سایت ارائه خواهد گردید. غیر از 35 قسمت فوق لیستی از قسمتهای تکمیلی و تخصصی تر هم تهیه شده که پس از بخش اصلی بطور گسسته نوشته خواهد شد که از ترتیب خاصی هم برخوردار نخواهد بود.

    گزارش و اخبار آموزشها با اشتراک در خبرنامه سایت منبع، به ایمیل شما ارسال خواهد گردید. لذا جهت کسب خبر بهترین راه ممکن می باشد. منتظر ثبت نام شما در این خبرنامه خواهم بود.

    مطالب ممکن است به دلایلی مورد ویرایش و بازبینی قرار گیرند، تغییراتی در سرفصل بوجود آید. قطعه ای مطلب یا source به آموزشها اضافه شود. در صورت چنین تغییری می توانید از صفحه « [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] » جهت مطلع شدن استفاده نمایید.

    سرفصل آموزشی مطرح شده در زیر به همراه کلید واژه تدریس نوشته شده است که با تکمیل هر بخش لینک مربوطه در آن درج خواهد شد.


    ق عنوان کلید واژه
    1 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] -
    2 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] -
    3 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] -
    4 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] -
    5 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] نصب و تنظیم Eclipse
    6 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ساخت پروژه - ساخت امولاتور - ساختار پروژه
    7 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] آشنایی به xml فرمهای جاوا - اتصال UI Resource به Pointer در جاوا
    8 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] متغیرها ( Primitive ) - قالب های دستوری - ساختار متد
    9 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مفهوم شیء گرایی - فیلدها و متدها - Constructor - دید - ساخت نمونه کلاس
    10 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ثابت ها - Modifier ها - this - استفاده از static
    11 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] میراث بری - Override و همپوشانی - تعریف Nested Class ها
    12 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] استفاده از array ها - استفاده از ArrayList ها - چند الگوریتم معروف
    13 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مقدمات xml - ساخت UI مقدماتی
    14 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] تعریف چند فرم - جابجایی بین فرم ها - تبدیل واحد ها
    15 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مقدمات Process ، Thread ، Stack - حلقه اصلی برنامه ، Main Thread
    16 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] تعریف Thread و Runnable - شروع ، توقف و خاتمه Thread - استفاده از Handler
    17 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] تعریف AsyncTask - استفاده از Callback ها
    18 پروژه « شمارنده » - روش Thread ها ساخت UI - استفاده از Thread ها برای برنامه نویسی - استفاده از Vibrator
    19 پروژه « شمارنده » - روش AsyncTask ها ساخت UI - استفاده از AsyncTask ها برای برنامه نویسی - پخش صدا
    20 پروژه « شمارنده » - دوره زندگی مفهوم Life Cycle یک برنامه اندروید - پیاده سازی بر روی هر دو روش
    21 شیء گرایی در جاوا - متوسط 1 مفهوم Interface و Listener - دسته بندی کلاسها - شناسایی نوع کلاس
    22 پروژه « ماژول شمارنده » - برنامه نویسی پیاده سازی مفاهیم شیء گرایی برای ساخت یک کلاس تفکیک پذیر و داینامیک
    18 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ترکیب 5 مبحث خط خورده بالا
    19 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] نام گذاری منابع، متغیرها، کلاسهاو سایر - نحوه پیرایش کد - استانداردها
    20 استفاده از ListView ها طراحی Adapter - استفاده از ListView ها
    21 استفاده از قابلیتهای ویژه رابط گرافیک کاربرد xml drawable ها - استفاده از دیالوگ ها
    20 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] طراحی Adapter - استفاده از ListView ها - کاربرد xml drawable ها و دیالوگ ها
    21 پروژه « جنگنده ها » - ساخت UI ساخت UI متوسط - استفاده از فونت های دلخواه - رابطه dpi و drawable
    22 پروژه « جنگنده ها » - برنامه نویسی سطح 1 برنامه نویسی شبهات ، تست ها ، ارزیابی ، شناسایی معضلات و نیازمندیها
    23 پروژه « جنگنده ها » - برنامه نویسی سطح 2 تکمیل نکات پر اهمیت در دیزاین برنامه - تمیز کردن کد
    24 پروژه « جنگنده ها » - برنامه نویسی سطح 3 تکمیل جزئیات و اتمام تمامی بخشها
    25 پروژه « جنگنده ها » - برنامه نویسی سطح 4 دیباگ نهایی و بهینه سازی - قابل ارائه برای تست beta
    26 استفاده از File خواندن و نوشتن فایلهای binary - ساخت یک فرمت دلخواه فایل
    27 پروژه « جنگنده ها » - ذخیره و بازیابی ذخیره اطلاعات بازی در فایل - بازیابی اطلاعات از فایل
    28 کنترل برنامه با استفاده از کلیدهای سخت افزاری طراحی منو های برنامه، بکارگیری کلید ها
    29 توضیحات تکمیلی در مورد Manifest لیست کاملی از امکانات موجود در Manifest
    30 استفاده از Preference طراحی فرمهای Preference - نوشتن، خواندن و تعامل با کنترل ها
    31 استفاده از Exception ها جلوگیری از Crash ، پیش بینی رخدادهای ناگوار، تولید برنامه پایدار و هوشمند
    32 نهایی سازی برنامه و اکسپرت تولید signkey و اکسپرت برنامه جهت release
    ق عنوان کلید واژه
    - استفاده از ابزارهای دیباگ - مقدماتی 1 مقدمات دیباگ برنامه، breakpoint ها و بکارگیری stack
    - استفاده از ابزارهای دیباگ - مقدماتی 2 استفاده از methodTrace جهت نمونه برداری از load برنامه و شناسایی bottleneck
    - پیاده سازی سیستم Cache طراحی یک سیستم Caching برای صرفه جویی در پهنای باند و سرعت
    - باز کردن صفحات وب با کنترل های پیشرفته بارگزاری صفحات وب با استفاده از WebView
    - ساخت Component های دلخواه ساخت UI Component های دلخواه و قابل انعطاف
    - مهندسی معکوس برنامه های اندروید بازیابی source برنامه، استخراج منابع برنامه و چگونگی برقراری امنیت
    - استفاده از Package Manager استخراج لیست برنامه های نصب شده، نصب، حذف برنامه ها
    - استفاده از سنسورها استفاده از سنسورهای شتاب سنج، قطب نما و ...
    - استفاده از دوربین جهت گرفتن عکس و ارسال به برنامه، استفاده از Barcode Reader
    - استفاده از رابط کاربری ( UI ) - پیشرفته 1 ساخت Drawable های دلخواه، انیمیشن ها
    - استفاده از رابط کاربری ( UI ) - پیشرفته 2 استفاده از Page Filipper ها و Fragment ها
    - استفاده از وب سرویس ها ارسال درخواست و دریافت پاسخ با متد JSON
    - استفاده از بانکهای اطلاعاتی مرور کلی در مورد بانکهای SQLite
    - برنامه نویسی سرویس ها استفاده از سرویس جهت انجام اعمال BackGround و بکارگیری Receiver ها
    - استفاده از Wifi و Broadcasting بکارگیری Wifi برای برقراری ارتباط از طریق UDP و Broadcasting
    - استفاده از Streaming استفاده از Stream جهت پخش فایلهای صوتی، ویدئو و دانلود باینری
    - استفاده از Media Player نمایش فایلهای ویدئویی و پخش فایلهای صوتی با امکانات یک player
    - برنامه نویسی Canvas - سطح 1 توابع مقدماتی استفاده از canvas
    - برنامه نویسی Canvas - سطح 2 استفاده از canvas با استفاده از surfaceview و thread های مجزا
    - برنامه نویسی OpenGL - سطح 1 آماده سازی OpenGL جهت render
    - برنامه نویسی OpenGL - سطح 2 ساخت ماتریس های انتقال و چرخش جهت تولید انیمیشن
    - برنامه نویسی OpenGL - سطح 3 بارگزاری منابع گرافیکی بر روی vertex ها
    - برنامه نویسی ویژه Tablet تولید نرم افزار ویژه Tablet ها، شناسایی قابلیتها و محدودیت های ویژه






    با آرزوی موفقیت روز افزون
    بهنام آقاجانی
    Last edited by uncocoder; 27-07-2012 at 03:12.

  7. 2 کاربر از uncocoder بخاطر این مطلب مفید تشکر کرده اند


  8. #5
    داره خودمونی میشه uncocoder's Avatar
    تاريخ عضويت
    Mar 2011
    محل سكونت
    تهران - شهرآرا
    پست ها
    21

    پيش فرض آماده کردن محیط برنامه نویسی

    منبع این مطلب [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] است.
    در ویرایش مطالب سعی شده، تمامی کدها، جداول و جزئیات نوشتار، رعایت گردد. اما چنانچه ضعف هایی در مطالعه آن دیدید، می توانید از منبع اصلی هم استفاده نمایید.
    چنانچه پرسشی در خصوص آموزشها در ذهن شماست، لطفاً آنرا در سایت [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مطرح نمایید تا مورد استفاده مشترک کاربران هر دو سایت قرار گیرد.
    لطفاً با حمایت خود از این مطالب در سایت منبع، باعث ایجاد انگیزه مضاعف در به اتمام رسانیدن این آموزشها باشید.


    مقدمه:

    برنامه نویسی اندروید Android [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] با دو زبان برنامه نویسی ممکن است،

    1- جاوا [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ( که مد نظر ما در طول این آموزشهاست )
    2- ++C ( یا همان NDK [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ) که بطور خیلی خاص در برنامه های با پردازش بالا استفاده می شود و در این آموزشها به آن کاری نخواهیم داشت.
    همانطور که Java به زبان میانی IL - Intermediate Language [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ( تبدیل می شود ) و توسط JVM - Java Virtual Machine [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] بر روی دستگاه مقصد اجرا می شود، برنامه های اندروید نیز توسط Dalvik Virtual Machine [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] بر روی دستگاه موبایل یا Tablet [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مقصد اجرا می شوند. وظیفه Dalvik اتصال توابع خاص اندروید، Optimize [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] کردن برنامه برای بهینه نمودن آن مطابق با حافظه و منابع دستگاه مقصد و در نهایت انجام کامپایل نهایی مشابه عملی که JVM انجام می باشد.



    نرم افزار های مورد نیاز برای توسعه نرم افزار مبتنی بر اندروید:


    ویرایش: دوستان عزیز، لطفاً در صورتیکه بدون نصب نرم افزار های زیر، در آموزشهای بعدی با مشکل مواجه شدید، ابتدا به طریق گفته شده نرم افزارها را نصب و در صورت برطرف نشدن مشکل به طرح پرسش اقدام فرمائید.
    مسلماً برای برنامه نویسی Java نیاز به JRE - Java Runtime Environment [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] و JDK - Java Development Kit [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] داریم. بسته به سیستم عامل انتخابی شما ( که در این آموزشها ویندوز خواهد بود ) ، چه برای ویندوزهای 32 بیت و چه 64 بیت از نسخه های 32 بیت استفاده کنید. به هیچ عنوان از ورژن 1.7 یا 7u1 جاوا استفاده نکنید چرا که در برخی موارد نظیر sign کردن نرم افزار دارای مشکلاتی است.
    » لینک فایل 32 بیت JDK که JRE را هم در بر دارد ، با لینک مستقیم در زیر قرار گرفته است:

    JDK:
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]


    با نصب JRE و JDK پیش نیاز های ترجمه برنامه نوشته شده Java به Java IL نصب خواهد شد. اما برای نوشتن برنامه Java نیاز به یک IDE - Integrated Development Environment [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مناسب با امکانات بالا داریم. چه بهتر که این IDE رایگان، مورد اعتماد Google و open-source [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] باشد. بنابراین از Eclipse [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] به عنوان IDE ( محیط برنامه نویسی ) جاوا استفاده خواهیم کرد.
    » نسخه 32 بیتی این IDE در زیر ارائه شده است. نسخه classic این نرم افزار حدود 170 مگابایت [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] است و نسخه ای که برای دانلود قرار داده شده شامل plugin های لازم برای کار شماست از جمله ADT - Android Development Tools.

    Eclipse 32bit:
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]


    » این نسخه بر روی ویندوز های 64 بیتی هم قابل اجرا خواهد بود. Eclipse نیاز به نصب ندارد، فقط کافیست آنرا در یک دایرکتوری باز کنید و فایل اجرایی آن را اجرا کنید. تنظیمات این IDE در قالب یک دایرکتوری به نام metadata ذخیره خواهد شد. با کپی این دایرکتوری و استفاده آن در کامپیوتر های دیگر قادر خواهید بود از تنظمیات خود مجدداً ( در کامپیوتر جدید تر ) استفاده کنید. برای راحتی کار، تنظیمات مورد نیاز eclipse و plugin های مربوطه شامل ( رنگ بندی های مناسب، کلیدهای shortcut مناسب، workspace مناسب و ... ) آماده شده که از مسیر زیر قابل دانلود است.

    Metadata:
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]


    طریقه باز کردن Eclipse، metadata و ... در بخش بعدی بیان خواهد شد.
    » همچنین نیاز به SDK [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] اندروید داریم. بدلیل ف ی ل ت ر شدن ip کشور ما در گوگل امکان دانلود آن در ایران وجود ندارد، با ف ی ل ت ر ش ک ن هم سرعت دانلود در حد 2 kbps است. برای راحتی کار، ورژنهای SDK مورد نیاز را دانلود کرده ام و بصورت لینک مستقیم در زیر قابل دانلود است. طریقه باز کردن آن در بخش بعدی توضیح داده خواهد شد.

    Android SDK:
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]


    نصب و راه اندازی:

    » ابتدا با نصب JDK از شما سئوالی در مورد نصب JRE پرسیده می شود که تأیید کتید، بنابراین JRE و سپس JDK را نصب خواهید کرد.

    » یک دایرکتوری در مسیر کوتاهی مانند c:\android یا d:\android بسازید. این مسیر از این پس در کل آموزش بنام DEV_ROOT شناخته خواهد شد. یعنی هر گاه داشتیم DEV_ROOT یعنی مسیر کوتاه انتخابی در این بخش. توجه کنید که نام دایرکتوری را تماما با حروف کوچک بنویسید و برای جدا کردن کلمات در نام دایرکتوری از _ استفاده کنید. بطور مثال c:\android_development . مسیر پیشنهادی c:\android خواهد بود.

    » یک دایرکتوری بنام sdk در دایرکتوری DEV_ROOT بسیازید و فایل android.rar را در آن کپی کنید و آنرا با استفاده از Winrar با گزینه Extract Here باز کنید.

    » یک دایرکتوری بنام workspace در دایرکتوری DEV_ROOT بسازید و metadata.rar را در آن کپی کنید و با استفاده از گزینه Extract Here نرم افزار Winrar آن را باز کنید

    » فایل eclipse.rar را در دایرکتوری DEV_ROOT کپی کنید و با استفاده از Extract Here نرم افزار Winrar آنرا باز کنید.

    در صورتیکه فرآیند Extract کردن را بدرستی رعایت کرده باشید باید ساختار دایرکتوری بشکل زیر داشته باشید:



    » پس از باز شدن eclipse در دایرکتوری آن فایل eclipse.exe را اجرا کنید، پس از مدتی از شما مسیری می پرسد، در اینصورت مسیر DEV_ROOT\workspace را وارد کنید و تیک پایین پنجره را بزنید و OK کنید. توجه کنید که بجای DEV_ROOT مسیر اصلی مانند c:\android را جایگزین کنید. اگر این پنجره نیامد پس از باز شدن eclipse وارد منوی Window->Preferences شوید و از پنل چپ General->Startup and Shutdown->Workspaces را انتخاب کنید و تمام گزینه های داخل پنجره باز شده را Remove کنید. تیک اول را بزنید. Eclipse را ببندید و دوباره اجرا کنید. این بار حتما از شما مسیر را می پرسد.

    » توجه : هیچ وقت بیشتر از یک eclipse باز نکنید. اگر چند eclipse باز شده دارید ابتدا همه را ببندید و دوباره یک eclipse باز کنید.

    » پس از باز شدن eclipse وارد منوی Window->Preferences شوید و از پنل سمت چپ Android را انتخاب کنید. در قسمت SDK Location مسیر DEV_ROOT\sdk\android را انتخاب نمایید و OK بزنید.

    » بهتر از یکبار ویندوز را restart کنید که مسیر JDK در Environment Variables ثبت شود.

    » تمام، محیط برنامه نویسی شما آماده است.
    Last edited by uncocoder; 27-07-2012 at 17:02.

  9. این کاربر از uncocoder بخاطر این مطلب مفید تشکر کرده است


  10. #6
    داره خودمونی میشه uncocoder's Avatar
    تاريخ عضويت
    Mar 2011
    محل سكونت
    تهران - شهرآرا
    پست ها
    21

    پيش فرض ساخت و اجرای اولین پروژه

    منبع این مطلب [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] است.
    در ویرایش مطالب سعی شده، تمامی کدها، جداول و جزئیات نوشتار، رعایت گردد. اما چنانچه ضعف هایی در مطالعه آن دیدید، می توانید از منبع اصلی هم استفاده نمایید.
    چنانچه پرسشی در خصوص آموزشها در ذهن شماست، لطفاً آنرا در سایت [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مطرح نمایید تا مورد استفاده مشترک کاربران هر دو سایت قرار گیرد.
    لطفاً با حمایت خود از این مطالب در سایت منبع، باعث ایجاد انگیزه مضاعف در به اتمام رسانیدن این آموزشها باشید.


    آموزش:

    در قسمت اول محیط برنامه نویسی ما آماده شد. در این قسمت قصد داریم اولین پروژه اندروید را تولید کنیم. طبق عرف این پروژه همان Hello World! است.
    » وارد محیط eclipse شوید.
    » با استفاده از Ctrl+N یا منوی File->New->Other پنجره ساخت فایل یا پروژه جدید باز می شود.
    » مقابل Wizards: تایپ کنید Android تا گزینه های قابل ساخت مرتبط با اندروید فیلتر شوند.
    » Android Project را از لیست انتخاب کنید و Next
    » نام پروژه که لاتین است را در Project Name بنویسید. در این آموزش می نویسیم Test1 و بزنید Next
    » از لیست گزینه ها Android 2.1 را انتخاب و بزنید Next
    » در قسمت Package Name بنویسید com.uncocoder.course.test1 و بزنید Finish

    خوب اولین پروژه ساخته شد. اما چگونه آنرا اجرا کنیم. ابتدا این پروژه را با استفاده از Emulator [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] اجرا خواهیم کرد. اجرای آن بر روی Device واقعی در صورتیکه درایور های Device نصب باشد بسیار ساده تر از اجرا بر روی Emulator خواهد بود. برای اجرای پروژه بر روی Emulator ابتدا نیاز به ساخت یک Virtual Device داریم بنابراین به طریقه زیر عمل می کنیم:
    » از منوی Window->AVD Manager را انتخاب کنید
    » کلید New را بزنید
    » پنجره باز شده را به شکل زیر تصحیح کنید:



    » دکمه Create AVD را بزنید.
    » Device1 را از لیست انتخاب کنید
    » دکمه Start را بزنید
    » پنجره باز شده را به شکل زیر تنظیم کنید

    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]

    » دکمه Launch را بزنید

    » منتظر باشید تا Emulator به طور کامل بالا بیاید و بتوانید با استفاده از Mouse آنرا Slide To Unlock کنید. این فرآیند ممکن است کمی طول بکشد، اما برای بارهای بعد خیلی سریع Emulator بالا خواهد آمد.

    » بدون اینکه Emulator را ببندید پنجره AVD Manager در Eclipse را ببندید. بنابراین Emulator از Windows Taskbar [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] قابل انتخاب خواهد بود.

    » در محیط Eclipse در Package Explorer بر روی Test1 که دارای پوشه آبی رنگی است RightClick کنید و Run As را بزنید. از این منو Android Application را انتخاب کنید. بار های بعد برای اجرای پروژه کافیست از کلید F5 استفاده کنید.

    » Emulator را از Windows Taskbar انتخاب کنید تا بر روی Eclipse بیاید و می توانید برنامه را ببینید که بصورت زیر است در آن ببینید.



    » مادامی که مشغول برنامه نویسی هستید نیازی به بستن Emulator وجود ندارد. فقط با استفاده از کلید که از این پس Back نامید می شود برنامه را ببندید.

    » توجه داشته باشید در صورتیکه برنامه بسته نشده باشد و یا تغییری در آن ایجاد نشده باشد، اجرای مجدد آن با استفاده از کلید F5 یا Run As نتیجه ای در بر نخواهد داشت.

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

    ساختار دایرکتوری ساده ترین پروژه اندروید:


    پروژه حاضر یعنی Test1 شامل چندین فایل و دایرکتوری است که مروری جزئی بر آنها داریم:
    دایرکتوری src که سورس Class File های Java [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] می باشند، از آنجایی که برای اندروید از زبان جاوا استفاده کنیم پس کل Source Code ما در این دایرکتوری قرار خواهد گرفت.

    » در این دایرکتوری چیزی با نام com.uncocoder.course.test1 است که در ابتدای ساخت پروژه آنرا بصورت دستی وارد کردیم. این همان جایی است که اولین فرم نمایشی ما یعنی Test1Activity.java در آن ذخیره می شود. اگر با دایرکتوری DEV_ROOT/workspace/test1/src مراجعه کنید می بینید که هر کدام از Token [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] های . یک دایرکتوری هستند. یعنی فایل Test1Activity.java در دایرکتوری Test1 زیر شاخه course زیر شاخه uncocoder زیر شاخه com زیر شاخه src قرار دارد.

    » به این مسیر ( در اینجا یعنی com.uncocoder.course.test1 ) می گوییم package name [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] و در صورتیکه مسیری باشد که در ساخت پروژه آنرا تعریف کرده باشیم به آن می گوییم Application Package Name.

    » تمامی برنامه های اندروید با این نام منحصر بفرد از هم جدا می شوند تا تداخلی با یکدیگر نداشته باشند.

    » نام گذاری Package Name رسم و رسومی دارد که از این لینک قابل مطالعه است و بطور خلاصه ابتدای آن مسیر سایت سازنده محصول است ( که بر عکس یادداشت می شود یعنی com.uncocoder ) و بعد از آن مسیری است که سازنده محصول برای دسته بندی محصولات خود به دلخواه تعیین می کند ( در این پروژه یعنی course.test1 ).

    » تغییر دستی فایلها، rename کردن مسیر ها از داخل windows و مشابه چنین عملیاتی مرسوم نیست و باعث خراب شدن سورس پروژه می شود. طریقه تغییر نام package در قسمتهای آینده آموزش داده خواهد شد.

    با دایرکتوری gen کاری نخواهیم داشت ولی خروجی دسته بندی resource [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ها هستند که در آینده توضیح داده خواهد شد. محتویات این دایرکتوری خود به خود تولید شده و ما هیچگاه ، هیچ عملیاتی روی این دایرکتوری انجام نداده و نباید انجام دهیم.

    کتابخانه ( Library [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ) مورد نیاز پروژه که بنام Android 2.1 قرار داده شده و به پروژه متصل شده و شامل SDK مورد نیاز برای توسعه این نسخه از اندروید است.

    دایرکتوری assets که در اختیار ماست و می توانیم تمامی فایلهای صوتی، فونت ، binary, xml, html, text و ... را به غیر از تصاویر در آن قرار دهیم. ولی در چندین جلسه اول به آن کاری نخواهیم داشت.

    دایرکتوری bin که خروجی Build [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] پروژه شما خواهد بود. در این دایرکتوری علاوه بر فایلهای IL شده Java فایلی با پسوند apk وجود دارد که همان فایل خروجی نرم افزار اندروید شماست و قابل نصب بر روی هر گوشی اندرویدی خواهد بود. بحث مفصلی در مورد apk ها وجود دارد که به یک جلسه جدا موکول می شود.

    دایرکتوری res که شامل تمامی تصاویر، فایلهای UI مورد استفاده ( که XML [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] هستند )، String List, Color List و ... خواهد بود. به عبارتی منابعی که در چگونگی اجرای برنامه اندروید نقش اساسی دارند و در لحظه Build Time اهمیت پیدا می کنند در این دایرکتوری قرار می گیرند. این دایرکتوری بسیار بسیار حساس بوده و در صورت اشتباهاتی که منجر از مطالعه نکردن صحیح منابع موجود در برنامه نویسی اندروید است به راحتی شما را دچار بحران می کند. بنابراین در صورتیکه از نحوه عملکرد فایلی و جایگاه صحیح آن در این دایرکتوری مطلع نیستید با مطالعه قبلی مبادرت به کپی آن در این دایرکتوری کنید.

    فایل AndroidManifest.xml که مهمترین فایل ساختاری یک پروژه اندروید است و نحوه عملکرد برنامه شما را کنترل خواهد کرد. بسیاری از Crash [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] های قابل تولید در یک پروژه اندروید می تواند ناشی از بی توجهی به این فایل باشد. چگونگی استفاده از این فایل در چندین جلسه به مرور توضیح داده خواهد شد.

    دو فایل دیگر نیازی به توضیح ندارند ولی بی اهمیت نیستند و آنها را پاک نکنید.


    توصیه ها:

    - در صورتیکه به کار به گوشی های اندروید مسلط نیستید، با استفاده از Emulator به آن مسلط شوید و مکان تنظیم های مختلف گوشی را یاد بگیرید.
    - Emulator بسیاری از امکانات گوشی ها را از قبیل چرخش گوشی، منو ها، دوربین عکاسی و ... را شبیه سازی می کند، برای آشنایی با کلید های Shortcut و قابلیتهای Emulator از اینترنت کمک بگیرید.
    - ستاره موجود در متن آموزش را بی اهمیت قلمداد نکنید. در مورد مطالبی که از آنها اطلاعاتی ندارید، مرور کلی مطلب Wiki کمک بزرگی به شما خواهد کرد.
    - برای آشنایی با محیط Eclipse گزینه های منو ها و تنظیمات را نگاه کنید و حدث بزنید که هر گزینه چه کاری می تواند انجام دهد. مسلماً تسلط بر همه گزینه ها فعلاً ممکن نیست.
    - در صورتیکه با XML آشنایی ندارید حتماً بسیار زیاد آنرا مطالعه کنید. با آن خیلی کار خواهیم داشت.
    Last edited by uncocoder; 27-07-2012 at 03:13.

  11. این کاربر از uncocoder بخاطر این مطلب مفید تشکر کرده است


  12. #7
    داره خودمونی میشه uncocoder's Avatar
    تاريخ عضويت
    Mar 2011
    محل سكونت
    تهران - شهرآرا
    پست ها
    21

    پيش فرض استفاده از UI - مقدماتی 1

    منبع این مطلب [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] است.
    در ویرایش مطالب سعی شده، تمامی کدها، جداول و جزئیات نوشتار، رعایت گردد. اما چنانچه ضعف هایی در مطالعه آن دیدید، می توانید از منبع اصلی هم استفاده نمایید.
    چنانچه پرسشی در خصوص آموزشها در ذهن شماست، لطفاً آنرا در سایت [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مطرح نمایید تا مورد استفاده مشترک کاربران هر دو سایت قرار گیرد.
    لطفاً با حمایت خود از این مطالب در سایت منبع، باعث ایجاد انگیزه مضاعف در به اتمام رسانیدن این آموزشها باشید.


    آموزش:

    در این قسمت قصد داریم که طریقه اتصال عناصر UI - User Interface [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] که در فایل XML تعریف می شوند را به کدهای جاوا یاد بگیریم. در اینصورت خواهیم توانست برای Button ها، EditBox ها، ImageView ها، ListView ها و ... برنامه بنویسیم.

    در مرحله اول یک Button و یک TextView بر روی فرم اولیه ( main.xml ) قرار می دهیم و برنامه می نویسیم که با کلیک کردن بر روی Button نوشته داخل TextView تغییر کند. لذا دستور العمل زیر را دنبال کنید:
    » با استفاده از آموزشهای قسمت دوم یک پروژه با پکیج com.uncocoder.course.lessons و نام پروژه AndroidCourse بسازید. این پروژه، پروژه ای خواهد بود که تا انتهای آموزشها با آن کار خواهیم کرد و آرشیوی از تمامی پروژه ها و کدهایی خواهد بود که در طول دوره آموزش دیده ایم.

    » از پنل Package Explorer وارد AndroidCourse/res/layout/main.xml شوید. پس از مدتی یک صفحه تیره حاوی UI یی که در پروژه قبل به عنوان خروجی مشاهده کردید خواهید دید. یعنی تصویر زیر:


    در تصویر بالا:
    َA- محیط طراحی گرافیکی رابط کاربر ( Visual UI Designer ) که همین صفحه نمایش داده شده می باشد، است. خروجی طراحی انجام شده در این صفحه با B که نمایش XML رابط گرافیکی طراحی شده توسط شمااست. بنابراین A و B یکی هستند با دو نمایش متفاوت. هر تغییری در محیط A باعث تغییر در XML خروجی در محیط B می شود و بالعکس. خیلی اوقات راحتتر است که از محیط A استفاده کنیم و خیلی اوقات دیگر هم استفاده از محیط B راه گشاست بنابراین به یک محیط تکیه و بسنده نکنید.

    B- نمایش UI طراحی شده در محیط A بصورت XML است و قابل ادیت می باشد.
    C- رابط گرافیکی نهایی که بر روی گوشی نمایش داده خواهد شد. نمایش آن در این قسمت شبیه سازی می شود.
    D- لیستی از UI Component [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] های در دسترس که با انتخاب و Drag آن می توانید به UI طراحی شده اضافه کنید.
    E- در شرایطی که سایز مانیتور شما کوچک است ( Low Resolution ) ممکن است این Scroll دیده نشود و نتوانید لیست کاملی از UI Component ها را ببینید. با بزرگتر کردن کل محیط فوق و Resize کردن پنل سمت چپ، Scroll نمایان خواهد شد.

    F- مجموعه ای از تنظیمات جهت بررسی UI تولید شده در سایزها مختلف گوشی های موبایل، ورژن های SDK متفاوت، Theme های متفاوت و ... . بنابراین می توانید UI خود را برای صحت عملکرد و نمایش، آزمایش کنید.

    G- دکمه هایی که با استفاده از آنها می توانید نمایش UI را بزرگتر و کوچکتر کنید ( برای راحتتر شدن طراحی و یا دقیقتر شدن در ابعاد و ...)

    » با انتخاب TextView اول که دارای محتوای Hello World, AndroidCourseActivity! است کلید Delete را روی کیبورد فشار دهید تا حذف شود.
    » از لیست Palette ها، یک Button و یک TextView داخل UI ( پنجره سیاه ) Drag کنید.
    » بر روی Button ، راست کلیک کنید و بزنید Edit ID و وارد کنید btn_action و OK بزنید، این نام اختیاری است اما توجه داشته باشید که حتماً باید تمامی حروف آن کوچک باشد و از _ برای جداکردن نام کلمات استفاده کنید. از Space و کاراکترهای نامتعارف جهت نامگذاری استفاده نکنید. با نوشتن btn_ در ابتدای نام دکمه ها به خوانا بودن نامگذاری کمک می کنیم.

    » بر روی TextView ، راست کلید کنید و بزنید Edit ID و وارد کنید txt_caption و OK بزنید. از این پس به این فرآیند می گوییم Set کردن ID.
    » حالا می توانید main.xml را ببندید.
    » وارد فایل AndroidCourse/src/com.uncocoder.course.lessons/AndroidCourseActivity.java شوید. محیط ویرایش سورس جاوا باز می شود. سورس را به گونه زیر تغییر دهید.

    ویرایش: نکته مهم: از این لحظه، هر گاه قرار هست چیزی رو تغییر بدیم به باقی فایل کاری نخواهیم داشت، نه سایر متدها را پاک می کنیم، نه package و import ها را پاک می کنیم، فقط متدهای موجود در کد را تغییر می دهیم. همینطور Line Number های کنار سورس کدها فقط برای توضیح خطوط است و مطمئناً می تواند با Line Number های دروس فایل شما متفاوت باشد.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    توجه داشته باشید در صورتیکه مربع های خط چین ظاهر شدند کد شما نیاز به ورود و شناسایی Package Name مناسب دارد لذا در این شرایط بر روی کلمه OnClickListener با موس کمی صبر کنید، بعد از ظاهر شدن لیست گزینه Import OnClickListener (Android.view.View را انتخاب کنید. با اینکار یک خط جدید به لیست import های بالای همین فایل با محتوای import android.view.View.OnClickListener اضافه می شود که از این پس شناسایی صحیح این کلاس صورت می گیرد.
    » با right click بر روی AndroidCourse و انتخاب Run As -> Android Application برنامه را اجرا کنید. دفعات بعد با زدن کلید F5 این عمل انجام می شود. در صورتیکه در نحوه اجرای Emulator و برنامه مشکل دارید، قسمت دوم آموزش را مطالعه کنید.


    توضیح طریقه کار خطوط برنامه:

    خط 7: به Activity می گوییم که فایل حاوی UI این پنجره در فایل main.xml قرار گرفته است.
    خط 9: دکمه ای که ID آنرا btn_action قرار دادیم را به یک اشاره گر ( Pointer [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ) در جاوا از جنس Button متصل می کنیم.
    خط 10: متنی را که ID آنرا txt_caption قرار داریم را به یک اشاره گر در جاوا از جنس TextView متصل می کنیم. کلمه final فعلاً مهم نیست که چه کار می کند اما استفاده از آن در این نوع کد نویسی ضروری است.
    حط 11: یک دستور العمل جدید برای پاسخ گویی به OnClick روی دکمه تعریف می کنیم. این دستور العمل درون onClick قرار می گیرد. لذا با کلیک شدن بر روی دکمه اجرا خواهد شد.
    خط 15: دستور العمل اجرایی با کلیک بر روی دکمه است که می گوید محتوای TextView قرار داده شده در UI را به جمله New String تغییر بده.

    خطوطی که توضیحی برای آنها ندادم را به عنوان یک کلیشه ( فعلاً ) در نظر بگیرید. با پیشرفت آموزشها و قسمتهای آموزش شیء گرایی این خطوط برای شما گویا خواهند شد اما الان دانستن علت نوشتاری آن گیج کننده و غیر ضروری است. کافیست این را بدانید که برای تعیین دستور العمل Click روی دکمه مورد نظر به چه شکل آنرا بنویسیم.
    حالا برای تمیز تر شدن قطعه کد سورس را به شکل زیر تغییر دهید. این دو نوع نوشتار مانند یکدیگر عمل می کنند اما از نظر برنامه نویسی کد زیر بهتر است:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    خط 3 و 4: اشاره گرها تعریف و با مقدار اولیه null مقدار دهی می کنیم.
    خط 14: به برنامه می گوییم متدی ( method [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ) با نام initializeUi را که در همین کلاس تعریف شده است را اجرا کند.
    خط 19: شروع به تعریف متد initializeUi می کنیم
    خط 20: به اشاره گر تعریف شده با نام btn در همین کلاس مقداری ارجاع می دهیم.
    خط 21: به اشاره گر تعریف شده با نام text در همین کلاس مقداری ارجاع می دهیم.
    باقی خطوط: مانند گذشته است.


    خوب این قسمت از آموزش هم به پایان رسید.

    سورس برنامه و ورود پروژه جدید:

    جهت دریافت سورس این پروژه می توانید از لینک زیر استفاده کنید.
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]

    جهت ورود یک پروژه از پیش تعریف شده مانند پروژه بالا در Eclipse به طریقه زیر عمل کنید:
    » ابتدا باید مطمئن باشید که در Eclipse پروژه های همنام وارد نشوند بنابراین می توانید نام پروژه خود را تغییر دهید و آنرا به مثلاً با MyAndroidCourse تغییر دهید. به این منظور بر روی AndroidCourse راست کلیک کنید و انتخاب کنید Refactor->Rename و بنویسید MyAndroidCourse و تیک هم فعال باشد. سپس OK کنید. لذا پروژه شما تغییر نام پیدا می کند.

    » منوی File->Import را بزنید و Existing Projects into Workspace را انتخاب کنید
    » فایلی را که دانلود کرده اید در مسیر DEV_ROOT\download کپی کنید و آنرا با Extract To AndroidCourse در همین دایرکتوری Extract کنید. اگر نمی دانید DEV_ROOT چیست پس آموزشهای گذشته را به درستی مطالعه نکرده اید.

    » مسیر DEV_ROOT\download را در قسمت Select root directory وارد کنید و با زدن Refresh پروژه های موجود در این مسیر را خواهید دید.
    » پروژه مورد نظر را انتخاب و Finish بزنید.
    » برای اجرای پروژه روی پروژه Right Click کنید و گزینه Run As->Android Application را انتخاب کنید.
    » در صورتیکه قبلاً پروژه AndroidCourse دانلود شده در Eclipse وارد شده بود می توانید با انتخاب آن و زدن کلید Delete روی کیبورد آنرا از این لیست حذف کنید. با زدن تیک موجود در صفحه به نام Delete project content on disk فایلهای موجود در Hard Disk هم پاک می شوند و بدون زدن این انتخاب فایلها باقی خواهند ماند ولی پروژه از لیست پروژه ها حذف خواهد شد. اینجا انتخاب با خودتان است که تیک بزنید یا نزنید.

    با توجه به اینکه شما پروژه خود را احتمالاً Rename خواهید کرد از این پس منظور از پروژه AndroidCourse همان پروژه ایست که شما در حال توسعه آن هستید با اینکه ممکن است آنرا به MyAndroidCourse تغییر نام داده باشید. پروژه های ارسال شده بصورت فایل، صرفاً جهت مرور شما هستند و آنها را تغییر ندهید. پس منظور از AndroidCourse پروژه ای است که شما توسعه می دهید.

    توصیه ها:

    - اگر با مفاهیم شیء گرایی ( Object Oriented [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ) آشنایی لازم را ندارید بهتر است کتابی در مورد java تهیه و مطالعه کنید، با اینکه در این آموزشها با آن خواهیم پرداخت، اما مطالعه شما بهتر است.
    - با استفاده از چند خط آموزش داده شده و کمی ابتکار عمل می توانید خیلی چیزها را آزمایش کنید و خودتان بسیازی از مفاهیم را دریابید. بنابراین زمینه وقت گذاشتن بر روی همین چند خط کد بسیار آماده است.
    - اگر سرعتتان در تایپ و کار با ادیتور کم است، بسیار تمرین کنید. فاصله زمان تصمیم گرفتن به تغییر یا نوشتن یک قطعه کد تا اجرا کردن آن باید بسیار کوتاه باشد. یعنی چنانچه تصمیم به تغییر کد گرفتید اصلاً نباید به چگونگی تایپ آن فکر کنید بلکه بصورت غیر ارادی باید بتوانید این کار را انجام دهید. لذا در صورت نیاز بسیار تمرین کنید و یک قطعه کد را بارها و بارها بنویسید و ویرایش کنید.
    - از سایر کنترلهای موجود در Palette کنترل ها استفاده کنید و ببنید که چه امکاناتی می توانیم در UI داشته باشیم.
    Last edited by uncocoder; 27-07-2012 at 03:13.

  13. این کاربر از uncocoder بخاطر این مطلب مفید تشکر کرده است


  14. #8
    داره خودمونی میشه uncocoder's Avatar
    تاريخ عضويت
    Mar 2011
    محل سكونت
    تهران - شهرآرا
    پست ها
    21

    پيش فرض برنامه نویسی جاوا - مقدماتی 1

    منبع این مطلب [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] است.
    در ویرایش مطالب سعی شده، تمامی کدها، جداول و جزئیات نوشتار، رعایت گردد. اما چنانچه ضعف هایی در مطالعه آن دیدید، می توانید از منبع اصلی هم استفاده نمایید.
    چنانچه پرسشی در خصوص آموزشها در ذهن شماست، لطفاً آنرا در سایت [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مطرح نمایید تا مورد استفاده مشترک کاربران هر دو سایت قرار گیرد.
    لطفاً با حمایت خود از این مطالب در سایت منبع، باعث ایجاد انگیزه مضاعف در به اتمام رسانیدن این آموزشها باشید.


    آموزش:

    به دلیل اینکه قصد دارم این آموزشها برای کسانی که با برنامه نویسی هم هیچ آشنایی ندارند مفید واقع شود، این قسمت تکمیلی به دوره آموزشی اضافه شد. توجه داشته باشید اگر با برنامه نویسی آشنایی ندارد باید تلاشتان را چندین برابر افزایش دهید تا از پس سایر آموزشها برآیید.
    ویرایش: جهت آزمایش کد های زیر می توانید از مثال آموزشی قسمت قبل استفاده کنید و در Text موجود روی صفحه تغییری حاصل کنید. بطور مثال برای نمایش مقدار عددی aValue بر روی TextView موجود در صفحه برنامه قسمت OnClick را به شکل زیر تغییر دهید:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    برای استفاده آن در حلقه های گردشی هم می تواند ابتدا نتیجه خود را در یک String ذخیره کنید و سپس setText کنید، مانند مثال زیر:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    توجه داشته باشید که استفاده از "n\" باعث نوشته شدن باقی متن در خط بعدی می شود. خروجی قطعه برنامه بالا پس از کلیک بر روی دکمه به شکل زیر است:

    متغیرها ( Variables [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ) :
    متغیرها اشاره کننده هایی به قسمتی از حافظه کامپیوتر هستند که در آن مقداری نهفته است. بطور مثال وقتی می گوییم int value=2 یعنی متغیر value از جنس int ( اعداد صحیح بین -2,147,483,648 تا 2,147,483,647 ) است که نیاز به اشغال 32بیت یا همان 4 بایت از حافظه دارد. متغیر value فقط به آدرس اولین بایت از این حافظه مورد نیاز اشاره می کند. با استفاده از عملگر ( Operator [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ) تساوی ( = ) می گوییم که مقدار این فضا ( که 4 بایت است ) 2 باشد. هر گاه متغیر value را بخوانیم، داریم مقدار حافظه متصل شده به این متغیر را می خوانیم. نیاز نیست خیلی نگران چگونگی عملکرد جاوا در خواندن و نوشتن متغیرها باشید اما خوب بود که بدانید معنی واقعی یک متغیر چیست.
    با توجه به توضیح فوق می توانیم متغیرهایی از جنس های مختلف ( محدود اعدادی که ساپورت می کند، نوع اعدادی که ساپورت می کند و ... ) داشته باشیم. نوع متغیرهایی که در جاوا قابل استفاده است که به آنها Primitives می گوییم در لینک [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] موجود و قابل مطالعه است.
    برای تعریف کردم متغیرها با نوع های مختلف کد زیر می تواند به شما کمک کند.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    عملگرها ( Operators [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ) :
    با استفاده از عملگرها می توانید مقادیر یک متغیر را تغییر دهید. مثلاً عملگرهای زیر برای متغیرهایی از نوع عددی قابل استفاده است.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    عبارت بعد از // صرفاً توضیحی است و هیچ اثری بر چگونگی اجرای برنامه ندارد، به آنها Comments می گوییم. همانطور که می بینید در انتهای هر خط از دستور یک ; درج شده است که معرف اتمام دستور است.
    جهت کسب اطلاعات بیشتر می توانید از لینک [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] استفاده کنید

    عبارات کنترل شرط ( IF Statements [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ):
    برای مقایسه دو مقدار یا متغیر و انجام عملکرد مناسب از دستور if استفاده می کنیم. به کدهای زیر توجه کنید:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    جهت کسب اطلاعات بیشتر می توانید از لینک [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] استفاده کنید

    حلقه ها ( For-Loops [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ) :
    جهت مشخص شدن طریقه کار به کدها و Comment های زیر توجه کنید.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    جهت کسب اطلاعات بیشتر می توانید از لینک [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] استفاده کنید

    حلقه ها ( While-Loops [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ) :

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    جهت کسب اطلاعات بیشتر می توانید از لینک [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] استفاده کنید

    انتخاب ( Switch Statement [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ) :

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    جهت کسب اطلاعات بیشتر می توانید از لینک [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] استفاده کنید

    توابع ( Functions [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ) :
    تابع مجموعه دستور العملی است که با دریافت ورودی ها، پردازشی انجام داده و خروجی مناسب ارائه می دهد. یک تابع ممکن است مقدار ورودی نداشته باشد، همینطور ممکن است خروجی نداشته باشد. تعداد ورودی ها هر عددی می تواند باشد اما خروجی همیشه یکی است. یک تابع مثل زیر تعریف می شود:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    تابع بالا دارای ورودیهای number1 از جنس float و bool از جنس boolean می باشد. همینطور خروجی آن از جنس int می باشد. با استفاده از return می توان مقدار مورد نظر را از تابع خارج کرد. برای استفاده از تابع بالا از دستور زیر استفاده می کنیم.

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

    قالب یک فایل جاوا:
    یک فایل جاوا همیشه حاوی یک class یا یک interface است و نمی توان کدهای برنامه نویسی را همان جا نوشت بلکه باید داخل class ها نوشته شود. در ابتدای فایلهای جاوا نام package ـی که class در آن تعریف شده نوشته می شود. سپس لیستی از package ها و کلاسهای مورد نیاز این کلاس توسط import درخواست می شود. سپس کلاس تعریف شده و با تعریف فیلدها و متدها ( که در قسمت چهارم این آموزشها توضیح داده شده ) کلاس تکمیل می شود. به مثال زیر توجه کنید.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    توصیه ها:
    - در صورتیکه این مطالب برای شما تازگی داشت حتماً بسیار مطالعه کنید، چون شرط لازم برای ادامه آموزشها دانستن مقدمات برنامه نویسی خواهد بود.
    - ممکن است نتوانید کدهای بالا را اجرا کنید چون طریق اجرا فعلاً برای شما دشوار است اما در قسمتهای آینده هر جا که توانستید تمام کدهای بالا را آزمایش و با ابتکار عمل خود سعی در فهم دقیق دستورات نمایید.
    - اگر سرعتتان در تایپ و کار با ادیتور کم است، بسیار تمرین کنید. فاصله زمان تصمیم گرفتن به تغییر یا نوشتن یک قطعه کد تا اجرا کردن آن باید بسیار کوتاه باشد. یعنی چنانچه تصمیم به تغییر کد گرفتید اصلاً نباید به چگونگی تایپ آن فکر کنید بلکه بصورت غیر ارادی باید بتوانید این کار را انجام دهید. لذا در صورت نیاز بسیار تمرین کنید و یک قطعه کد را بارها و بارها بنویسید و ویرایش کنید.
    Last edited by uncocoder; 27-07-2012 at 03:14.

  15. این کاربر از uncocoder بخاطر این مطلب مفید تشکر کرده است


  16. #9
    داره خودمونی میشه uncocoder's Avatar
    تاريخ عضويت
    Mar 2011
    محل سكونت
    تهران - شهرآرا
    پست ها
    21

    پيش فرض شیء گرایی در جاوا - مقدماتی 1

    منبع این مطلب [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] است.
    در ویرایش مطالب سعی شده، تمامی کدها، جداول و جزئیات نوشتار، رعایت گردد. اما چنانچه ضعف هایی در مطالعه آن دیدید، می توانید از منبع اصلی هم استفاده نمایید.
    چنانچه پرسشی در خصوص آموزشها در ذهن شماست، لطفاً آنرا در سایت [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مطرح نمایید تا مورد استفاده مشترک کاربران هر دو سایت قرار گیرد.
    لطفاً با حمایت خود از این مطالب در سایت منبع، باعث ایجاد انگیزه مضاعف در به اتمام رسانیدن این آموزشها باشید.


    مقدمه بسیار مهم:

    در این قسمت قصد دارم، مبانی و تعاریف اولیه شیء گرایی OO - Object Oriented [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] را بیان کنم. چرا که در عصر حاضر برنامه نویسی بدون دانستن این مفاهیم کاری بیهوده و غیر اصولی است. از طرف دیگر توضیح دادن بسیاری از مفاهیم برنامه نویسی جاوا و بالتبع اندروید نیازمند دانستن این مفاهیم است. لذا این قسمت را با صبر و حوصله مطالعه و آنرا مهم بدانید.
    مفهوم شیء گرایی بر پایه ذات واقعی طبیعت که میراث بری است استوار است. اگر دنیای مادی را جامعه هدف مطالعات خود بگیریم، هر موجودی یک چیز است. شاید بهتر باشد از واژه چیز به Entity اشاره کنیم. در حالت کلی تر اگر هر Entity را یک Object بنامیم ( که در تئوری تفاوت هایی دارند ) آنگاه هر چیز یک Object است. لذا خواص کلی موجود در هر کلاس ( Class [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ) از Object ها به سایر Object ی زیر مجموعه آن کلاس به ارث ( Inheritence [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ) خواهد رسید.
    بطور مثال اگر اشیاء جامد را Object در نظر بگیریم آنگاه کلاس هر Object دارای خواصی نظیر ( اندازه، وزن، مکان، جنس و ... ) است. حال اگر دسته ای از زیر شاخه های این کلاس را مانند وسایل الکترونیکی ElectronicDevice در نظر بگیریم آنگاه غیر از خواص فوق دارای خواص دیگری نظیر ( ولتاژ ورودی، میزان مصرف انرژی و ... ) هستند. حال اگر دسته های Computer را زیر مجموعه ElectronicDevice در نظر بگیریم علاوه بر خواص کلاس Object شامل اندازه و ... ، شامل خواص کلاس ElectronicDevice نظیر ولتاژ ورودی و ... هم هست علاوه بر اینکه می تواند خود دارای خواص ویژه ای نظیر Cpu Model, Ram Size , ... باشد. به همین ترتیب هر کلاس دیگری می تواند خواص والدین ( superclass یا parent ) خود را به ارث ببرد و خواص منحصر به فرد خودش را هم دارا باشد. به این خواص قابل اندازه گیری Field می گوییم.
    علاوه بر Field ها که خواصی هستند قابل اندازه گیری مانند وزن و ...، می توان دستورالعمل هایی هم برای هر کلاس تعریف کرد که به آنها Method می گوییم. مثلاً در کلاس Object ، دستور العملی که به حرکت جسم منجر می شود را می توان یک Method دانست. چگونگی پیدایش، مردن، و ... هم می توانند Method های آن باشند. این دستورالعمل ها نیز مانند Field ها به کلاسهای زیرین ( subclass ) ها مثل ElectronicDevice قابل ارث بری هستند. اما ElectronicDevice هم برای خود دستورالعمل های منحصر به کلاسی دارد مثل چگونگی روشن شدن، خاموش شدن، کار کردن و ... . و همینطور در مثال Computer هم دستورالعمل های Boot شدن، Restart شدن و .... می توانند Method باشند. بنابراین یک Computer هم چون یک subclass از ElectronicDevice است، دستورالعمل های آن شامل روشن شدن، خاموش شدن، کار کردن را به ارث می برد و همینطور از Object یعنی چگونگی پیدایش، مردن، حرکت کردن و ...
    تا اینجای کار همه چیز خوب و شفاف به نظر می رسد اما وقتی چالش های بیشتری در عمل بوجود می آید تعاریف ساده فوق به تنهایی پاسخگوی مشکلات نخواهند بود. بطور مثال اگر دو دسته از کلاس ها مانند ElectronicDevice, اشیاء دارای درب را دو کلاس متفاوت subclass ـی از Object در نظر بگیریم، آنگاه یک Laptop زیرکلاسی از کدام خواهد بود؟ نه می شود اشیاء درب دار را زیر کلاس ElectronicDevice در نظر گرفت نه بالعکس. از طرفی Laptop هر دو خواص را دارد. در اینجاست که مفاهیم دیگری از شیء گرایی مانند Interface [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ها به کمک ما می آیند. و به همین ترتیب پیدا کردن راه حل مناسب برای مشکلات پیچیده تر نیازمند دانش گسترده تر در این باره خواهد بود.
    به همین منظور ما ابتدا از تعاریف ساده شروع می کنیم و تا پایان آموزشها هر از چند گاهی که با چالش جدیتری مواجه می شویم، مفاهیم جدیدتری از شیء گرایی را بیان می کنیم تا مشکل ما را حل کند. پس از ساده ترین مفاهیم شروع خواهیم کرد.

    آموزش:
    در جاوا یک کلاس به نام Object وجود دارد که هر چیزی که تعریف می شود به طور پیش فرض subclass ـی از Object هست. برای تعرف یک کلاس جدید در Java به ترتیب زیر عمل می کنیم.
    » بر روی AndroidCourse/src/com.uncocoder.course.lessons راست کلیک کنید و بزنید New->Class. توجه داشته باشید از این به بعد به عمل فوق می گوییم که یک کلاس در com.uncocoder.course.lessons بسازید.
    » در پنجره باز شده فقط قسمت Name را پر کنید و بنویسید Vehicle ، همانطور که می بینید در قسمت Superclass نوشته است java.lang.Object . این همان کلاسی است که هر کلاس دیگر از آن میراث بری می کند. حال Finish بزنید. کدی که به شما نمایش داده می شود، همانطور که از محتویاتش پیداست، تعریف یک کلاس را در بردارد. خط اول آن نام پکیجی که کلاس در آن باید ساخته شود را تعیین می کند. توجه داشته باشید که نام فایل جاوای ساخته شده دقیقاً با نام کلاس یکی است و اگر قرار باشد نام کلاس عوض شود باید نام فایل هم عوض شود و بالعکس.
    » کد Vehicle را به شکل زیر Edit کنید:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    » با تغییر کد دور Log مربع خط چینی بوجود می آید و ناشی از این است که Eclipse با اجازه شما می خواهد PackageName مناسب کلاس Log را وارد برنامه کند. با نگه داشتن موس روی آن، پنجره ای باز می شود که دارای گزینه Import Log ( android.util است. شما این گزینه را انتخاب کنید. در نتیجه عبارت import android.util.Log به بالای فایل اضافه می شود. از این پس در صورت دیدن این مربع خط چین برای Log کار فوق را انجام دهید و در آموزشها، دیگر به آن اشاره نخواهد شد.
    متغیرهای mPositionX, mPositionY, mPositionZ, mWeight, mSpeed همه همان Field هایی هستند که در بخش مقدمه از آن صحبت کردیم. و turnOn, turnOff, startMove متد هایی هستند که در بخش مقدمه در مورد آن صحبت کردیم. نام Vehicle که بالای turnOn نوشته شده است را Constructor [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] می گوییم. Constructor ها متدهای همنام با کلاس هستند که در پشت آنها عبارت void یا هر مقدار بازگشتی دیگر وجود نداشته باشد. هنگامیکه یک نمونه از کلاس ساخته می شود، این تابع در صورت وجود صدا زده می شود، اگر هم وجود نداشته باشد بازهم نمونه ساخته می شود اما بدون اینکه ما دخالتی در نحوه ساخت آن داشته باشیم.
    » عبارت Log در هم خط باعث می شود در log خروجی پروژه اندروید متن دلخواه با استفاده از تگ LOG چاپ شود. برای دیدن این خروجی می توانید به نحوه زیر عمل کنید:



    A: اگر این Tab در پنل پایین Eclipse موجود هست که روی آن کلیک کنید. اگر نه با رفتن به منوی Window->Open Perspective->Other گزینه All In One را انتخاب و OK بزنید.
    B: با زدن این گزینه و وارد کردن LOG در دو کادر اول و زدن OK یک Filter جدید برای log ها خواهید ساخت که فقط پیامهایی را نشان می دهد که با تگ LOG در برنامه نوشته شده ارسال شده اند.
    C: در صورتیکه برنامه به خطوط Log برسد، عبارات درج شده در پارامتر دوم این تابع، در این قسمت نمایش داده شود. اگر این اتفاق نیافتاد با رفتن به Devices در پنل سمت راست Eclipse و انتخاب emulator-5554 مشکل حل خواهد شد.
    ویرایش: توجه داشته باشید که در این مرحله کلاس تعریف شده است ولی هیچ نمونه ای از آن ساخته نشده، در این شرایط انتظار نخواهیم داشت که Log ها در خروجی ثبت شوند چرا که هم اکنون، متد و دستوری باعث نمی شود که این خطوط اجرا شوند. با تغییر زیر می توانید یک نمونه از کلاس را ایجاد کنید و سرانجام خروجی Log ها را مشاهده نمایید.
    کلاسها صرفاً یک الگو برای ساخت اشیاء هستند مثلاً می گوییم از جنس کامپیوتر، از جنس وسیله نقلیه و ... اما یک وسیله نقلیه یک نمونه ساخته شده از آن الگو ( یا همان کلاس است ). به این نمونه instance می گوییم. طریقه ساخت یک instance از کلاس Vehicle به طریقه زیر ممکن است. در پروژه قسمت سوم می خواهیم با کلیک شدن بر روی دکمه یک instance از Vehicle بسازیم. پس کاریهای زیر را انجام دهید:
    » با باز کردن فایل AndroidCourseActivity.java متد initializeUi را به شکل زیر تغییر دهید:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    خط 10: یک نمونه از Vehicle را می سازیم. به علت اینکه Constructor این کلاس را بطوری تعریف کرده ایم که یک پارامتر float و یک int بگیرد، باید با همون الگوی ساخته شده آنرا صدا بزنیم، در غیر اینصورت Eclipse از کد ما خطا می گیرد.
    خط 11: به نمونه ساخته شده می گوییم که turnOn کند
    خط 12: به نمونه ساخته شده می گوییم که startMove کند
    خط 13: به نمونه ساخته شده می گوییم که turnOff کند
    توجه داشته باشید که با اجرای این برنامه و کلیک روی دکمه پنل LogCat لیست پیامهای ارسالی از سمت شما با استفاده از Log.i را نمایش می دهد.

    حالا برای اینکه خواصی که این کلاس از Object به ارث برده است را ببینید داخل یکی از متد ها کلید Ctrl+Space را بزنید. پنجره زیر نمایش داده می شود:


    متدها و فیلدهایی که دور آن کادر قرمز رنگ کشیده ام متعلق به کلاس Vehicle هستند که ما تعریف کرده ایم و اگر به آخرین کلمه در آن سطر توجه کنید این را در می یابید. اولین آیتم هم Constructor است که از Icon آن که شبیه یک C است مشخص می شود. باقی آیتم های این لیست از کلاس Object ارث بری شده اند که قابل استفاده در این کلاس هم می باشند. باز هم از کلمه آخر این لیست کلاس دربرگیرنده متد یا فیلد مشخص است. همینطور در این لیست نوع داده Field ها مثل float, int مشخص است. همینطور نوع برگشتی متد ها نیز مشخص است که ما برای همه متدها فعلاً void تعریف کرده ایم. به پنجره باز شده Code Completion یا Code Suggestion می گویند.

    مفهوم Visibility:
    » برای روشن شدن این مفهوم کد داخل Vehicle را به شکل زیر تغییر دهید.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    خط 14: یک فیلد private تعریف کرده ایم و با استفاده از دو متد به نامهای setType و getType می توانیم آنرا با مقدار داده شده Set کنیم یا مقدار آنرا بخوانیم. توجه کنید که خروجی getType از نوع int است و همان نوعی است که mType دارد. با استفاده از عبارت return می توانیم مقداری را از متد به عنوان خروجی به سمت صدا زننده متد برگردانیم. اصطلاحاً به استفاده از دو متد با شکل و شمایل setType و getType می گویند Encapsulate کردن mType . حالا این چیست و چه کمکی به ما میکند و به Visibility چه ارتباطی دارد را با تغییر کد زیر می توان بهتر درک کرد.

    » کد متد initializeUi کلاس AndroidCourseActivity را به شکل زیر تغییر دهید:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    همانطور که مشخص است در خط 15 توانستیم مقدار فیلد mPositionX را set کنیم اما همین کار را در خط 18 با فیلد mType نمی توانیم انجام دهیم و منجر به خطا از سمت Eclipse می شود. چرا که فیلد mPositionX یک فیلد Public ( عمومی ) است و از بیرون کلاس قابل خواندن و نوشتن است اما فیلد mType یک فیلد private ( خصوصی ) است و فقط از داخل خود آن کلاس قابل خواندن و نوشتن است. بنابراین با استفاده از متدهای setType, getType که هر دو public هستند می توانیم از بیرون کلاس مقدار mType را تحت تأثیر قرار دهیم. همانطور که در خطوط 20, 21 میبینید.
    به این نوع دیدن متغیرها ( که گاهی مخفی و گاهی عمومی ) است Visibility می گوییم. همین شرایط در مورد متد ها هم برقرار است. یعنی می توانیم متدهای private تعریف کنیم که فقط از داخل کلاس قابل صدا زدن هستند و از بیرون قابل دید نیستند. اگر دقت کرده باشید turnOn, startMove, turnOff و همینطور Constructor دارای public visibility هستند و به این خاطر بود که توانستیم از خارج از کلاس آنها را صدا بزنیم.
    حسن Visibility بسیار زیاد است شامل:
    - محدود کردن کد، بنابراین سایر برنامه نویسان چیزهایی را می توانند تغییر دهند که ما اجازه داده ایم.
    - حفظ کردن پایداری برنامه بدلیل محدود شدن برنامه نویس در شرایط گمراه کننده و انتخاب مسیر صحیح تر
    - چک کردن مقادیر ورودی و سپس واریز آنها در متغیر
    - انجام عملیات خاص در هنگام خواندن مقدار متغیر
    - خلوت شدن لیستی از متغیر ها و متد ها و بنابراین راحتتر پیدا کردن اطلاعات لازم در code completion
    - و بسیاری دیگر...

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

    سورس برنامه:
    می توانید سورس را از آدرس زیر دانلود کنید:
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]



    توصیه ها:
    - اگر با مفاهیم شیء گرایی ( Object Oriented [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ) آشنایی لازم را ندارید بهتر است کتابی در مورد java تهیه و مطالعه کنید، با اینکه در این آموزشها با آن خواهیم پرداخت، اما مطالعه شما بهتر است.
    - با همین مفاهیم اولیه در مورد شیء گرایی بسیار تمرین کنید و خود را در این مفاهیم قوی کنید تا در آموزشهای آتی بسیار راحتتر عمل کنید.
    Last edited by uncocoder; 27-07-2012 at 03:14.

  17. این کاربر از uncocoder بخاطر این مطلب مفید تشکر کرده است


  18. #10
    داره خودمونی میشه uncocoder's Avatar
    تاريخ عضويت
    Mar 2011
    محل سكونت
    تهران - شهرآرا
    پست ها
    21

    پيش فرض شیء گرایی در جاوا - مقدماتی 2

    منبع این مطلب [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] است.
    در ویرایش مطالب سعی شده، تمامی کدها، جداول و جزئیات نوشتار، رعایت گردد. اما چنانچه ضعف هایی در مطالعه آن دیدید، می توانید از منبع اصلی هم استفاده نمایید.
    چنانچه پرسشی در خصوص آموزشها در ذهن شماست، لطفاً آنرا در سایت [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مطرح نمایید تا مورد استفاده مشترک کاربران هر دو سایت قرار گیرد.
    لطفاً با حمایت خود از این مطالب در سایت منبع، باعث ایجاد انگیزه مضاعف در به اتمام رسانیدن این آموزشها باشید.


    مقدمه:

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

    آموزش:

    در گذشته های نه چندان دور برنامه نویسی به این شکل بود که فایلهای خالی تشکیل می دادیم و دستورات را پشت سرهم می نوشتیم و اجرا می شد. در زمان حاضر برنامه نویسی به این شکل مگر در اسکریپ ها ( Scripting Languages [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ) کاملاً غیر مرسوم و بلا استفاده است، بلکه ما از کلاسها برای نوشتن کدهای خود استفاده می کنیم که خواص بسیاری دارند و محدودیتهایشان هم سودمند است.
    یکی از این تغییرات موجود در جاوا، ثابتها Constants [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] هستند، در هر کلاس مرتبط، میتوان const های خاص آن کلاس را تعریف کرد. در Java واژه const وجود ندارد. برای روشن شدن تعریف کدهای جلسه قبل را به شکل زیر تغییر دهید.
    » کد مربوط به کلاس Vehicle.java را به شکل زیر تغییر دهید.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    خط 7 تا خط 10: چهار const از نوع int با مقادیر 0 تا 3 را با دید public تعریف کردیم، بنابراین از هر کلاسی قابل استفاده است.
    خط 12: یک const از نوع String با مقدار "LOG" را با دید private تعریف کردیم، بنابراین فقط از داخل این کلاس قابل استفاده است.
    خط های حاوی Log.i : با استفاده از ثابت DEBUG_LOG که مقدار "LOG" را دارد، log ها را چاپ می کنیم.
    خط 34 تا 53: با استفاده از if..elseif...else مقادیر مختلف mType را چک کرده و پیغام مناسب را log می کنیم.
    خط 45 و 49: با استفاده از return از ادامه متد منصرف می شویم بنابراین باقی خطوط بعد از این خط ها اجرا نخواهند شد.

    همانطور که از کدهای بالا مشخص است یک const با استفاده از واژه static final تعریف می شود و به کمک visibility نوع دید سایرین به آن را تعیین می کنیم. برای نمایش مشخص تر const ها آنها را با حروف تماماً بزرگ نمایش داده و برای جدا کردن کلمات از _ استفاده کنیم.
    » حال کد مربوط به متد initializeUi در کلاس AndroidCourseActivity.java را به شکل زیر تغییر دهید.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    خط 15: با استفاده از ثابت TYPE_CAR مقدار mType را set می کنیم
    خط 18: این مقدار خواندن نخواهد بود چرا که با توجه به تعریف آن در کلاس Vehicle از private visibility تبعیت می کند.

    با توجه به مثال بالا می توانیم در مورد final و static بیشتر صحبت کنیم. به کلمات static, final, private, public, protected اصطلاحاً modifiers می گوییم.

    Modifiers [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] :

    static modifier :
    با استفاده از آن باید به یک Field یا Method مستقیماً از طریق نام کلاس دسترسی پیدا کرد نه از طریق instance گرفته شده از کلاس یعنی می نویسیم Vehicle.TYPE_CAR و نمی نویسیم myVehicle.TYPE_CAR. با توجه به نوشته فوق مشخص است که حتی اگر instance ـی هم از آن کلاس نساخته باشیم، آن member ( فیلد یا متد ) قابل استفاده خواهد بود. این موضوع در جاهای متفاوتی به ما کمک می کند. فرض کنید که می خواهیم تعداد Vehicle های ساخته شده را در جایی ذخیره کنیم، دقیقا مانند این که بخواهیم بگوییم « از این نوع وسیله نقلیه چند تا داریم ». برای بیان جمله قبل نیازی به ساخت حتی یک نمون وسیله نقلیه هم نیست. بنابراین می توانیم در کلاس Vehicle بنویسیم:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و برای تغییر آن ( اضافه کردن به آن ) می توانیم به صورت زیر ( مثلا در متد initializeUi ) بنویسیم:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اگر از static قبل از نام متد استفاده کنیم، همانطور که می توانستیم به فیلد را مستقیماً از نام کلاس دسترسی داشته باشیم، می تواینم به متد هم مستقیم دسترسی داشته باشیم، این موضوع هم شبیه این است که بگوییم « این نوع وسیله نقلیه چگونه سوخت گیری می کند »، برای بیان عبارت قبل هم نیازی به ساخت یک نمونه از وسیله نقلیه ندارم.
    اینگونه متدهای استاتیک معمولاً Helper نامیده می شوند و کاربردهای مستقل از instance دارند. بطور مثال ممکن است متدی بخواهیم که یک عدد تصادفی تولید کند. می توان این متد را داخل کلاسی به نام MathHelpers تعریف کرد و هر جای دیگر با دستور MathHelper.getRandom آنرا فراخواند.
    final modifier :
    با استفاده از آن می توان به java compiler و eclipse فهماند که این member ( فیلد یا متد ) پس از تعریف اولیه مجدداً قابل تعریف نیست.

    اگر این modifier قبل از نام فیلد استفاده شود به معنی این است که فیلد قابل مقداردهی مجدد نیست پس در همان خط باید مقدار دهی شود.
    اگر قبل از نام پارامتر استفاده شود به معنی این است که نمی توان پارامتر را دوباره تغییر داد و فقط به منظور خوانده شدن استفاده می شود.
    اگر قبل از نام متد استفاده شود به معنی این است که نمی توان متد را Override ( که بعداً توضیح می دهیم ) کرد.
    اگر قبل از نام کلاس استفاده شود به معنی آن است که نمی توان از کلاس، subclass ـی تهیه کرد.
    اگر به همراه static قبل از نام فیلد بکار رود به معنی تعریف یک ثابت است.
    بنابراین بیشتر کاربرد final برای امنیت و کم کردن خطای برنامه نویس ( برنامه نویسان ) است.
    private modifier :
    مورد استفاده شده فقط در داخل کلاس قابل دید است و خارج از کلاس قابل دیدن نیست. این موضوع عملیات داخل کلاس را که معمولاً خیلی شلوغ و پر متغیر است را به بیرون انتقال نداده و باعث تمیز شدن کد و راحتی استفاده از کلاس می گردد.

    protected modifier :
    مورد استفاده شده فقط در داخل کلاس و زیر کلاسهای آن قابل دید است و خارج از آنها قابل دید نیست. این موضوع هم به تمیز بودن کد کمک شایانی می کند.

    public modifier :
    مورد استفاده شده در همه کلاسها قابل دید است. توصیه می شود از این modifier در مکان صحیح استفاده کنید و اگر واقعاً دید در همه کلاسها لازم نیست از آن استفاده نکنید.

    default modifier :
    اگر هیچ کدام از private, protected, public قبل از نام فیلد یا متد استفاده نشود از default modifier استفاده شده است و معنی آن اینست که مورد استفاده فقط در کلاسهایی قابل دید است که در یک package قرار داشته باشند. این modifier هم برای نوشتن module ها بسیار کاربرد دارد. جدول زیر نمای واضحتری را نشان می دهد.









    مفهوم this:

    همانطور که در بحث کلاس اشاره شد، برای دسترسی به متدها و فیلدهای غیر استاتیک یک کلاس نیاز به ساخت یک نمونه ( instance ) از آن کلاس داریم. با استفاده از این instance و operator نقطه ( . ) می توانیم به متدها و فیلدهای public ( و بعضاً protected ) دسترسی پیدا کنیم. حال عبارت this چه کمکی به ما می کند. اگر داخل متدهای غیر استاتیک از کلمه this استفاده شود به آن instance ـی که این متد را فراخوانی کرده اشاره می کند، پس می توانیم آنرا به سایر متدها بصورت یک پارامتر از جنس همان کلاس انتقال دهیم. انتقال دادن آن به سایر متدهای غیر استاتیک آن کلاس کار بیهوده ای است چون آنجا هم خود this معنی دارد، اما انتقال دادن آن به متدهای استاتیک همان کلاس و مخصوصاً به متدهای استاتیک و یا غیراستاتیک سایر کلاسها کاملاً مرسوم و کاربردی است.

    » کد زیر را به کلاس Vehicle.java بعد از startMove اضافه کنید:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    » همینطور کلاس NetworkManager زیر را به نحوی که قبلاً گفته شده در com.uncocoder.course.lessons بوجود آورید و آنرا به شکل زیر edit کنید:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    با دیدن دو کد بالا می توان مفهوم this را به خوبی درک کرد.

    سورس برنامه:

    می توانید سورس را از آدرس زیر دانلود کنید:
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]


    توصیه ها:

    - اگر با مفاهیم شیء گرایی ( Object Oriented [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] ) آشنایی لازم را ندارید بهتر است کتابی در مورد java تهیه و مطالعه کنید، با اینکه در این آموزشها با آن خواهیم پرداخت، اما مطالعه شما بهتر است.
    - با همین مفاهیم اولیه در مورد شیء گرایی بسیار تمرین کنید و خود را در این مفاهیم قوی کنید تا در آموزشهای آتی بسیار راحتتر عمل کنید.
    Last edited by uncocoder; 27-07-2012 at 03:14.

  19. این کاربر از uncocoder بخاطر این مطلب مفید تشکر کرده است


صفحه 1 از 2 12 آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •