خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

3 پارادایم اصلی برنامه نویسی که باید بدانید

زبان های برنامه نویسی حیوانات پیچیده ای هستند. نه تنها آنها می توانند بسیار متفاوت به نظر برسند، بلکه کل مدل های عملیاتی آنها می تواند اساساً متفاوت باشد.

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

1. برنامه نویسی ضروری

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

یک مثال برنامه ضروری

#include <stdio.h>
#include <string.h>
  
struct Customer
{
    int CustomerId;
    char OrderNumber[20];
    char Name[30];
    float OrderTotal;
};
  
void main ()
{
    struct Customer John = {4000, "HK1001", "John Doe", 200.00};
    struct Customer Jane = {4001, "HK1002", "Jane Doe", 600.00};
  
    memcpy(Jane.Name , "Jane Jones", 10);
  
    printf ("The total cost for %s order number %s is: $%.2f",Jane.Name, Jane.OrderNumber, Jane.OrderTotal);
}

برنامه C بالا یک ساختار مشتری ایجاد می کند. نوع ساختار یک مثال اصلی از انتزاع داده ها در C است. این برنامه نشان می دهد که چگونه دستورات می توانند ایجاد، به روز رسانی و وضعیت نمایش را از طریق متغیر ساختار Jane نشان دهند. همه این دستورات در یک تابع main() قرار دارند که در مجموع رویه‌ای است که بیان می‌کند مشتری چقدر باید برای یک سفارش بپردازد. با اجرای برنامه فوق خروجی زیر در کنسول شما تولید می شود:

The total cost for Jane Jones order number HK1002 is: $600.00

2. برنامه نویسی شی گرا

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

مطلب مرتبط:   نحوه ایجاد یک سیستم دوربین برای بازی های دو بعدی در گودو

یک مثال برنامه شی گرا

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

فایل Discountable.java

public interface Discountable {
    public void grandTotal(String orderNumber, double total);
}

کد بالا یک رابط ایجاد می کند. در جاوا، یک رابط نمونه دیگری از چندشکلی است. این اجازه می دهد تا موجودیت هایی که مستقیماً مرتبط نیستند مانند روش grandTotal به ویژگی های مشابه دسترسی داشته باشند. این برنامه بر روی مشتریان تمرکز می کند، اما یک کلاس کارمند نیز می تواند از رابط Discountable استفاده کند.

فایل Customer.java

public class Customer implements Discountable {
    protected int customerId;
    protected String customerName;
    protected String customerCode;
 
    public Customer() {
        this.customerId = 0;
        this.customerName = "";
        this.customerCode = "";
    }
 
    public Customer(int customerId, String customerName, String customerCode) {
        this.customerId = customerId;
        this.customerName = customerName;
        this.customerCode = customerCode;
    }
 
    public int getCustomerId() {
        return customerId;
    }
 
    public void setCustomerId(int customerId) {

             this.customerId = customerId;

      }

      public String getCustomerName() {

             return customerName;

      }

      public void setCustomerName(String customerName) {

             this.customerName = customerName;

      }

      public String getCustomerCode() {

             return customerCode;

      }



      public void setCustomerCode(String customerCode) {

             this.customerCode = customerCode;

      }

     

      public double customerType(String customerCode) {

             double discount = 0;
    
             if (customerCode.toLowerCase().equals("pre")) {
                    discount = 0.10;
             } else if (customerCode.toLowerCase().equals("gen")) {
                    discount = 0.02;
             } else if (customerCode.toLowerCase().equals("new")) {
                    discount = 0.05;
             }

             return discount;

      }
 
    @Override
    public void grandTotal(String orderNumber, double total) {
        double discount = customerType(customerCode);
        double discountPercentage = total * discount;
        double finalTotal = total - discountPercentage;
 
        System.out.println("For " + getCustomerName()
            + " order Number " + orderNumber + " the grand total is: $" + finalTotal);
    }
}

