Saeid Safaei Loader Logo Saeid Safaei Loader Animated
لطفا شکیبا باشید
0

سعیدصفایی سعیدصفایی

سعید صفایی
آشنایی با مفهوم Polymorphism

Polymorphism

چندریختی به این معنا است که یک متد یا تابع می‌تواند به گونه‌های مختلفی رفتار کند و بسته به نوع داده ورودی خود، رفتارهای مختلفی از خود نشان دهد.

چندریختی (Polymorphism) یکی از اصول اساسی در برنامه‌نویسی شیءگرا (OOP) است که به یک شیء این امکان را می‌دهد که بتواند رفتارهای مختلفی را در شرایط مختلف نشان دهد. به عبارت دیگر، چندریختی به این معناست که یک متد یا شیء می‌تواند به روش‌های مختلفی عمل کند. این ویژگی باعث افزایش انعطاف‌پذیری و قابل گسترش بودن برنامه‌ها می‌شود.

در برنامه‌نویسی شیءگرا، چندریختی معمولاً به دو صورت پیاده‌سازی می‌شود: چندریختی مبتنی بر متد (Method Polymorphism) و چندریختی مبتنی بر شیء (Object Polymorphism).

در چندریختی مبتنی بر متد، یک متد می‌تواند در کلاس‌های مختلف با نام یکسان اما با پیاده‌سازی‌های متفاوت وجود داشته باشد. این ویژگی به برنامه‌نویسان این امکان را می‌دهد که متدهایی با همان نام در کلاس‌های مختلف ایجاد کنند که رفتارهای خاص خود را داشته باشند. این نوع چندریختی معمولاً از طریق بازنویسی متدها (Method Overriding) در زبان‌های برنامه‌نویسی شیءگرا پیاده‌سازی می‌شود.

در چندریختی مبتنی بر شیء، یک شیء می‌تواند از چند کلاس مختلف ارث‌بری کند و در نتیجه، قادر خواهد بود که رفتارهای مختلفی را از این کلاس‌ها به ارث ببرد. این نوع چندریختی معمولاً از طریق وراثت (Inheritance) و چندریختی در کلاس‌های مشتق‌شده انجام می‌شود.

در زبان‌های برنامه‌نویسی مانند Java، Python و C++، چندریختی از طریق بازنویسی متدها و بازبارگذاری اپراتورها پیاده‌سازی می‌شود. در اینجا یک مثال از چندریختی مبتنی بر متد در زبان Python آورده شده است:

class Animal:
def speak(self):
return "Animal makes a sound" class Dog(Animal):
def speak(self):
return "Dog barks" class Cat(Animal):
def speak(self):
return "Cat meows" # ایجاد شیء از کلاس‌های مختلف dog = Dog() cat = Cat() # استفاده از متد مشابه در کلاس‌های مختلف print(dog.speak()) # خروجی: Dog barks print(cat.speak()) # خروجی: Cat meows

در این مثال، کلاس‌های Dog و Cat از کلاس پایه Animal مشتق شده‌اند. هرکدام از این کلاس‌ها متد speak را بازنویسی کرده‌اند تا رفتار خاص خود را ارائه دهند. این نشان‌دهنده چندریختی مبتنی بر متد است.

در زبان Java، پیاده‌سازی مشابهی برای چندریختی وجود دارد:

class Animal {
public void speak() {
System.out.println("Animal makes a sound");
} } class Dog extends Animal {
@Override
public void speak() {
System.out.println("Dog barks");
} } class Cat extends Animal {
@Override
public void speak() {
System.out.println("Cat meows");
} } public class Main {
public static void main(String[] args) {
Animal dog = new Dog();
Animal cat = new Cat();

dog.speak(); // خروجی: Dog barks
cat.speak(); // خروجی: Cat meows
} }

در اینجا، متد speak در هر یک از کلاس‌های Dog و Cat بازنویسی شده است و هنگام فراخوانی متد از یک شیء از نوع Animal، رفتار مناسب با توجه به نوع شیء اجرا می‌شود.

چندریختی در برنامه‌نویسی شیءگرا مزایای زیادی دارد:

  • کاهش پیچیدگی: با استفاده از چندریختی، می‌توان کدهایی ساده و تمیز نوشت که قادر به انجام عملیات مختلف بسته به نوع شیء باشند.
  • افزایش انعطاف‌پذیری: برنامه‌ها می‌توانند به راحتی گسترش یابند و رفتارهای جدیدی اضافه شوند بدون اینکه نیاز به تغییرات زیادی در کدهای قبلی باشد.
  • بهبود مقیاس‌پذیری: سیستم‌های بزرگ به راحتی می‌توانند از چندریختی برای مدیریت رفتارهای مختلف در سطوح مختلف استفاده کنند.

چندریختی یکی از ویژگی‌های اصلی در طراحی نرم‌افزارهای شیءگرا است که باعث افزایش مقیاس‌پذیری، انعطاف‌پذیری و قابل گسترش بودن سیستم‌ها می‌شود. این ویژگی به‌ویژه در پروژه‌های بزرگ و پیچیده بسیار مفید است زیرا اجازه می‌دهد که از یک رابط عمومی برای تعامل با انواع مختلف شیء‌ها استفاده کنیم.

برای اطلاعات بیشتر، می‌توانید از سایت saeidsafaei.ir و اسلایدهای محمد سعید صفایی بهره‌برداری کنید.

