تحقیق درباره مقدمه ای بر برنامه نويسی شی گرا

راهنمای سایت

سایت اقدام پژوهی -  گزارش تخصصی و فایل های مورد نیاز فرهنگیان

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

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

3 - درهنگام خرید اگر ایمیل ندارید ، در قسمت ایمیل ، ایمیل http://up.asemankafinet.ir/view/2488784/email.png  را بنویسید.

http://up.asemankafinet.ir/view/2518890/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C%20%D8%AE%D8%B1%DB%8C%D8%AF%20%D8%A2%D9%86%D9%84%D8%A7%DB%8C%D9%86.jpghttp://up.asemankafinet.ir/view/2518891/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C%20%D8%AE%D8%B1%DB%8C%D8%AF%20%DA%A9%D8%A7%D8%B1%D8%AA%20%D8%A8%D9%87%20%DA%A9%D8%A7%D8%B1%D8%AA.jpg

لیست گزارش تخصصی   لیست اقدام پژوهی     لیست کلیه طرح درس ها

پشتیبانی سایت

در صورت هر گونه مشکل در دریافت فایل بعد از خرید به شماره 09159886819 در شاد ، تلگرام و یا نرم افزار ایتا  پیام بدهید
آیدی ما در نرم افزار شاد : @asemankafinet

تحقیق درباره مقدمه ای بر برنامه نويسی شی گرا

بازديد: 291

تحقیق درباره مقدمه ای بر برنامه نويسی شی گرا

 

