Ծրագրավորման 3 հիմնական պարադիգմները, որոնք դուք պետք է իմանաք


Ծրագրավորման լեզուները բարդ գազաններ են։ Նրանք ոչ միայն կարող են շատ տարբեր տեսք ունենալ, այլև դրանց ամբողջ գործառնական մոդելները կարող են սկզբունքորեն տարբեր լինել:

Ծրագրավորման պարադիգմները տեսություններ կամ գաղափարներ են, որոնք օգնում են ձևավորել տարբեր լեզուները, որոնք դուք օգտագործում եք ծրագրակազմ ստեղծելու համար: Նրանք ներկայացնում են ծրագրավորման լեզվի հիմնական բնութագրերը՝ թելադրելով նրա վարքագիծը: Հետևաբար, կարելի է վստահորեն ասել, որ պարադիգմը նույնքան կարևոր է, որքան ծրագրավորման լեզվի շարահյուսությունը և իմաստաբանությունը: Ծրագրավորման ամենատարածված լեզուները օգտագործում են ծրագրավորման պարադիգմների մի քանի տեսակներից մեկը:

1. Իմպերատիվ ծրագրավորում

Իմպերատիվ պարադիգմը ծրագրավորման ամենավաղ մոտեցումներից մեկն է, որը գնում է դեռևս 1950-ականներին: Այս պարադիգմը մեծապես հիմնված է փոփոխականների, հրամանների և ընթացակարգերի օգտագործման վրա: Իմպերատիվ ծրագրավորումն օգտագործում է հրամաններ փոփոխականները ստուգելու և թարմացնելու համար՝ պահպանելով վիճակը ծրագրում: Հրամանների համակցությունն այնուհետև ստեղծում է ընթացակարգ: Տվյալների աբստրակցիան վճռորոշ դեր է խաղում տվյալների ներկայացման մեջ, ինչը հեշտացնում է չամրացված միացումը: Ամենահայտնի լեզուներից մեկը, որն օգտագործում է հրամայական պարադիգմը, 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 ծրագիրը ստեղծում է Հաճախորդ կառուցվածք: struct տեսակը տվյալների վերացման հիմնական օրինակն է C-ում: Ծրագիրը ցույց է տալիս, թե ինչպես հրամանները կարող են ստեղծել, թարմացնել և ցուցադրել վիճակը՝ Jane կառուցվածքային փոփոխականի միջոցով: Այս բոլոր հրամանները գտնվում են main() ֆունկցիայի մեջ, որն ընդհանուր առմամբ ընթացակարգ է, որը նշում է, թե հաճախորդը որքան գումար պետք է վճարի պատվերի համար: Վերը նշված ծրագրի գործարկումը ձեր վահանակում կստեղծի հետևյալ ելքը.

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

2. Օբյեկտ-կողմնորոշված ծրագրավորում

Օբյեկտ-կողմնորոշված ծրագրավորման պարադիգմը տարածվեց 1990-ականներին: Այս պարադիգմը հրամայականի հետնորդն է: Այնուամենայնիվ, օբյեկտի վրա հիմնված պարադիգմը պահում է վիճակը օբյեկտներում և ոչ փոփոխականներում: Ծրագրավորման լեզուները, որոնք օգտագործում են օբյեկտի վրա հիմնված պարադիգմը, հաճախ ավելի լավ են մշակում բարդ ծրագրերը: Պարադիգմայի հիմնական առանձնահատկություններն են օբյեկտները, դասերը, տվյալների ամփոփումը, ժառանգականությունը և պոլիմորֆիզմը: Դասը օբյեկտ-կողմնորոշված ծրագրի հիմնական բաղադրիչն է: Որոշ դասեր ժառանգում են հատկություններ և գործողություններ այլ դասերից: Ծրագրավորողները սա նկարագրում են որպես ծնող-երեխա հարաբերություն: Այն ընկնում է ենթատեսակի պոլիմորֆիզմի կատեգորիայի տակ։ Դասերը պարունակում են գործիքներ՝ թաքցնելու և պաշտպանելու զգայուն տվյալները ինկապսուլյացիայի միջոցով: Երբ դուք սահմանել եք դաս, այնուհետև կարող եք օգտագործել այն օբյեկտներ ստեղծելու համար: Առավել հայտնի ծրագրավորման լեզուներից երեքը, որոնք օգտագործում են օբյեկտի վրա հիմնված պարադիգմը, Java-ն, C++-ը և Python-ն են:

Օբյեկտ-կողմնորոշված ծրագրի օրինակ

