رفتن به مطلب
لـــرن نــت

انجمن های پشتیبانی

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

تــوجــه

این وب سایت تابع قوانین جمهوری اسلامی میباشد و وابسته به هیچ گروه سیاسی و ارگان خاصی نمیباشد.

تــوجــه

این وب سایت تحت نظر پلیس فتا میباشد و تمامی مطالب طبق قوانین ایران میباشد.

علی کرباسی

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

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

با سلام خدمت تمامی عزیزان :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

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


لینک به ارسال

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

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

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

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

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

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

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

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

  • مطالب مشابه

    • توسط شایان آباد
      به نام خدا.
      با عرض سلام و خسته نباشید خدمت تمامی کاربران گرامی انجمن برنامه نویس ایرانی.
      با اموزش تبدیل فرمت های py به exe با من همراه هستید که در این اموزش یاد خواهید گرفت که چگونه برنامه هایی که با پایتون ساخته میشن رو روی ویندوز با فرمت اجرایی ویندوز باز و استفاده کنید.
      نرم افزار cmd را باز کنید (کنسول - Command Prompt) به دایرکتوری اسکریپت پایتون برید (محل نصب پایتون) ، برای مثال : D:\Program Files\Python\Python35-32\Scripts
      بعد از اینکه دستورات بالا را در خط فرمان وارد کردید دستور زیر را برای نصب pyinstaller ارسال کنید. pip install pyinstaller
      فایلی که خروجی شما در به زبان پایتون هست py. را به محل اسکریپت پایتون انتقال بدید. دوباره طبق دستور اول به دایرکتوری اسکریپ با خط فرمان برید.
      بعد از اینکه فایل خودتون رو کپی کردید در دایرکتوری اسکریپت ، و با خط فرمان رفتید به بخش اسکریپت دستور زیر را وارد کنید. pyinstaller --onefile filename.py --onefile اگر با متن زیر مواجه شدید یعنی به موفقیت انجام شد ولی اگر اروری دریافت کردید بدونید که یک جای کار رو اشتباه رفتید.
       
       
      موفق باشید.
    • توسط علیرضا آه مند
      نصب بازی و برنامه های حجیم همیشه یکی از دردسر های دارندگان گوشی اندروید بوده است.
      توسعه دهندگان موبایل در سیستم عامل اندروید قسمتی را تعبیه میکنند که کار آن انتقال حافظه داخلی دستگاه به کارت حافظه خارجی است.
      اما پس از انتشار اندروید ۶ با همان مارشمالوو این قابلیت کم رنگ شد و برای این کار باید حتما کارت حافظه را فرمت کرد تا بتوان بعنوان حافظه داخلی از آن استفاده کرد.
      ولی شرکت هایی مثل سامسونگ این قابلیت را بسته اند و در سامسونگ نمیشود کارت حافظه را بعنوان حافظه پیش فرض قرار داد.
      اما جای نگرانی نیست.با استفاده از برنامه ای که برای شما آماده کردم به راحتی میتوانید این قابلیت را به ساسونگ برگردانید.
      برنامه نیازمند روت بودن گوشی می باشد و بدون روت کار نمیکند.
      مزایای برنامه:
      انجام تمام مراحل کار فقط با یک لمس کم حجم بودن دیزاین نسبتا زیبا بازگشت به حالت قبل پست مرتبط با این موضوع:
      تنظیم SD Card به عنوان حافظه داخلی در Samsung - بح...
      محتوای مخفی شده شما قادر خواهید بود محتوای مخفی شده را مشاهده نمایید ، در صورتی که این مطلب را لایک کنید. (سپس بعد از لایک کردن صفحه را دوباره بارگذاری کنید)
    • توسط پژمان نیکروان
      به نام خدا.
      با عرض سلام و خسته نباشید خدمت تمامی کاربران گرامی انجمن برنامه نویس ایرانی.
      خیلی از دوستان درخواست کرده بودن که سورس حذف اکانت تلگرام را در انجمن قرار بدیم ، تلگرام یکی از شلوغ ترین شبکه های اجتماعی یا بهتر بگیم پیام رسان شلوغ کشور هست که با بیش از 40.000.000 کاربر در لیست پیام رسان ها رتبه اول را دارد.
      شاید برای شما یا دوستان پیش بیاد که تمایل نداشته باشند در کنار 40.000.000 کاربر باشند و اقدام به حذف اکانت تلگرام کنند.
      توجه داشته باشید حذف اکانت تلگرام به صورت مستقیم در خود برنامه تلگرام امکان پذیر نیست به همین دلیل شما میتونید یک برنامه درست کنید و انتشار بدید.
      سورسی که برای شما قرار میدم دقیقا همین کار رو انجام خواهد داد که شما عزیزان بتوانید استفاده کنید.
      البته خواستم نسخه اصلی و کامل رو بزارم ولی تصمیم گرفتم سورس اقای @شایان آباد رو قرار بدم که همزمان با یادگیری تمامی مقادیر ، حذف اکانت تلگرام هم یاد بگیرید.
      نسخه برنامه خودم هم بعدا براتون قرار میدم تا استفاده کنید.
      محتوای مخفی شده شما قادر خواهید بود محتوای مخفی شده را مشاهده نمایید ، در صورتی که این مطلب را لایک کنید. (سپس بعد از لایک کردن صفحه را دوباره بارگذاری کنید)
    • توسط ناتان
      درود
      من این محصول آموزشی رو خریدم البته از یه مغازه نه از سایتش
      حالا نظر شما در مورد محصول آموزشی برنامه نویسی اندروید شرکت پرند چی هست؟
       
      آموزش Android Programming - شرکت پرند
      قیمت 34 هزار تومان
       
      میخواستم بدونم می ارزه ؟
       
      لطفا اگر در نظر سنجی شرکت می کنید دلیل تون هم بگید
  • کاربران آنلاین در این صفحه   0 کاربر

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

×