Парадигмите за програмиране са теориите или идеите, които помагат да се оформят различните езици, които използвате за създаване на софтуер. Те представляват основните характеристики на езика за програмиране, диктуващи неговото поведение.
Следователно е безопасно да се каже, че парадигмата е също толкова важна, колкото синтаксисът и семантиката на езика за програмиране. Повечето популярни езици за програмиране използват един от няколкото типа парадигми за програмиране.
1. Императивно програмиране
Императивната парадигма е един от най-ранните подходи към програмирането, датиращ още от 50-те години на миналия век. Тази парадигма разчита до голяма степен на използването на променливи, команди и процедури.
Императивното програмиране използва команди за проверка и актуализиране на променливи, съхранявайки състоянието в програма. След това комбинация от команди създава процедура. Абстракцията на данни играе решаваща роля в представянето на данни, което улеснява свободното свързване.
Един от най-популярните езици, който използва императивната парадигма, е C. Този език за програмиране поддържа само функционални процедури.
Пример за императивна програма
#включи
#включиstruct Клиент
{
int CustomerId;
char Номер на поръчка[20];
char Име [30];
float OrderTotal;
};void main ()
{
struct Клиент Джон = {4000, "HK1001", "John Doe", 200.00};
struct Customer Jane = {4001, "HK1002", "Jane Doe", 600.00};memcpy (Джейн. Име, "Джейн Джоунс", 10);
printf ("Общата цена за %s номер на поръчка %s е: $%.2f", Джейн. Име, Джейн. Номер на поръчката, Джейн. Обща стойност на поръчката);
}
Програмата C по-горе създава a Клиент структура. В структура type е отличен пример за абстракция на данни в C.
Програмата демонстрира как командите могат да създават, актуализират и показват състояние - чрез Джейн структурна променлива. Всички тези команди са в a main() функция, която като цяло представлява процедура, която посочва колко пари трябва да плати клиентът за поръчка.
Изпълнението на програмата по-горе ще произведе следния изход във вашата конзола:
Общата цена за номер на поръчка на Jane Jones HK1002 е: $600,00
2. Обектно-ориентирано програмиране
Парадигмата за обектно-ориентирано програмиране се появи през 90-те години на миналия век. Тази парадигма е наследник на императивната. Въпреки това, обектно-ориентираната парадигма съхранява състоянието в обекти, а не в променливи.
Езиците за програмиране, които използват обектно-ориентираната парадигма, често се справят със сложни приложения. Основните характеристики на парадигмата са обекти, класове, капсулиране на данни, наследяване и полиморфизъм.
Класът е основният компонент на обектно-ориентирана програма. Някои класове наследяват свойства и операции от други класове. Програмистите описват това като връзка родител-дете. Той попада в категорията на подтип полиморфизъм.
Класовете съдържат инструменти за скриване и защита на чувствителни данни чрез капсулиране. След като дефинирате клас, можете да го използвате за създаване на обекти.
Три от по-популярните езици за програмиране, които използват обектно-ориентираната парадигма са Java, C++ и Python.
Пример за обектно-ориентирана програма
Това приложение демонстрира повечето от характеристиките на обектно-ориентирания език за програмиране Java. Конкретен тип клиент наследява поведението от по-общ тип. Всички клиенти внедряват интерфейс. Конкретният тип клиент отменя метод от интерфейса.
Файлът Discountable.java
общественоинтерфейс с отстъпка {
общественонищожен grandTotal (Номер на низ, двойно обща сума);
}
Кодът по-горе създава интерфейс. В Java интерфейсът е друг пример за полиморфизъм. Той позволява на обекти, които не са пряко свързани, да имат достъп до същите свойства, като общо метод. Това приложение се фокусира върху клиентите, но клас на служители може да използва и интерфейса Discountable.
Файлът Customer.java
общественоклас Клиент инструменти с отстъпка {
защитенимеждународен Клиентски номер;
защитени Низ клиентИме;
защитени String customerCode;обществено Клиент() {
това.customerId = 0;
това.customerName = "";
това.customerCode = "";
}обществено Клиент (международен customerId, String customerName, String customerCode) {
това.customerId = clientId;
това.customerName = клиентИме;
това.customerCode = клиентски код;
}общественомеждународен getCustomerId() {
връщане Клиентски номер;
}
общественонищожен setCustomerId(международен Клиентски номер) {
това.customerId = clientId;
}
обществено Низ getCustomerName() {
връщане Потребителско име;
}
общественонищожен setCustomerName (низ клиентИме) {
това.customerName = клиентИме;
}
обществено Низ getCustomerCode() {
връщане код на клиента;
}общественонищожен setCustomerCode (String customerCode) {
това.customerCode = клиентски код;
}общественодвойно customerType (String customerCode) {
двойно отстъпка = 0;ако (customerCode.toLowerCase().equals("pre")) {
отстъпка = 0,10;
} другоако (customerCode.toLowerCase().equals("gen")) {
отстъпка = 0,02;
} другоако (customerCode.toLowerCase().equals("new")) {
отстъпка = 0,05;
}
връщане отстъпка;
}@Override
общественонищожен grandTotal (Номер на низ, двойно обща сума) {двойно отстъпка = клиентТип (CustomerCode);
двойно процент отстъпка = общо * отстъпка;
двойно finalTotal = общо - процент на отстъпка;Система.навън.println("За "+ getCustomerName() + " Номер на поръчката " + Номер на поръчката + " общата сума е: $" + finalTotal);
}
}
Кодът по-горе създава a Клиент клас. Той реализира С намаление интерфейс, след което използва своя метод за изчисляване и показване на обща сума въз основа на категорията на клиента. В защитени ключова дума в кода по-горе е пример за капсулиране на данни; той ограничава достъпа до данните, създадени чрез този клас. Така че, само подкласове (или дъщерни класове) на Клиент клас ще има достъп до своите данни.
Файлът NewCustomer.java
общественоклас Нов клиент удължава Клиент {
обществено Нов клиент() {
супер();
}обществено Нов клиент(международен customerId, String customerName, String customerCode) {
супер(CustomerId, customerName, customerCode);
}
}
Кодът по-горе създава a Нов клиент клас, който разширява Клиент клас. Това Java класът използва наследяване да представлява връзка родител-дете с Клиент клас. В Нов клиент е детето във връзката, така че има достъп до всички свойства в класа Customer. Той импортира атрибутите на клас Customer с помощта на супер() метод.
Файлът App.java
общественоклас приложение {
общественостатиченнищожен main (String[] args) {
Клиент Джейн = нов NewCustomer (4001, "Джейн Джоунс", "нов");
Jane.grandTotal("HK1002", 600);
}
}
Кодът по-горе създава изпълним файл ап клас. Този клас създава клиентски обект (Jane) и чрез полиморфизъм прави Jane a Нов клиент. И накрая, той генерира общата сума за поръчката на Джейн. Изпълнението на програмата по-горе ще генерира следния изход в конзолата:
За поръчка на Джейн Джоунс номер HK1002 общата сума е: $570,0
3. Функционално програмиране
Ключовите понятия на тази парадигма са изрази, функции, параметричен полиморфизъм и абстракция на данни. Изразите са основните компоненти на функциите, използвани от функционалните езици за програмиране. Параметричният полиморфизъм е един от трите типа полиморфизъм. Този тип улеснява общото програмиране чрез функции и типове.
JavaScript е един от най-популярните функционални езици за програмиране.
Пример за функционална програма
const клиент = {
Идентификационен номер: 1002,
Име: "Джейн Джоунс",
Клиентски код: 'нов'
}const main = (клиент, функция, стойност) => {
var total = func.apply (нула, [ клиент. Клиентски код, стойност ]);
console.log(`${customer. Име} общо е: ${total}`);
}const grandTotal = (CustomerCode, total) => {
if (CustomerCode == "нов") {
отстъпка = общо * 0,05;
mainTotal = общо - отстъпка;
връщане mainTotal;
} else if (CustomerCode == "pre") {
отстъпка = общо * 0,10;
mainTotal = общо - отстъпка;
връщане mainTotal;
}
}
main (Customer, grandTotal, 600);
Програмата на JavaScript по-горе има обектен литерал и две функции. Той декларира всяка от функциите като израз, използвайки Функция със стрелка на JavaScript. В main() функцията е функция от по-висок порядък. Това отнема общо функция като един от аргументите си, след което извиква тази функция. Това също е пример за параметричен полиморфизъм.
В общо() функцията съдържа няколко израза и Клиентобект е пример за абстракция на данни. Програмата по-горе генерира следния изход в конзолата:
Общата сума на Джейн Джоунс е: $570
Сложността на езиците за програмиране
Езикът за програмиране може да въплъщава концепциите на една парадигма за програмиране, но това не означава, че е ограничен до една парадигма. Много от популярните езици за програмиране (като Python, Java, JavaScript и C++) са езици с няколко парадигма.
Някои парадигми за програмиране, като императивната и обектно-ориентирана парадигми, също са свързани. Но въпреки това родство има някои съществени разлики.
Обектно-ориентирано програмиране срещу Процедурно програмиране: Какво ги прави различни?
Прочетете Следващото
Свързани теми
- Програмиране
- Програмиране
- Функционално програмиране
- Обектно-ориентирано програмиране
- Програмни езици
За автора
Kadeisha Kean е разработчик на софтуер с пълен стек и писател по технически/технологии. Тя има отчетливата способност да опростява някои от най-сложните технологични концепции; производство на материал, който може лесно да бъде разбран от всеки начинаещ в технологиите. Тя е страстна да пише, разработва интересен софтуер и да пътува по света (чрез документални филми).
Абонирайте се за нашия бюлетин
Присъединете се към нашия бюлетин за технически съвети, ревюта, безплатни електронни книги и ексклузивни оферти!
Щракнете тук, за да се абонирате