Парадигме програмирања су теорије или идеје које помажу у обликовању различитих језика које користите за креирање софтвера. Они представљају главне карактеристике програмског језика, диктирајући његово понашање.

Стога је сигурно рећи да је парадигма једнако важна као и синтакса и семантика програмског језика. Већина популарних програмских језика користи једну од неколико типова програмске парадигме.

1. Императивно програмирање

Императивна парадигма је један од најранијих приступа програмирању, који сеже још од 1950-их. Ова парадигма се у великој мери ослања на употребу променљивих, команди и процедура.

Императивно програмирање користи команде за проверу и ажурирање променљивих, чувајући стање у програму. Комбинација команди тада креира процедуру. Апстракција података игра кључну улогу у представљању података, што олакшава лабаво повезивање.

Један од најпопуларнијих језика који користи императивну парадигму је Ц. Овај програмски језик подржава само функционалне процедуре.

Пример императивног програма

instagram viewer
#инцлуде 
#инцлуде

струцт Цустомер
{
инт ЦустомерИд;
цхар ОрдерНумбер[20];
цхар Име[30];
флоат ОрдерТотал;
};

воид маин ()
{
струцт Корисник Јохн = {4000, "ХК1001", "Јохн Дое", 200.00};
струцт Цустомер Јане = {4001, "ХК1002", "Јане Дое", 600.00};

мемцпи (Јане. Име, "Јане Јонес", 10);

принтф („Укупна цена за %с број поруџбине %с је: $%.2ф“, Џејн. Име, Јане. Број наруџбе, Џејн. ОрдерТотал);
}

Ц програм изнад ствара а Купац структура. Тхе струцт тип је одличан пример апстракције података у Ц.

Програм показује како команде могу креирати, ажурирати и приказати стање - преко Јане променљива структуре. Све ове команде су у а главни() функцију, што је у целини поступак који наводи колико новца купац треба да плати за поруџбину.

Извршавање горњег програма ће произвести следећи излаз у вашој конзоли:

Укупна цена за број наруџбе Јане Јонес ХК1002 је: 600,00 УСД

2. Објектно оријентисано програмирање

Парадигма објектно оријентисаног програмирања узела је маха 1990-их. Ова парадигма је потомак императивне. Међутим, објектно оријентисана парадигма чува стање у објектима, а не у променљивим.

Програмски језици који користе објектно оријентисану парадигму често боље рукују сложеним апликацијама. Основне карактеристике парадигме су објекти, класе, енкапсулација података, наслеђивање и полиморфизам.

Класа је основна компонента објектно оријентисаног програма. Неке класе наслеђују својства и операције од других класа. Програмери ово описују као однос родитељ-дете. Спада у категорију полиморфизма подтипова.

Класе садрже алате за сакривање и заштиту осетљивих података путем енкапсулације. Када дефинишете класу, можете је користити за креирање објеката.

Три популарнија програмска језика која користе објектно оријентисану парадигму су Јава, Ц++ и Питхон.

Пример објектно оријентисаног програма

Ова апликација показује већину карактеристика објектно оријентисаног програмског језика, Јава. Специфичан тип купаца наслеђује понашање од општијег типа. Сви корисници имплементирају интерфејс. Одређени тип клијента замењује метод из интерфејса.

Датотека Дисцоунтабле.јава

јавностиинтерфејс с попустом {

јавностипразнина грандТотал (Стринг ордерНумбер, дупло укупно);

}

Код изнад креира интерфејс. У Јави, интерфејс је још један пример полиморфизма. Омогућава ентитетима који нису директно повезани да приступе истим својствима, као што је грандТотал методом. Ова апликација се фокусира на купце, али класа запослених би такође могла да користи интерфејс Дисцоунтабле.

Датотека Цустомер.јава

јавностикласа Купац имплементира с попустом {
заштићениинт идентификација купца;
заштићени Стринг цустомерНаме;
заштићени Стринг цустомерЦоде;

јавности Цустомер() {
ово.цустомерИд = 0;
ово.цустомерНаме = "";
ово.цустомерЦоде = "";
}

јавности Купац (инт цустомерИд, стринг цустомерНаме, стринг цустомерЦоде) {
ово.цустомерИд = цустомерИд;
ово.цустомерНаме = цустомерНаме;
ово.цустомерЦоде = цустомерЦоде;
}

јавностиинт гетЦустомерИд() {
повратак идентификација купца;
}
јавностипразнина сетЦустомерИд(инт идентификација купца) {
ово.цустомерИд = цустомерИд;
}
јавности Стринг гетЦустомерНаме() {
повратак Име клијента;
}
јавностипразнина сетЦустомерНаме (Стринг цустомерНаме) {
ово.цустомерНаме = цустомерНаме;
}
јавности Стринг гетЦустомерЦоде() {
повратак Код купца;
}

јавностипразнина сетЦустомерЦоде (Стринг цустомерЦоде) {
ово.цустомерЦоде = цустомерЦоде;
}

јавностидупло цустомерТипе (Стринг цустомерЦоде) {
дупло попуст = 0;

ако (цустомерЦоде.тоЛоверЦасе().екуалс("пре")) {
попуст = 0,10;
} другоако (цустомерЦоде.тоЛоверЦасе().екуалс("ген")) {
попуст = 0,02;
} другоако (цустомерЦоде.тоЛоверЦасе().екуалс("нев")) {
попуст = 0,05;
}
повратак попуст;
}

@Прегазити
јавностипразнина грандТотал (Стринг ордерНумбер, дупло укупно) {

дупло попуст = цустомерТипе (код купца);
дупло проценат попуста = укупан * попуст;
дупло финалТотал = тотал - проценат попуста;

Систем.оут.принтлн("За "+ гетЦустомерНаме() + " број поруџбине " + број поруџбине + " укупни износ је: $" + финалТотал);
}

}