کد بالا یک کلاس مشتری ایجاد می کند. اینترفیس Discountable را پیاده سازی می کند، سپس از روش خود برای محاسبه و نمایش کل کل، بر اساس دسته مشتری استفاده می کند. کلمه کلیدی محافظت شده در کد بالا نمونه ای از کپسوله سازی داده ها است. دسترسی به داده های ایجاد شده از طریق این کلاس را محدود می کند. بنابراین، فقط زیر کلاس ها (یا کلاس های فرزند) از کلاس مشتری به داده های آن دسترسی خواهند داشت.

مطلب مرتبط:   7 بهترین فریم ورک برای ادغام و تست واحد در پایتون

فایل NewCustomer.java

<strong>public</strong> <strong>class</strong> NewCustomer <strong>extends</strong> Customer {

      <strong>public</strong> NewCustomer() {

             <strong>super</strong>();

      }

     

      <strong>public</strong> NewCustomer(<strong>int</strong> customerId, String customerName, String customerCode) {

             <strong>super</strong>(customerId, customerName, customerCode);

      }



}

کد بالا یک کلاس NewCustomer ایجاد می کند که کلاس Customer را گسترش می دهد. این کلاس جاوا از وراثت برای نشان دادن رابطه والد-فرزند با کلاس مشتری استفاده می کند. NewCustomer فرزند رابطه است، بنابراین، به تمام ویژگی های کلاس مشتری دسترسی دارد. ویژگی های کلاس مشتری را با استفاده از متد super() وارد می کند.

فایل App.java

<strong>public</strong> <strong>class</strong> App {

      <strong>public</strong> <strong>static</strong> <strong>void</strong> main(String[] args) {

          Customer Jane = <strong>new</strong> NewCustomer(4001, "Jane Jones", "new");

          Jane.grandTotal("HK1002", 600);

      }

}

کد بالا یک کلاس App قابل اجرا ایجاد می کند. این کلاس یک شیء مشتری (جین) ایجاد می کند و از طریق چند شکلی جین را به مشتری جدید تبدیل می کند. در نهایت، کل کل سفارش جین را ایجاد می کند. اجرای برنامه بالا خروجی زیر را در کنسول ایجاد می کند:

For Jane Jones order Number HK1002 the grand total is: $570.0

3. برنامه نویسی تابعی

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

مطلب مرتبط:   چگونه یک برنامه ماشین حساب ساده در فرم های ویندوز بسازیم

یک مثال برنامه کاربردی

const Customer = {

   IdNumber: 1002,

   Name: 'Jane Jones',

   CustomerCode: 'new'

}



const main = (customer, func, value) => {

    var total = func.apply(null, [ customer.CustomerCode, value ]);

    console.log(`${customer.Name} total is: ${total}`);

}



const grandTotal = (CustomerCode, total) => {

   if (CustomerCode == "new") {

       discount = total * 0.05;

       mainTotal = total - discount;

       return mainTotal;

   } else if (CustomerCode == "pre") {

       discount = total * 0.10;

       mainTotal = total - discount;

       return mainTotal;

   }

}



main(Customer, grandTotal, 600);

برنامه جاوا اسکریپت فوق دارای یک شیء واقعی و دو تابع است. با استفاده از تابع پیکان جاوا اسکریپت، هر یک از توابع را به عنوان یک عبارت اعلام می کند. تابع ()main یک تابع مرتبه بالاتر است. تابع grandTotal را به عنوان یکی از آرگومان های خود می گیرد، سپس آن تابع را فراخوانی می کند. این نیز نمونه ای از چندشکلی پارامتریک است. تابع grandTotal() شامل چندین عبارت است و Customerobject نمونه ای از انتزاع داده است. برنامه بالا خروجی زیر را در کنسول تولید می کند:

Jane Jones total is: $570

پیچیدگی زبان های برنامه نویسی

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