رفتن به مطلب
جامعه‌ی برنامه‌نویسان مُدرن ایران

جستجو در تالارهای گفتگو

در حال نمایش نتایج برای برچسب های 'interface'.



تنظیمات بیشتر جستجو

  • جستجو بر اساس برچسب

    برچسب ها را با , از یکدیگر جدا نمایید.
  • جستجو بر اساس نویسنده

نوع محتوا


وبلاگ‌ها

چیزی برای نمایش وجود ندارد

چیزی برای نمایش وجود ندارد

تالارهای گفتگو

  • انجمن‌های آی او استریم
    • اخبار و اعلامیه‌های سایت
    • اسناد و قوانین مرجع
    • رویداد‌ها و جلسات
    • معرفی محصولات نوشته شده‌ بومی
  • استارتاپی و کسب‌و‌کار
    • استارتاپ‌ها
    • سرمایه گذاری
    • شتاب دهنده‌ها
    • پارک‌های علم و فناوری و مراکز رشد
    • مصاحبه با استارت‌آپ‌ها
    • قوانین حقوقی
    • داستان‌های موفقیت
    • کارآفرینان و متخصصین
    • مشاوره اجرای کسب‌وکار
    • اخبار حوزه‌ی استارتا‌پی
    • آگهی‌های استخدامی
  • زبان‌های برنامه نویسی
    • برنامه نویسی در C و ‏++C
    • برنامه نویسی با Java
    • برنامه نویسی با JavaScript
    • برنامه نویسی با Go
    • برنامه نویسی با Python
    • برنامه نویسی با Delphi
    • برنامه نویسی با Ruby
    • برنامه نویسی با VB6
  • طراحی و توسعه وب
    • برنامه نویسی در PHP
    • برنامه نویسی در Asp.Net
    • برنامه نویسی با Node.JS
  • طراحی و توسعه وب اپلیکیشن‌ها
    • طراحی و توسعه در Angular
    • طراحی و توسعه در React.JS
    • طراحی و توسعه در Vue.JS
  • طراحی و توسعه موبایل و اِمبِد‌ها و تلوزیون‌ها
    • برنامه نویسی تحت محصولات اپل
    • برنامه نویسی تحت محصولات گوگل
    • طراحی و توسعه تحت محصولات دیگر
  • برنامه‌نویسی سطح پایین و سیستم عامل‌ها
    • سیستم عامل‌های آزاد
    • سیستم عامل‌های تجاری
  • بانک‌های اطلاعاتی
    • پایگاه داده MySQL
    • پایگاه داده PostgreSQL
    • پایگاه داده SQLite
    • پایگاه داده MongoDB
    • پایگاه داده SQL Server
    • دیگر پایگاه‌های داده
  • برنامه نویسی تحت محصولات اپل
    • محیط توسعه Xcode
    • برنامه نویسی با Objective-C
    • برنامه نویسی با Swift
  • برنامه نویسی تحت محصولات مایکروسافت
    • محیط توسعه Visual Studio
    • برنامه نویسی با #C
    • برنامه نویسی با Visual Basic.Net
    • طراحی و توسعه تحت Wpf
    • طراحی و توسعه تحت Universal و Fluent
  • طراحی و توسعه تجربه کاربری (UX) و رابط کاربری (UI)
    • طراحی رابط کاربری (UI)
    • طراحی تجربه کاربری (UX)
  • سوالات و مباحث عامیانه
    • سوالات دانشجویی
    • فناوری و سخت افزار
    • سوالات مشاوره‌ای
  • سطل آشغال
    • سطل آشغال

Product Groups

  • کتاب‌ها و مقالات آموزشی

دسته ها

  • علمی
  • استارتاپی
  • برنامه‌نویسی
    • زبان‌های برنامه نویسی
    • معماری‌ها
  • کامپایلر و مفسر
  • محیط‌های توسعه
  • پلتفرم‌های توسعه
  • کدنویسی ایمن
  • فناوری‌ها
    • پردازش تصویر
    • اینترنت اشیاء
    • پردازش ابری (Cloud Computing)
    • چند سکویی (Cross-Platform)
    • بیگ دیتا (Big Data)
    • هوش مصنوعی (AI)
    • سخت افزار
    • نرم‌افزار و اپلیکیشن
    • اینترنت و شبکه
    • رمزنگاری
    • امبد‌ها (Embedded)
  • طراحی
    • تجربه کاربری
    • رابط کاربری

دسته ها

  • عمومی
  • گرافیکی
  • شبکه و ارتباطات

دسته ها

  • کامپایلر‌ها
  • محیط‌های توسعه
  • کتابخانه‌ها
  • ماژول‌ها و پلاگین‌ها
  • محصولات بومی
  • کتاب‌ها و مقالات
  • ابزار‌ها
  • طراحی و گرافیک

جستجو در ...

نمایش نتایجی که شامل ...