Код изнад креира а Купац класа. Она имплементира Дисцоунтабле интерфејс, затим користи свој метод за израчунавање и приказ укупног износа, на основу категорије корисника. Тхе заштићени кључна реч у коду изнад је пример енкапсулације података; ограничава приступ подацима креираним кроз ову класу. Дакле, само подкласе (или подређене класе) од Купац класа ће имати приступ својим подацима.

Датотека НевЦустомер.јава

јавностикласа Нови купац протеже Клијент {
јавности Нови купац() {
супер();
}

јавности Нови купац(инт цустомерИд, стринг цустомерНаме, стринг цустомерЦоде) {
супер(ЦустомерИд, цустомерНаме, цустомерЦоде);
}

}

Код изнад креира а Нови купац класа која проширује Купац класа. Ово Јава класа користи наслеђивање да представља однос родитељ-дете са Купац класа. Тхе Нови купац је дете у односу, тако да има приступ свим својствима у класи Цустомер. Увози атрибуте класе Цустомер користећи супер() методом.

Датотека Апп.јава

јавностикласа Апликација {
јавностистатичнапразнина маин (Стринг[] аргс) {
Муштерија Џејн = Нова НевЦустомер (4001, "Јане Јонес", "нев");
Јане.грандТотал("ХК1002", 600);
}
}

Код изнад креира извршни фајл Апликација класа. Ова класа креира објекат Цустомер (Јане) и кроз полиморфизам чини Јане а Нови купац. Коначно, генерише укупни износ за Џејнину наруџбу. Извршавање горњег програма ће генерисати следећи излаз у конзоли:

За наруџбу Џејн Џонс број ХК1002 укупни износ је: 570,0 долара

3. Функционално програмирање

Кључни концепти ове парадигме су изрази, функције, параметарски полиморфизам и апстракција података. Изрази су основне компоненте функција које користе функционални програмски језици. Параметарски полиморфизам је један од три типа полиморфизма. Овај тип олакшава генеричко програмирање кроз функције и типове.

ЈаваСцрипт је један од најпопуларнијих функционалних програмских језика.

Пример функционалног програма

цонст Купац = {
Идентификациони број: 1002,
Име: 'Јане Јонес',
Кориснички код: 'ново'
}

цонст маин = (купац, функција, вредност) => {
вар тотал = фунц.аппли (нулл, [ купац. ЦустомерЦоде, вредност ]);
цонсоле.лог(`${цустомер. Име} укупно је: ${тотал}`);
}

цонст грандТотал = (код клијента, укупно) => {
иф (ЦустомерЦоде == "ново") {
попуст = укупно * 0,05;
маинТотал = тотал - попуст;
ретурн маинТотал;
} елсе иф (ЦустомерЦоде == "пре") {
попуст = укупно * 0,10;
маинТотал = тотал - попуст;
ретурн маинТотал;
}
}

главни (Купац, укупно, 600);

Горе наведени ЈаваСцрипт програм има објекат литерал и две функције. Декларише сваку од функција као израз користећи ЈаваСцрипт функција стрелице. Тхе главни() функција је функција вишег реда. Потребно је грандТотал функцију као један од својих аргумената, а затим позива ту функцију. Ово је такође пример параметарског полиморфизма.

Тхе грандТотал() функција садржи неколико израза, а Купацобјекат је пример апстракције података. Програм изнад генерише следећи излаз у конзоли:

Укупно Џејн Џонс је: 570 долара

Сложеност програмских језика

Програмски језик може отелотворити концепте једне програмске парадигме, али то не значи да је ограничен на једну парадигму. Многи од популарних програмских језика (као што су Питхон, Јава, ЈаваСцрипт и Ц++) су језици са више парадигми.

Неке парадигме програмирања, као што су императивна и објектно оријентисана парадигма, такође су повезане. Али упркос овом сродству, постоје неке значајне разлике.

Објектно оријентисано програмирање вс. Процедурално програмирање: шта их чини другачијима?

Реад Нект

ОбјавиТвеетОбјавиЕмаил

Повезане теме

  • Програмирање
  • Програмирање
  • Функционално програмирање
  • Објектно оријентисано програмирање
  • Програмски језици

О аутору

Кадеисха Кеан (51 чланак објављен)

Кадеисха Кеан је програмер комплетног софтвера и писац технике/технологије. Она има изразиту способност да поједностави неке од најсложенијих технолошких концепата; производећи материјал који може лако да разуме сваки почетник у технологији. Она је страствена у писању, развоју занимљивог софтвера и путовању светом (кроз документарне филмове).

Више од Кадеисхе Кеан

Претплатите се на наш билтен

Придружите се нашем билтену за техничке савете, рецензије, бесплатне е-књиге и ексклузивне понуде!

Кликните овде да бисте се претплатили