اسلاید آموزشی

برنامه نویسی به زبان C++ بخش اول

برنامه نویسی به زبان C++ بخش اول
مبانی کامپیوتر و برنامه سازی

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

مقالات آموزشی برای آشنایی با اصطلاحات دنیای کامپیوتر

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

سیستم‌های شناسایی بیومتریک به استفاده از ویژگی‌های بیولوژیکی و رفتاری افراد برای شناسایی و تأیید هویت آن‌ها اطلاق می‌شود.

هوش مصنوعی کوانتومی به استفاده از رایانه‌های کوانتومی برای پردازش داده‌ها و بهبود عملکرد هوش مصنوعی اطلاق می‌شود.

دستکاری رشته‌ها به مجموعه عملیات‌هایی اطلاق می‌شود که می‌توان روی رشته‌ها انجام داد، مانند الحاق، تقسیم، جستجو و تغییر مقادیر.

ماتریس یک نوع آرایه دو بعدی است که برای انجام عملیات‌های ریاضی و جبر خطی به کار می‌رود.

قسمت صحیح یک عدد که بدون هیچ نقطه اعشاری است. این قسمت معمولاً در تبدیل‌های مبنای مختلف ابتدا محاسبه می‌شود.

کابل‌های زوج به هم تابیده با غلاف فلزی برای کاهش تداخل الکترومغناطیسی.

جستجو به معنای پیدا کردن داده‌ها در یک ساختار داده‌ای خاص مانند آرایه‌ها یا لیست‌ها است.

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

آرایه ایستا، آرایه‌ای است که در آن اندازه از قبل تعریف می‌شود و نمی‌توان در زمان اجرا اندازه آن را تغییر داد.

محاسبات بدون سرور مدلی است که به توسعه‌دهندگان این امکان را می‌دهد که بدون نیاز به مدیریت سرور، کد خود را اجرا کنند.

واحد محاسباتی و منطقی است که مسئول انجام محاسبات ریاضی و منطقی در پردازنده می‌باشد.

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

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

رشته مجموعه‌ای از کاراکترها است که به صورت متوالی در حافظه ذخیره می‌شود. این داده‌ها معمولاً برای ذخیره اطلاعات متنی مانند نام یا جملات استفاده می‌شوند.

قراردادهای هوشمند قراردادهای دیجیتالی خوداجرایی هستند که قوانین و شرایط توافق‌نامه‌ها را به‌طور خودکار اجرا می‌کنند.

این نوع رمزگذاری به شما امکان می‌دهد که داده‌های رمزنگاری‌شده را بدون نیاز به رمزگشایی پردازش کنید. این تکنیک برای حفظ حریم خصوصی و امنیت داده‌ها در هنگام پردازش بسیار مهم است.

عملگر افزایش پس‌ از عملگر ()++ است که ابتدا مقدار متغیر را می‌خواند و سپس آن را افزایش می‌دهد.

سیستم عددی مبنای 16 است که از ارقام 0 تا 9 و حروف A تا F برای نمایش اعداد استفاده می‌کند.

عبور درون‌سفارشی به معنای بازدید از گره‌ها به ترتیب: ابتدا گره‌های سمت چپ، سپس ریشه و در نهایت گره‌های سمت راست.

روش‌هایی که دستگاه‌ها در یک شبکه برای دسترسی به رسانه انتقال (مانند کابل یا امواج رادیویی) استفاده می‌کنند.

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

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

الگوریتم مرتب‌سازی مرج یک الگوریتم تقسیم و غلبه است که آرایه‌ها را با تقسیم آن‌ها به قسمت‌های کوچکتر و سپس ادغام مجدد مرتب می‌کند.

شیوه‌ای برای سازمان‌دهی و ذخیره‌سازی داده‌ها به گونه‌ای که دسترسی به آن‌ها سریع‌تر و مؤثرتر باشد. انواع مختلفی از ساختار داده مانند آرایه‌ها، لیست‌های پیوندی و درخت‌ها وجود دارد که هر یک برای مسائل خاصی مناسب هستند.

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

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

جستجوی دودویی یک الگوریتم جستجو است که داده‌های مرتب‌شده را به نصف تقسیم می‌کند و در هر مرحله تنها نیمی از داده‌ها را بررسی می‌کند.

گراف جهت‌دار گرافی است که در آن یال‌ها جهت‌دار هستند و از یک گره به گره دیگر اشاره دارند.

GraphQL یک زبان پرس‌وجو است که برای دریافت داده‌ها از یک API استفاده می‌شود و در مقایسه با REST، انعطاف‌پذیری بیشتری دارد.

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

چرخه ساعت معادل یک واحد زمانی است که پردازنده برای انجام عملیات‌های مختلف نیاز دارد.

شبکه‌های عصبی شناختی به شبکه‌هایی اطلاق می‌شود که سعی در شبیه‌سازی مغز انسان برای انجام پردازش‌های پیچیده دارند.

اینترنت اشیاء در شهرهای هوشمند به اتصال دستگاه‌ها و سنسورها به شبکه برای بهبود کیفیت زندگی شهروندان اطلاق می‌شود.

پردازش زبان طبیعی (NLU) به توانایی سیستم‌های کامپیوتری برای درک و تفسیر زبان‌های انسانی به‌طور صحیح و معنادار اشاره دارد.

بکشید مشاهده بستن پخش
Saeid Safaei Scroll Top
0%