Այս հավելվածը ցուցադրում է օբյեկտ-կողմնորոշված ծրագրավորման լեզվի՝ Java-ի առանձնահատկությունների մեծ մասը: Հաճախորդի հատուկ տեսակը ժառանգում է վարքագիծը ավելի ընդհանուր տեսակից: Բոլոր հաճախորդներն իրականացնում են ինտերֆեյս: Հաճախորդի հատուկ տեսակը շրջում է ինտերֆեյսի մեթոդը:

Discountable.java ֆայլը

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

Վերոնշյալ կոդը ստեղծում է ինտերֆեյս: Java-ում ինտերֆեյսը պոլիմորֆիզմի ևս մեկ օրինակ է: Այն թույլ է տալիս սուբյեկտներին, որոնք ուղղակիորեն կապված չեն, մուտք գործելու նույն հատկությունները, ինչպիսին է grandTotal մեթոդը: Այս հավելվածը կենտրոնանում է հաճախորդների վրա, սակայն աշխատողների դասը կարող է օգտագործել նաև Զեղչված ինտերֆեյսի համար:

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);
    }
}

Վերևի կոդը ստեղծում է Հաճախորդ դաս: Այն իրականացնում է Զեղչելի ինտերֆեյսը, այնուհետև օգտագործում է իր մեթոդը՝ հաշվելու և ցուցադրելու ընդհանուր գումարը՝ հիմնված հաճախորդի կատեգորիայի վրա: Վերևի կոդի պաշտպանված հիմնաբառը տվյալների ամփոփման օրինակ է. այն սահմանափակում է այս դասի միջոցով ստեղծված տվյալների հասանելիությունը: Այսպիսով, Հաճախորդ դասի միայն ենթադասերին (կամ երեխաների դասերին) հասանելի կլինեն նրա տվյալները:

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 դասը: Այս Java դասը օգտագործում է ժառանգությունը՝ ներկայացնելու ծնող-երեխա հարաբերությունը Հաճախորդ դասի հետ: Նոր Հաճախորդը հարաբերությունների մեջ գտնվող երեխա է, ուստի այն հասանելի է Հաճախորդների դասի բոլոր հատկություններին: Այն ներմուծում է Հաճախորդների դասի ատրիբուտները՝ օգտագործելով 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. Ֆունկցիոնալ ծրագրավորում

Այս պարադիգմայի հիմնական հասկացություններն են արտահայտությունները, ֆունկցիաները, պարամետրային պոլիմորֆիզմը և տվյալների աբստրակցիան: Արտահայտությունները ֆունկցիոնալ ծրագրավորման լեզուների կողմից օգտագործվող գործառույթների հիմնական բաղադրիչներն են: Պարամետրիկ պոլիմորֆիզմը պոլիմորֆիզմի երեք տեսակներից մեկն է։ Այս տեսակը հեշտացնում է ընդհանուր ծրագրավորումը գործառույթների և տեսակների միջոցով: JavaScript-ը ֆունկցիոնալ ծրագրավորման ամենատարածված լեզուներից մեկն է:

Ֆունկցիոնալ ծրագրի օրինակ

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);

Վերևի JavaScript ծրագիրը ունի առարկայական բառացի և երկու գործառույթ: Այն հայտարարում է ֆունկցիաներից յուրաքանչյուրը որպես արտահայտություն՝ օգտագործելով JavaScript սլաք ֆունկցիան։ main() ֆունկցիան ավելի բարձր կարգի ֆունկցիա է: Այն ընդունում է grandTotal ֆունկցիան որպես իր արգումենտներից մեկը, այնուհետև կանչում է այդ ֆունկցիան։ Սա նաև պարամետրային պոլիմորֆիզմի օրինակ է։ grandTotal() ֆունկցիան պարունակում է մի քանի արտահայտություններ, իսկ Հաճախորդ օբյեկտը տվյալների վերացման օրինակ է: Վերոնշյալ ծրագիրը վահանակում ստեղծում է հետևյալ ելքը.

Jane Jones total is: $570

Ծրագրավորման լեզուների բարդությունը

Ծրագրավորման լեզուն կարող է մարմնավորել մեկ ծրագրավորման պարադիգմի հասկացությունները, բայց դա չի նշանակում, որ այն սահմանափակվում է մեկ պարադիգմով: Ծրագրավորման հայտնի լեզուներից շատերը (ինչպիսիք են Python-ը, Java-ն, JavaScript-ը և C++-ը) բազմակողմանի պարադիգմային լեզուներ են: Ծրագրավորման որոշ պարադիգմներ, ինչպիսիք են հրամայականը և օբյեկտին կողմնորոշված պարադիգմները, նույնպես կապված են: Բայց չնայած այս ազգակցական կապին, կան որոշ էական տարբերություններ: