/
  • آموزش شی گرایی

  • صفحه‌ها (6):
  • ارسال پاسخ   امتیاز موضوع:
    • 7 رأی - میانگین امیتازات: 4.43
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی آموزش شی گرایی
    نویسنده پیام
    Alimokhlesi آفلاین
    مدیر کل
    **********

    ارسال‌ها: 457
    تاریخ عضویت: ۱۳۸۷ آذر ۲۵
    اعتبار: 13
    تشکرها : 601
    ( 1126 تشکر در 412 ارسال )
    ارسال: #1
    آموزش شی گرایی
    می خوام از ابتدا و پایه مبتحث مربوط به برنامه نویسی شی گرارو اینجا بزارم
    احتمالا یه تاپیکی هم موازی تو تجزیه و تحلیل ومدیریت پروژه بازکنم
    امید وارم با راهنایی هاتون کمک کنید
    Smile
    __________________________________________________________________________
    علم تاج افتخار دنیا و یادگار پس از مرگ است
    (آخرین ویرایش در این ارسال: ۱۳۸۸ ارديبهشت ۲۲ ۰۷:۱۳ عصر، توسط Y.P.Y.)
    ۱۳۸۷ دي ۲۴ ۱۲:۳۳ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : parvane Na3r zoghal molana php farshad_persia farrokh yaqubian Maya Y.P.Y cyletech shgninc abedi98 almas M.J reza.sh texas labkhand4u Mohsen Neo Webprograming hamed2000 Dimansh ice_amir esmaeel157 harand
    php آفلاین
    hossein
    ****

    ارسال‌ها: 629
    تاریخ عضویت: ۱۳۸۷ دي ۴
    اعتبار: 13
    تشکرها : 467
    ( 798 تشکر در 277 ارسال )
    ارسال: #2
    ...
    خوب من خودم مبحث شئ گرایی رو شروع می کنم امیدوارم بتونم این مبحث رو درست مطرح کنم و بقیه هم همکاری کنن.

    برنامه های شی گرا معمولا به اشیائی تقسیم می شوند که با هم تعامل دارند. این بدان معنی هست که بیشتر برای نرم افزار های بزرگ/پیچیده کاربرد دارد.
    در واقع اشیا در زبان برنامه نویسی همان اشیا در دنیای واقعی با همان متدها و خاصیت ها هستند.
    به عنوان مثال برای تعریف کلاس کارمند باید اول متد ها(رفتارها) و خاصیت های این شی را مشخص کنیم خوب شی کارمند دارای خاصیت هایی مانند: نام و نام خانوادگی , سمت و... که بعضی از این خاصیت ها جزء خواص عمومی شی هستند و بعضی جزء خواص خصوصی هستند و جزء در داخل کلاس در بیرون از ان نباید قابل دسترس باشند.
    شی کارمند علاوه بر این خاصیت ها دارای متدهایی نیز می باشد که همان توابع در دنیای برنامه نویسی هستند: متدی برای چک صحت اطلاعات وارد شده , متدی برای بستانکاری , متدی برای تعیین بدهکاری , و متدی برای تعیین حقوق و...

    حال با تعیین این متد ها و مشخصه ها می توان کلاس یا کلیشه اصلی را ساخت.
    کلاس مانند کلیشه در کارخانه می مانند که نمونه ها را از روی آن کلیشه می زنند در اینجا نیز ما نمونه ها را از روی کلاس ساخته شده می زنیم(به عبارت دیگر کد خود را به چند شی تقسیم می کنیم).


    تعریف/ایجاد یک کلاس


    برای تعریف یک کلاس از کلمه کلیدی class و در جلوی آن نام کلاس استفاده می کنیم و در درون آن متد ها و خصوصیات کلاس را تعریف می کنیم. در اینجا یک کلاس با نام MyClass ایجاد کرده ایم:
    کد PHP:
    <?php
    class MyClass
    {

        
    # List of properties

        # List of methods

    };
    ?>
    تعریف کلاسی با عنوان شخص که یک کلاس ساده با یک مشخصه نام و دو متد برای دریافت اطلاعات و برگشت اطلاعات می باشد:
    کد PHP:
    class MyClass
    {
        private 
    $MyVariable;
        
        function 
    setVariable($MyVariable)
        {
            
    $this->MyVariable$MyVariable;
        }
        function 
    getVariable()
        {
            return(
    $this->MyVariable);
        }

    }; 
    برای دستیابی به خصوصیات(متغیر، تابع...) کلاس از داخل متد ها از کلمه کلیدی this$ استفاده می شود. مثال:
    کد PHP:
    $this->VariableName$Value
    set, get در اول نام توابع به عنوان یک قرار داد بین برنامه نویسان استفاده می شود(اختیاری).
    Set در اول تابع به معنی این می باشد که تابع داری ورودی می باشد.
    get نیز به معنی این می باشد که این تابع فقط دارای خروجی می باشد.

    در واقع استفاده از این دو نام دو کاربرد دارد:
    1: به راحتی دیگر برنامه نویسان نیز می توانند کدهای شما را درک کنند.
    2: اینکار باعث تمرکز بیشتر در کد نویسی می شود(در یک تابع هم ورودی هم خروجی نداشته باشین) و نظم بیشتری به برنامه شما می دهد.
    در مورد کلمات کلیدی protected/private/public بعداً صحبت خواهیم کرد.


    استفاده از کلاس


    برای استفاده از کلاس باید یک نمونه از آن را ساخت. برای ساخت یک نمونه از کلاس باید به صورت زیر عمل کرد:
    کد PHP:
    $obj_MyClass= new MyClass(); 
    حال توسط شی ساخته شده می توان به متد ها و خصوصیت آن دسترسی داشته باشیم:
    کد PHP:
    $obj_MyClass->setVariable('IranPHP');
    echo(
    $obj_MyClass->getVariable()); 
    __________________________________________________________________________
    (آخرین ویرایش در این ارسال: ۱۳۸۸ ارديبهشت ۲۵ ۰۹:۰۰ عصر، توسط Y.P.Y.)
    ۱۳۸۷ بهمن ۱۰ ۰۲:۱۲ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : zoghal molana scooter Y.P.Y bigane cyletech shgninc almas shahryar reza10wert mooosti Mohsen Neo Majidi mj123 hamed2000 maxsoft
    Alimokhlesi آفلاین
    مدیر کل
    **********

    ارسال‌ها: 457
    تاریخ عضویت: ۱۳۸۷ آذر ۲۵
    اعتبار: 13
    تشکرها : 601
    ( 1126 تشکر در 412 ارسال )
    ارسال: #3
    RE: آموزش شی گرایی
    خوب از دوستان ممنونم كه لطف كردن و بحث و ادامه دادن
    اگه اجازه بدين من دوباره شروع كنم
    مبحث و از اينجا شروع مي كنم : مي خوام نظراتتون رو بدونم و روشون كار كنم
    يه نكته اي رو متذكر بشم كه من به دنبال ايجاد يك نهضت در ادامه روند PHP و برنامه نويسان اون در ايرانم و هدفم هم از اين سازمان همينه.
    خواهش مي كنم نظراتتون ر ارسال كنيد وهر چي ميدونيد در پاسخ سئوالام بگين اين به پيشرفت پروژه كمك مي كنه
    ------------------
    اضلا شي گرايي چيه ؟ شي تو يه پروژه يعني چي؟ كلاس چيه ؟ چرا بايد از سطوح دسترسي استفاده كنيم؟مدل طراحي نرم افزار چيه؟
    در مورد اين سئوالات هر چي ميدونيد بدون ابهام بگيد
    اگر نمي خوايد پست بديد مي تونيد پيام خصوصي بدين .
    منتظرم
    Smile
    __________________________________________________________________________
    علم تاج افتخار دنیا و یادگار پس از مرگ است
    ۱۳۸۸ خرداد ۱۷ ۰۱:۳۵ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : Y.P.Y oia zoghal Maya reza.sh Mohsen Neo mj123
    Alimokhlesi آفلاین
    مدیر کل
    **********

    ارسال‌ها: 457
    تاریخ عضویت: ۱۳۸۷ آذر ۲۵
    اعتبار: 13
    تشکرها : 601
    ( 1126 تشکر در 412 ارسال )
    ارسال: #4
    RE: آموزش شی گرایی
    خوب ممنون که به شروع دوبار په این مبحث توجه کردین
    امید وارم دوستان بیشتر به سئوالات پاسخ بدن .این به پیشبرد مبحث بیشتر کمک می کنه.البته تعداد پاسخشون رو به صورت پیام خصوصی دادن که من واقعا ازشون ممنونم.
    بریم سر اصل مطلب :
    شی گرایی یک دیدگاه به سیستم های نرم افزاری برای شبیه سازی دنیای واقعی به دنیای نرم افزار و همچنین برطرف کرد نقایصی که سیستم مدیریت نرم افزار گذشته مانند SSADM و سیستم های ماژولار و ...داشتنه.البته این دیدگا دیدگاه گذشتگان رو نفی نمی کنه بلکه اونو توسعه میده . نتیجه این دیدگاه ساخته شدن نسل جدید از زبان های برنامه نویسی که یکی از پیشتازترین های آنهاJAVA است.
    دوستانی که این دیدگاه رو داشتن اومدن و به هر چیزی که در سیستم شون کار انجام می داد یا تحت تاثیر قرار میگرفت یا چیز دیگه ای رو تحت تاثیر قرار میداد رو شی نامیدن .گفتن که اشیا نرمافزاری مانند اشیا واقعی رفتار دارند و درمواقعی که لازم باشه از خودشون واکنش نشون میدن و البته خصوصیت هایی هم برای مدیریت و کار باهاشون وجود داره.
    این دوستان برای اینکه بتونن اطلاعات اشیا رو مدیریت کنن اومدن و کلاس رو ساختن.در واقع اشیا در کلاس ها پیاده سازی از دیدگاه کدینگ میشن و بعدا قابل تبدیل و استفاده در شی میشن.
    وقتی که برنامه شی گرا ایجاد شدن ،جون اشیا می تونستن کار انجام بدن لازم شد براشون تعیین محدوده بشه و حدومرز تعریف بشه.این کارم انجام شد وسطوح دسترسی که سرچشمه پیشرفت های زیادی در تفکر شی گرا بود به وجود اومد.
    بعدا دوستانی گه اعتقاد به مهندسی نرم افزار داشتن برای استفاده از این دیدگاه و اینکه همه بتونن با هاشون کار کنن مدل های نرمافزاری پیاده سازی سیستم های شی گرا را ارئه دادن
    براجلسه بعدی :
    ازتون میخوام نظرات و انتقادات وپیشنهاداتتون رو بگین
    هر چی درمورد مهندسی نرم افزار و ... میدونید بگین بی زحمت
    هم اکنون نیاز منیاری سبزتان هستم
    Smile
    __________________________________________________________________________
    علم تاج افتخار دنیا و یادگار پس از مرگ است
    ۱۳۸۸ خرداد ۱۸ ۰۲:۱۹ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : Na3r Maya Mohsen Neo
    Na3r آفلاین
    ناصر خلقی
    *****

    ارسال‌ها: 412
    تاریخ عضویت: ۱۳۸۷ دي ۳
    اعتبار: 11
    تشکرها : 257
    ( 576 تشکر در 308 ارسال )
    ارسال: #5
    RE: آموزش شی گرایی
    نقل قول: جون اشیا می تونستن کار انجام بدن لازم شد براشون تعیین محدوده بشه و حدومرز تعریف بشه.این کارم انجام شد وسطوح دسترسی که سرچشمه پیشرفت های زیادی در تفکر شی گرا بود به وجود اومد.

    آقای مخلصی اگه ممکنه این بحث رو بیشنر باز کنید ، اگه یادتون باشه قبلا در این مورد بحث کردیم تو یه جای دیگه ( می خوام به یه جمع بندی کلی تو این فروم برسیم )

    نقل قول: هم اکنون نیاز منیاری سبزتان هستم
    ایول ، این سبزو خوب اومدید
    ممنون
    (آخرین ویرایش در این ارسال: ۱۳۸۸ خرداد ۱۸ ۰۲:۳۴ عصر، توسط Na3r.)
    ۱۳۸۸ خرداد ۱۸ ۰۲:۳۱ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : Mohsen Neo molana
    Alimokhlesi آفلاین
    مدیر کل
    **********

    ارسال‌ها: 457
    تاریخ عضویت: ۱۳۸۷ آذر ۲۵
    اعتبار: 13
    تشکرها : 601
    ( 1126 تشکر در 412 ارسال )
    ارسال: #6
    RE: آموزش شی گرایی
    ببینید دوستان درحال حاضر توی PHP هر متغییری رو تعریف کنید هر جای دیگه صفحه می تونید ازش استفاده کنید.این اصلا خوب نیست .تو پروِژه های بزرگ این شیو کار رو به سمت شکست در پروژه می رسونه . یا باز نویسی مجدد رو زیاد میکنه. برای جلوگیر از این اتفاق میان برای هر شی و خصوصیاتش و رفتاراش محدوده تعریف می کنن. البته مسائلی مثل مدیریت حافظه و فیر هم اینجا وسط میاد که به جای خودش بحث میشه روش.

    من فردا نکات جذابی رو در باره مهندسی نرم افزار میگم
    تا فردا
    Smile
    __________________________________________________________________________
    علم تاج افتخار دنیا و یادگار پس از مرگ است
    ۱۳۸۸ خرداد ۱۹ ۰۴:۵۶ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : zoghal Na3r php molana reza.sh Mohsen Neo
    php آفلاین
    hossein
    ****

    ارسال‌ها: 629
    تاریخ عضویت: ۱۳۸۷ دي ۴
    اعتبار: 13
    تشکرها : 467
    ( 798 تشکر در 277 ارسال )
    ارسال: #7
    RE: آموزش شی گرایی
    برداشتی که من روی مهندسی نرم افزار دارم در واقع تجزیه وتحلیل روش قبل از پیاده سازی برای بالا بردن سطح بازدهی کار هست .
    حالا این مهندسی نرمافزار روشهای مختلفی داره که بسته به روش مورد استفاده در برنامه نویسی بعضی نکات دیگه از یکی از این روش ها میریم.

    در مهندسی نرم افزار سطح تجرید وجود داره یعنی سطح نگاه ما به کار یا ریز شدن روی موارد کار که همیشه از سطح تجرید بالا شروع و به سطح تجرید پایین خطم میشه .
    البته در حد اطلاعات خودم نوشتم که اقای مخلصی زحمت کامل کردنش رو میکشن
    __________________________________________________________________________
    (آخرین ویرایش در این ارسال: ۱۳۸۸ خرداد ۱۹ ۱۱:۲۱ عصر، توسط php.)
    ۱۳۸۸ خرداد ۱۹ ۱۱:۱۸ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : molana oia Mohsen Neo
    Alimokhlesi آفلاین
    مدیر کل
    **********

    ارسال‌ها: 457
    تاریخ عضویت: ۱۳۸۷ آذر ۲۵
    اعتبار: 13
    تشکرها : 601
    ( 1126 تشکر در 412 ارسال )
    ارسال: #8
    RE: آموزش شی گرایی
    مشکل اصلی در نگرش شی گراء درک اشیا و رابطه ی آنها با همه.
    کسی بتونه اینو درک کنه شی گرایی رو درک کرده.
    باید دقیقا بدونید که چی کار می خواید بکنید و چه چیز هایی توسیستون قراره کار کنن.
    برای شروع باید مفهومی به نام Use Case رو بدونید:
    Use Case:انجام دهنده ی یک عملیات را می نامند. در واقع می توان ۀن را نقطه شروع بخشی از سیستم نامید.
    پس برای درک بهتر اول باید Use Case ها را درک کرد.
    مثال هم می زنم.....
    Smile
    __________________________________________________________________________
    علم تاج افتخار دنیا و یادگار پس از مرگ است
    ۱۳۸۸ خرداد ۲۲ ۰۹:۵۸ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : zoghal molana Mohsen Neo maxsoft
    Alimokhlesi آفلاین
    مدیر کل
    **********

    ارسال‌ها: 457
    تاریخ عضویت: ۱۳۸۷ آذر ۲۵
    اعتبار: 13
    تشکرها : 601
    ( 1126 تشکر در 412 ارسال )
    ارسال: #9
    RE: آموزش شی گرایی
    درباره اشیا ء :
    در دنیای واقعی اشیا زیادی وجود دارند که هرکدام بسته ساختارشان در دونوع متحرک و ثابت قرار می گیرند. اگه خوب فکر کنید می بینید که این به تفکر شما برمی گردد .شما هم همه چیز رو به صورت شی میبینید . انسانهای اطرافتان مانند راننده تاکسی ،هم دانشگاهی و.... ابزارهای اطرافتان مانند تلفن همراه ، خودرو ها ،تلوزیون و.....
    جدا از نوع شی همه اشیا دارای خصوصیات ( مانند اندازه ، رنگ و ....) و رفتار ( مانند چرخیدن توپ ، حر کت ماشی ، خدیدن انسان و...) هستند .
    تقریبا همیشه میشه وجه تشابهی بین اشیا مستقل از نوع شون پیدا کرد .
    از همین مقایسه ها و نظاره کردن رفتارهاست که به ارتباط بین اشیا پی میبریم . یک روش در نیای نرم افزار به نام روش طراحی شی گرا (object - oriented design) وجود داره که به بیان اشیا ء و ضعیت آنها در دنیای کامپیوتر می پردازه .
    OOD بامشاهده رابطه بین اشیا و یا تکر خصوصیات و رفتار های آنها به مهات آنها پی میبره و اونارو پیاده می کنه. تو این مرحله OOD از وراثت بهره برداری میکنه.
    جالب اینجاست که OOD ارتباط بین اشیاء رو از طریق ارسال پیام میان اشیاء مدیریت می کنه. از طرفی با توجه به مفاهیم سطوح دسترسی سعی در کپسوله سازی داده می کنه تا تداخل اطلاعات برای اشیا ء به وجود نیاد . از انجایی که اشیا از کلاس ها نمونه کیری میشن نقش اونها بسیار مهم میشه . در دنیای شی گرا تمر کز برنامه نویسان روی اشیاءست . مشکل برنامه نویسان PHP اینه که چون غیر شی گرا می تونن کد نویسی کنن دیگاه شی گراییر وندارن و کمتر دنبالش میرن ( البته جسار به برنامه نویسان عزیز و محترم نباشه ها . منظ.ر بچه های که این مطلبو می خونن نیست Big Grin ) .با توجه به توضیحات ارائه شده میشه گفت که کلاس به معنای نقشه ترسیم یک خوانه است.

    نظرات و انتقادات یادتون نره. تابعد
    Smile
    __________________________________________________________________________
    علم تاج افتخار دنیا و یادگار پس از مرگ است
    ۱۳۸۸ تير ۱ ۰۴:۳۹ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : oia zoghal Na3r admin Y.P.Y reza.sh dodgy Mohsen Neo
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,734
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1360
    ( 6194 تشکر در 3437 ارسال )
    ارسال: #10
    RE: آموزش شی گرایی
    هيچ وقت با اين حرف كه اشيا داخل برنامه نويسي رو با اشيا بيرون و محيط مقايسه كنيم موافق نبودم
    از نظر من كه دو دنياي متفاوت هستند هرچند شباهتهايي رو با هم دارن اما تفاوتهاي بسياري رو با همديگه دارن. شي رو از نظر من بهتره با معناي خود در برنامه نويسي تعريف كنيم. نبايد يادمون بره چه محدوديتهايي داريم و اين شي ها چه مزايا و محدوديت هايي رو دارن. از نظر من بايد هر چيزي رو با كاربردش تعريف كرد

    كلا نظرات خودم هست با كپي رايت از خودم منبع ندارمBig Grin
    ۱۳۸۸ تير ۲ ۰۷:۱۷ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : Na3r mahyar1365 alic
    « قدیمی تر | تازه‌ تر »

  • صفحه‌ها (6):
  • ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS