رفتن به مطلب
برای استفاده از انجمن و عضـویت کلیک کنید.
علی کرباسی

شی گرایی در برنامه نویسی C++

پست های پیشنهاد شده

علی کرباسی    32

گروه دانشجو

با سلام خدمت تمامی عزیزان :biggrin1:

خوب رسیدیم به بخش شیرین شی گرایی  :shout: چرا شیرین خودمم نمیدونم لطفا در این مورد سوال نپرسید !!!

تنها اختلاف بین زبان C و C++ مبحثی است بنام شی گرایی یا OOP(Object Oriented Programming) که همین مورد کافی است که دنیای نرم افزار  شاهد تحول عظیمی در طراحی و پیاده سازی نزم افزارهای کنونی باشد .

بد نیست بدانید که اندیشه شی گرایی در زبان C++ آنقدر قوی است که به جرئت می توان گفت تمامی نرم افزارهای موجود مدیون این دید از برنامه نویسی هستند. اکثر سیستم عامل های رایج مانند Linux, Macintosh, ... بر گرفته از تفکر C++ هستند و Windows را صرفا با C++ و مبانی CC نوشته  اند .

نرم افزار های غولی مانند Office, Photoshop, Nero, ... را با این زبان طراحی و پیاده سازی کرده اند .

بیشتر زبان های کاربری امروزی توانایی های خود را بدون تفکر C++ هیچ می دانند مثل Java, Javascript, PHP, Delphi, C#, .NET, ... !!!

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

بیشترین دغدغه توسعه دهندگان نرم افزارها و نیاز برنامه ها این بود که هر چه بیشتر ساختار برنامه ها را به دنیای واقعی انسان نزدیک نمایند و آنرا مفهومی کنند. اقداماتی در زمینه برنامه نویسی ساخت یافته انجام گرفت اما جوابگوی نیاز آنروز جهان نبود. با ورود OOP و اشیاء در تفکر برنامه نویسی صنعت نرم افزار پا به عرصه جدیدی از برنامه نویسی مبتنی بر اشیاء دنیای واقعی گذاشت و توانست تا به امروز با همین مبحث تا بدینجا پیش رود .

مثال ) یک مثال ساده را میتوان DragDrop در درون محیط Windows در نظر گرفت. این کار را با Copy,Paste نیز می توان انجام داد اما عمل کشیدن و رها کردن یک فایل یا فولدر و قرار دادن آن در محلی دیگر نیاز نرم افزارهای پیشرفته و کاربران پر توقع امروزی است .

مفهوم شی گرایی

یک اتومبیل BMW را در نظر بگیرید. یک طرح و سیستم آن در کارخانه طراحی و پیاده سازی شده و با توجه به نیاز بازار از آن ساخته می شود .

به کارخانه BMW سازنده و طراح آن اتومبیل گفته می شود و به طرح و سیستم کلی آن طرح و الگوی ساخته شده از آن ، مدل گفته می شود هر چند که مدل ها و طرح های دیگری نیز برای BMW وجود دارد . به اتومبیل BMW740Li که در همین اصفهان ( به زودی در سراسر کشور ... ) زیر پای یک آقا یا خانم توانمند است شیی از آن مدل گفته می شود . در این بین ممکن است فردی توانمندتر ، از همان مدل با ویژگی های بهتری را به شرکت سازنده سفارش دهد که با کمی تغییر در جزئیات طرح اصلی شرکت آنرا به مشتری تحویل می دهد .

در برنامه نویسی شی گرا نیز همین طرز تفکر برقرارا است . در این مورد چهار مفهوم اساسی وجود دارد که هر یک را بررسی می کنیم :

 

نوع داده انتزاعی یا تجریدی (Data Abstract)

در زبان C++ انواع داده ای مختلفی مانند int,char,... تعریف شده اند و می توان از آنها در طول برنامه استفاده نمود اما نوع داده انتزاعی نوعی  است که صرفا توسط خود کاربر تعریف می شود و نوع خاصی را شامل نمی شود و با ایجاد یک شی از آن نوع داده انتزاعی یا تجریدی می توان از داده ها و روال ها و رخدادهای درون آن بهره گرفت .

از این دسته می توان به Class, struct اشاره نمود که صدها و هزاران نوع از آنها را می توان با داده ها و روالهای مختلف تعریف نمود و با استفاده از یک یا چند شی آنها را در برنامه پیاده سازی کرد .

 

محرمانگی یا بسته بندی (Encapsulation)

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

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

 

وراثت (Inheritance)

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

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

 

چند ریختی (polymorphism)

طرف میره کارخانه BMW و تقاضا می کند که روی همین دنده ای که وجود دارد یک دنده هوایی برای پرواز کردن هم قرار بگیرد. شرکت هم سیستمی را پیاد سازی می کند که مثلا دنده X مثل قبل کار کند و در این شرایط به دنده هوایی تبدیل شود .