تاریخ ایجاد

  • شروع

    پایان


آخرین بروزرسانی

  • شروع

    پایان


فیلتر بر اساس تعداد ...

تاریخ عضویت

  • شروع

    پایان


گروه


شناسه گیت‌هاب


شناسه لینکدین


شهر

1 نتیجه پیدا شد

  1. کلاسهای وکیل : پنهان سازی جزئیات پیاده سازی به منظور جلوگیری از دسترسی به اطلاعات خصوصی و منطق خصوصی برنامه در کلاس کار مطلوبی است. قرار دادن یک کلاس وکیل برای کاربران کلاس به طوری که از رابط عمومی این کلاس آگاهی داشته باشند باعث می شود که بدون آنکه به کاربران کلاس اجازه دسترسی به جزئیات پیاده سازی کلاس اصلی را بدهیم این کاربران بتوانند از خدمات کلاس اصلی استفاده نمایند. ویا تصور کنید که شما کلاس جامعی دارید که می خواهید در اختیار سایر برنامه نویسان قرار دهید، در صورتی که از این تکنیک استفاده نکنید مجبور هستید سورس کلاس را هم در اختیار برنامه نویسان قرار دهید. در صورتی که با استفاده از این تکنیک کافی هست که شما فقط یک هدر فایل از نمای کلاس در اختیار دیگر برنامه نویسان قرار دهید و سورس کلاس را به صورت یک فایل کامپایل شده در قالب یک DLL ویا یک SO فایل در زمان اجرا به کد برنامه نویس استفاده کننده الحاق نمایید. به عنوان مثال ابتدا یک کلاس به نام Implementation.hتعریف می کنیم #ifndef IMPLEMENTATION_H #define IMPLEMENTATION_H class Implementation { public: Implementation() {}; Implementation(int v) : m_Counter(v){}; ~Implementation(){}; unsigned int GetCounter() { return m_Counter; } void SetCounter(unsigned int val) { m_Counter = val; } protected: private: unsigned int m_Counter; }; #endif // IMPLEMENTATION_H همانطور که ملاحظه می کنید در کلاس فوق یک داده خصوصی تعریف کردیم با دو متد دسترسی عمومی. و بعد یک کلاس واسط به نام Interface.h تعریف میکنیم #ifndef INTERFACE_H #define INTERFACE_H class Implementation; //forward declaration class Interface { public: Interface(int); ~Interface(); unsigned int GetCounter(); void SetCounter(unsigned int val); protected: private: Implementation *imp; }; #endif // INTERFACE_H در کلاس فوق دومتد دسترسی عمومی تعریف شده است و یک متغیر عضو اشاره گر به کلاس Implementation تعریف شده است. نکته : در این کلاس ما با استفاده از forward declaration دیگر نیازی به وارد کردن هدر فایل implementation.h نخواهیم داشت. البته توجه نمایید که اگر متغیر عضو imp راکه با استفاده از تکنیک ترکیب در این کلاس اشاره گر تعریف نمی کردیم در این صورت حتما باید هدر فایل Implementation.h را در هدر فایل Interface.h وارد میکردیم پس بنابراین استفاده از تکنیک کلاسهای وکیل بدون اشاره گر عملی نخواهد بود. و سپس پیاده سازی کلاس اینترفیس را انجام می دهیم #include "Interface.h" #include "Implemention.h" // Interface::Interface(int value) :imp(new Implementation(value)){ } void Interface::SetCounter(unsigned int val){ this->imp->SetCounter(val); } unsigned int Interface::GetCounter(){ return this->imp->GetCounter(); } Interface::~Interface() { delete imp; this->imp =nullptr ; } پس بنابراین با توجه به نکات ذکر شده تا به اینجا شما فقط کافی است که هدر فایل Interface.h را در اختیار برنامه نویسان دیگر قرار دهید و فایلهایImplementation.h و همچنین فایل Interface.cpp را به صورت کامپایل شده در اختیار برنامه نویسان دیگر قرار دهید. و در آخر هم برای استفاده از کلاس های فوق بدین ترتیب عمل خواهیم کرد. #include <iostream> #include "Interface.h" using namespace std; int main() { Interface interface(7); cout << interface.GetCounter() << endl; interface.SetCounter(15); cout << interface.GetCounter() << endl; return 0; } با استفاده از تکنیک فوق در صورتی که هر گونه تغییری در آینده در پیاده سازی منطق های برنامه داشته باشید گیرنده های کلاس بدون متوجه شدن این تغییرات به کار خود ادامه خواهند داد. دقیقا کاری که گروه استاندارد سازی زبان ++C همیشه انجام داده است و فقط نمای کتابخانه های استاندارد را در اختیار ما قرار میدهد و هرگونه تغییری در نحوه الگوریتم های این کتابخانه از دید ما مخفی هست ولازم به دانستن این تغییرات هم نخواهیم بود.
×