برنامه نويسی شی گرا در راستای حل مشکلاتی که دست به گریبان پروژه های نرم افزاری بزرگ بود، پا به عرصه وجود نهاد. در اين پروژه ها برنامه نويسان زيادی درگير اجرا و کدنويسی پروژه هستند. تصور کنيد وقتی تعداد خطوط برنامه به ده ها یا هزاران خط کد برسد، هر تغييری که در خطی از برنامه داده شود، منجر به اثرات جانبی ناخواسته ای می شود.
هر زبان برنامه نويسی، نگرش متفاوتی به آبجکت ها دارد.
PHP اين نگرش را از زبان ++C به عاريه گرفته و نوع داده ای مهيا کرده است که می تواند در باطن خود و تحت يک شناسه، متغيرها و توابعی را شامل شود. وقتی PHP پا به عرصه وجود گذاشت و به ويرايش ۳ خود رسيد، قادر به پشتیبانی از پروژه های با بيش از ۱۰۰ هزار خط کد را نداشت. با رشد تدريجی PHP و بالغ شدن Zend Engine، امکان نوشتن پروژه های عظيم با PHP ميسر شد. البته جدا از اندازه پروژه، نوشتن اسکريپتها با بهره گيری از قدرت برنامه نويسی شی گرا و استفاده از کلاس ها، در استفاده مجدد از کدها کمک شایانی می کند و زمان و هزینه توسعه پروژه های بعدی را به مراتب کاهش می دهد و کار توسعه را دیگر کسل کننده و تکراری نخواهد کرد و زمان را برای توسعه ایده های جدید و تمرکز بر حل مشکلات دیگر بهینه می کند. در عین حال به اشتراک گذاردن کدها را هم امکان پذير می کند.
ايده آبجکت ها از جمله مفاهيم بغرنج دانش کامپيوتر است. در نظر اول، درک آن مشکل به نظر می رسد، اما به محض اينکه مفهوم و فلسفه آن را متوجه شويد، ديگر به همه چیز به چشم آبجکت نگاه می کنيد و سريعا خصوصيات و رفتارهای آن را در ذهن خود مجسم می کنيد؛
اگر هنوز می خواهيد در صف برنامه نويسان رويه ای و ماجولار بمانيد، وقت خود را تلف نکنيد و از ادامه خواندن مقاله منصرف شويد ولی اگر می خواهيد امروزی و آتی نگر باشيد، با من همراه باشيد! ;)
به دوستان گروه اول يادآور می شوم، نوع داده خروجی برخی از توابع توکار(
Built-in) از نوع آبجکت می باشد؛ البته توابع جايگزينی هم می توانيد پيدا کنيد که خروجی آنها از نوع آبجکت نباشند يا چاره دیگر این است که آبجکت را به آرايه Cast(تبدیل) کنيد.
Coupling معياری برای ميزان وابستگی دو ماجول است. هر چه Coupling يا وابستگی کمتر باشد بهتر است. برای مثال می خواهيم ماجول هایی از يک پروژه موجود را در پروژه جديد استفاده کنيم. می خواهیم تغییر عمده ای در ماجولی صورت دهیم و دیگر نگران این نباشیم که تاثیر آن بر روی ماجول های دیگر به چه گونه است. راه حل پيروی از اصول Encapsulation يا کپسوله سازی است. به ماجولها به چشم یک واحد مستقل نگریسته می شود و ارتباط بین ماجولها از طریق واسطهایی ساخت یافته صورت می پذیرد. بنابراین ماجولها به کار همدیگر دخالت نمی کنند و با متغیرهای همدیگر کاری ندارند. بنابراین خیلی مودبانه از طریق توابع پاسخ خود را دریافت می کنند. کپسوله سازی اصولی است که می توان آن را در هر زبان برنامه نويسی بکار بست؛ البته اگر در کد نويسی انضباط و ديسيپلين داشته باشيد. برنامه نويسی شی گرا با سبکی که در پيش گرفته، فرار از کپسوله سازی را تقريبا غير ممکن می سازد.
همانطور که در قسمت اول مقاله گفته شده، در برنامه نويسی رويه ای، داده ها و توابع از يکديگر جدا هستند. در برنامه نويسی شی گرا، داده ها، و توابعی که روی اين داده ها کار می کنند، در کنار يکديگر قرار می گيرند و تشکيل
Object را می دهند. بنابراين آبجکت ها از دو چيز تشکيل شده اند: داده ها(که به آن Attributes یا Properties گفته می شود) و توابعی که روی اين داده ها اعمالی انجام می دهند که به آنها Methods گفته می شود.
اين آبجکت ها دارای خصوصيات و رفتارهايی هستند. از نقطه نظر کلی، متدها يا رفتارها، کارهايی است که يک آبجکت انجام می دهد و
Propertyها یا خصيصيه ها، مشخصات و ويژگی های آبجکت هستند. از نقطه نظر برنامه نويسی، متدها همان توابع ما هستند و Propertyها همان متغيرهای ما. در يک سيستم شی گرای ايده آل، هر قسمت و بخش، يک آبجکت است.
يک آبجکت توسط کلاسی که از آن نمونه گيری شده تعريف می شود. يک کلاس هم
Attributeها يا خصيصه هايی که يک شی(Object) دارد و هم متدهايی که بکار می برد را تعريف می کند. يک آبجکت نمونه ای از يک کلاس است.
وقتی يک کلاس تعريف می کنيد، در واقع الگويی ايجاد می کنيد تا آبجکت ها را از روی آن بسازيد. برای اينکه اين مفهوم ملموس تر شود مثالی می زنم. فرض کنيد می خواهيم يک قوطی درست کنيم. ابتدا قالب ساز، بر اساس طرحی، قالب قوطی را می سازد و تمام انحناها و شکل و شمايل موجود را لحاظ می کند. حال که قالب اصلی ساخته شد، ديگر برای ساخت قوطی هيچ مشکلی وجود ندارد و می توان صدها يا هزاران قوطی با همان طرح و شکل ساخت. کلاس ها همانند همان قالب اوليه قوطی می مانند و آبجکت ها همانند قوطی های توليد شده. در يک کلاس تمام متغیرها و توابعی که يک نمونه آبجکت بايد داشته باشد، در نظر گرفته می شود.
Instantiation يا نمونه گيری يک آبجکت جديد ايجاد می کند و تمام خصيصه های آن را مقدار دهی کرده و تابع سازنده(Constructor) آن را فرا می خواند. اين تابع از آن جهت سازنده ناميده می شود که معمولا با مقدار دهی اوليه برخی خصيصيه ها آبجکت را قابل بهره برداری می کند. تابع سازنده يک کلاس در PHP 5 را می بايست ()constructor__ نام نهاد تا موتور Zend قادر به شناسايی آن باشد. (در موتور Zend نسخه ۱، تابع سازنده باید هم نام خود کلاس می بود.) به مثال زير توجه کنيد. يک کلاس ساده به نام User نوشته ايم، سپس از آن نمونه گيری کرده و دو متد آنرا به صورتی که مشاهده می کنید، فرا می خوانیم.

<?php
class User {
    
public $name;
    
public $birthday;
    
public function __constructor($name, $birthday)
    {
        
$this->name = $name;
        
$this->birthday = $birthday;
    }
    
public function hello()
    {
        return
"Hello $this->name!\n";
    }
    
public function goodbye()
    {
        return
"Goodbye $this->name!\n";
    }
    
public function age()
    {
        
$ts = strtotime($this->birthday);
        if (
$ts === -1) {
            return
"Unknown";
        } else {
            
$diff = time() - $ts;
            return
floor($diff / (24*60*60*365));
        }
    }
}
$user = new User('Nima', '29 Sep 1983');
echo
$user->hello();
echo
"You are {$user->age()} years old.\n";
echo
$user->goodbye();
?>