در برنامه نویسی شی گرا هم این مورد صادق است و میتوان برای یک نمونه چندین تعریف مجزا را بیان نمود مثل عملگر جمع یا ... !!!

 

کلاس (Class)

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

 

شی (Object)

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

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

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

با استفاده از برنامه نویسی مبتنی بر شی، یک نوع داده انتزاعی مثل Class تعریف شده و تمامی پارامترها، متغیرها، روالها، توابع، رخدادها و ... در همان Class تعریف می شود و برای دسترسی به هر یک از بیمه شدگان و کار با داده های آنها با تعریف یک Object از آن Class براحتی با تعداد بیشماری از بیمه شدگان می توان کار کرد و در صورت بروز مشکل یا ایجاد تغییر تنها کافی است که Class را تغییر داد .

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

با برنامه نویسی شی گراست که می توان به راحتی و مثل دنیای واقعی با برنامه تعامل داشت .

پایان آموزش :rolleyes2: موفق باشید :bye:

  • پسندیدم 1

به اشتراک گذاری این ارسال


لینک به ارسال

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری

  • مطالب مشابه

    • توسط aref74
      سلام خدمت همه اساتید . 
      برای برنامم پرداخت درون برنامه ای گذاشتم ولی زمانیکه برای تست برنامه و عملکردش رو گزینه مربوطه کلیک میکنم که پرداخت انجام بگیره یک پیغام از طرف بازار میاد و نوشته لطفا صبر کنید . البته این پیغام در حد یک ثانیه میاد و میره و بعدشم هیچ اتفاقی نمیوفته و تو قسمت لُگ برنامه بیسیک همچین چیزی مینویسه . کسی میدونه مشکل کجاست ؟ 
      **requestCode = 1~i:** Activity (buy) Pause, UserClosed = false
      sending message to waiting queue (OnActivityResult)running waiting messages (1)Arrived: 1, 1
       
      اینم کدی که تو برنامه موجوده :
      Sub Process_Globals Dim bm As BillingManager3 Dim key As String = "MIHNMA0GCSqGSIb3DQEBAQUAA4G7ADCBtwKBr......" End Sub Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout("buylayout") bm.Initialize("bm", key) If File.Exists(File.DirInternal,"k.txt")=True Then ' bsbanner.DisableBannerAds ' Else ' bsbanner.EnableBannerAds ' End If End Sub Sub Label6_Click Try bm.RequestPayment("full","inapp","test") ' Catch ' Msgbox("لطفا مارکت بازار را نصب و سپس اقدام نمایید","مارکت بازار") ' End Try End Sub Sub bm_PurchaseCompleted (Success As Boolean, Product As Purchase) If Success=True Then ToastMessageShow("با موفقیت پرداخت شد",True) File.Writestring(File.DirInternal,"k.txt","as") bsbanner.DisableBannerAds Else ToastMessageShow("خطا در پرداخت",True) End If End Sub  
       
    • توسط appp
      احتمال دارد شما قصد داشته باشید برای ایده و تفکر خود و یا فعالیت شرکت خود به دنبال پایه گذاری پیشرفت در صنعت کاری خود هستید اپلیکیشن اندروید یا IOS طراحی نمایید. در صورتی تصمیم به سفارش ساخت اپلیکیشن اندروید و IOS به همراه فروشگاه اندروید دارید می توانید اینکار را به یک شرکت ساخت اپلیکیشن اندروید و موبایل بسپارید تا این شرکت پس از بررسی ایده یا سفارش طراحی اپلیکیشن اندروید و موبایل شما هزینه و تعرفه ساخت و طراحی اپلیکیشن اندروید مربوطه را به شما اطلاع رسانی نماید تا در صورت تمایل سفارش طراحی اپلیکیشن اندروید یا موبایل خود را به آن شرکت بسپارید. شرکت طراحی اپلیکیشن اندروید و IOS تابان شهر افتخار دارد با تیم برنامه نویسی اندروید قدرتمند خود، هر نوع سفارش اپلیکیشن اندروید یا آی او اس و موبایل شرکت یا موسسه و یا سازمان شما را پیاده سازی نماید.
    • توسط alirezadi
      سلام دوستان سال نو مبارک انشالله سال خوبی داشته باشید
      دوستان چند وقتی هست که فکر من خیلی درگیره نحوه برقراری ارتباط همیچن برنامه هایی باسایت ها هستش برای مثال 
      سایت رپ فارسی یکی از محبوب ترین سایت های موسیقی هستش و اپ اندروید هم داره 
      اما سئوالی که هست برای اپدیت کردن اطلاعت سمت سرور برنامه از یک پنل ساخته شده استفاده میشه یا امکانش هست که به طور خودکار با تعیین سطح دسترسی برنامه با اپدیت کردن سایت اطلاعات رو بروز رسانی کنه ؟؟
      طراحی یه همچین ui کار سختی نیست اما ارتباط با سایت بدجوری فکرمو مشغول کرده 
      ببخشید اگع زیادی حرف زدم ممنون میشم از اساتید راهنمایی کنن
  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×