و در نهایت خروجی تکه کد بالا:

Hello Nima!

Yo are 20 years old.

Goodbye Nima!


تابع سازنده در مثال فوق بسيار ساده و ابتدايی بود. در تابع سازنده دو خصيصه
name و birthday را مقداردهی اوليه کرديم. متدهای کلاس فوق نيز بسيار ساده اند. دقت کنيد که this$ به طور خودکار در متدهای کلاس ساخته می شود و نماينده آبجکت User می باشد. برای دسترسی به يک خصيصه يا رفتار(متد) از نماد <- استفاده می کنيم. در صورت ظاهر، آبجکت را می توان يک آرايه Associative بعلاوه مجموعه ای از توابع در نظر گرفت. ولی برخی ويژگی های مهمی نيز می توان برای آن قائل شد:
توارث يا
Inheritance: توارث به قابليتی گفته می شود که بر حسب آن می توان از کلاس های موجود، کلاس های جديدی را مشتق کرد و خصيصه ها و رفتارهای آنها را به ارث برد يا اينکه بر آن غلبه کرده و خصايص و رفتارهای جديد تعريف کرد. نمونه واقعی آن رابطه والد و فرزندی است. شما به عنوان فرزند پدر يا مادرتان، خصایص و رفتارهایی را از آنها به ارث برده اید و علاوه بر آنها برخی خصایص جدید و مخصوص به خود هم دارید.
کپسوله سازی یا
Encapsulation: کپسوله سازی به قابليت پنهان سازی داده ها از کاربران کلاس، گفته می شود. يعنی ما برخی خصايص يا رفتارها را از ديد کسی که نمونه ای از کلاس ما را ايجاد کرده، مخفی می کنيم و تنها متدهای خاصی از کلاسمان به اين خصايص می توانند دسترسی داشته باشند.

متدها يا رفتارهای خاص: همانطور که در اين مطلب اشاره شد، کلاس ها توسط توابع سازنده امکان برپاسازی و قابل استفاده کردن آبجکت ها را فراهم می کنند. برای مثال خصايصی را مقداردهی اوليه می کنيم. بنابراين هر بار که آبجکت جديدی می سازيم اين تابع فراخوانده شده و کارهای ابتدايی را انجام داده و آبجکت را در واقع آماده کار می کند. علاوه بر تابع سازنده، یک کلاس بر حسب رخدادهای معينی می تواند رفتارهای خاصی از خود نشان دهد. برای مثال هنگامی که بخواهيم يک کپی از آبجکت مورد نظر ايجاد کنيم يا کارمان با يک آبجکت تمام شده و می خواهيم آن را نابود کنيم.(عمل تخریب سازی یا Destruction)
چندشکلی یا
Polymorphism: وقتی دو کلاس متدهای خارجی يکسانی را بکار ببرند، بايد بتوانند در عملکردهايی به جای يکديگر به کار روند. از آنجا که درک کامل چند شکلی نيازمند دانش وسيعتری است، فعلا توضيح بيشتری در اين مورد نمی دهيم.

منبع : سايت علمی و پژوهشي آسمان -- صفحه اینستاگرام ما را دنبال کنید
اين مطلب در تاريخ: دوشنبه 11 اسفند 1393 ساعت: 10:30 منتشر شده است
برچسب ها : ,
نظرات(0)

نظرات


کد امنیتی رفرش

شبکه اجتماعی ما

   
     

موضوعات

پيوندهاي روزانه

تبلیغات در سایت

پیج اینستاگرام ما را دنبال کنید :

فرم های  ارزشیابی معلمان ۱۴۰۲

با اطمینان خرید کنید

پشتیبان سایت همیشه در خدمت شماست.

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

درباره ما

آدرس خراسان شمالی - اسفراین - سایت علمی و پژوهشی آسمان -کافی نت آسمان - هدف از راه اندازی این سایت ارائه خدمات مناسب علمی و پژوهشی و با قیمت های مناسب به فرهنگیان و دانشجویان و دانش آموزان گرامی می باشد .این سایت دارای بیشتر از 12000 تحقیق رایگان نیز می باشد .که براحتی مورد استفاده قرار می گیرد .پشتیبانی سایت : 09159886819-09338737025 - صارمی سایت علمی و پژوهشی آسمان , اقدام پژوهی, گزارش تخصصی درس پژوهی , تحقیق تجربیات دبیران , پروژه آماری و spss , طرح درس