Programmeringsparadigmer er de teorier eller ideer, der er med til at forme de forskellige sprog, du bruger til at skabe software. De repræsenterer de vigtigste egenskaber ved et programmeringssprog og dikterer dets adfærd.
Det er derfor sikkert at sige, at et paradigme er lige så vigtigt som et programmeringssprogs syntaks og semantik. De fleste populære programmeringssprog bruger en af få typer programmeringsparadigmer.
1. Imperativ programmering
Det imperative paradigme er en af de tidligste tilgange til programmering, der går så langt tilbage som 1950'erne. Dette paradigme er stærkt afhængig af brugen af variabler, kommandoer og procedurer.
Imperativ programmering bruger kommandoer til at inspicere og opdatere variabler og lagre tilstand i et program. En kombination af kommandoer skaber derefter en procedure. Dataabstraktion spiller en afgørende rolle i datarepræsentation, hvilket letter løs kobling.
Et af de mest populære sprog, der bruger det imperative paradigme, er C. Dette programmeringssprog understøtter kun funktionsprocedurer.
Et imperativt programeksempel
#omfatte
#omfattestruct kunde
{
int KundeId;
char Ordrenummer[20];
char Navn[30];
float OrderTotal;
};ugyldig hoved ()
{
struct Customer John = {4000, "HK1001", "John Doe", 200.00};
struct Customer Jane = {4001, "HK1002", "Jane Doe", 600.00};memcpy (Jane. Navn, "Jane Jones", 10);
printf ("De samlede omkostninger for %s ordrenummer %s er: $%.2f",Jane. Navn, Jane. Ordrenummer, Jane. OrderTotal);
}
C-programmet ovenfor skaber en Kunde struktur. Det struktur type er et godt eksempel på dataabstraktion i C.
Programmet demonstrerer, hvordan kommandoer kan oprette, opdatere og vise tilstand - via Jane struktur variabel. Alle disse kommandoer er i en hoved() funktion, der som helhed er en procedure, der angiver, hvor mange penge en kunde skal betale for en ordre.
Udførelse af programmet ovenfor vil producere følgende output i din konsol:
De samlede omkostninger for Jane Jones ordrenummer HK1002 er: $600,00
2. Objektorienteret programmering
Det objektorienterede programmeringsparadigme tog fart i 1990'erne. Dette paradigme er en efterkommer af det imperative. Imidlertid lagrer det objektorienterede paradigme tilstand i objekter og ikke variabler.
Programmeringssprog, der bruger det objektorienterede paradigme, håndterer ofte komplekse applikationer bedre. Paradigmets kernetræk er objekter, klasser, dataindkapsling, arv og polymorfi.
En klasse er den grundlæggende komponent i et objektorienteret program. Nogle klasser arver egenskaber og operationer fra andre klasser. Programmører beskriver dette som et forældre-barn-forhold. Det falder ind under kategorien subtype polymorfi.
Klasser indeholder værktøjer til at skjule og beskytte følsomme data gennem indkapsling. Når du har defineret en klasse, kan du bruge den til at oprette objekter.
Tre af de mere populære programmeringssprog, der bruger det objektorienterede paradigme, er Java, C++ og Python.
Et objektorienteret programeksempel
Denne applikation demonstrerer de fleste funktioner i et objektorienteret programmeringssprog, Java. En bestemt type kunde arver adfærd fra en mere generel type. Alle kunder implementerer en grænseflade. Den specifikke kundetype tilsidesætter en metode fra grænsefladen.
Discountable.java-filen
offentliginterface rabat på {
offentligugyldig grandTotal (String orderNumber, dobbelt Total);
}
Ovenstående kode skaber en grænseflade. I Java er en grænseflade endnu et eksempel på polymorfi. Det giver enheder, der ikke er direkte relateret til, adgang til de samme egenskaber, som f.eks grandTotal metode. Denne applikation fokuserer på kunder, men en medarbejderklasse kunne også have brug for rabatgrænsefladen.
Filen Customer.java
offentligklasse Kunde redskaber rabat på {
beskyttetint Kunde ID;
beskyttet Streng kundenavn;
beskyttet String kundekode;offentlig Kunde() {
dette.customerId = 0;
dette.customerName = "";
dette.customerCode = "";
}offentlig Kunde(int kunde-id, streng kundenavn, streng kundekode) {
dette.customerId = kunde-id;
dette.kundenavn = kundenavn;
dette.customerCode = kundekode;
}offentligint getCustomerId() {
Vend tilbage Kunde ID;
}
offentligugyldig setCustomerId(int Kunde ID) {
dette.customerId = kunde-id;
}
offentlig String getCustomerName() {
Vend tilbage Kundenavn;
}
offentligugyldig setCustomerName (String customerName) {
dette.kundenavn = kundenavn;
}
offentlig String getCustomerCode() {
Vend tilbage kundekode;
}offentligugyldig setCustomerCode (String customerCode) {
dette.customerCode = kundekode;
}offentligdobbelt customerType (String customerCode) {
dobbelt rabat = 0;hvis (customerCode.toLowerCase().equals("pre")) {
rabat = 0,10;
} andethvis (customerCode.toLowerCase().equals("gen")) {
rabat = 0,02;
} andethvis (customerCode.toLowerCase().equals("new")) {
rabat = 0,05;
}
Vend tilbage rabat;
}@Tilsidesæt
offentligugyldig grandTotal (String orderNumber, dobbelt Total) {dobbelt rabat = kundetype (kundekode);
dobbelt rabatProcent = i alt * rabat;
dobbelt finalTotal = total - rabatProcent;System.ud.println("For "+ getCustomerName() + " ordrenummer " + ordrenummer + " er totalsummen: $" + finalTotal);
}
}
Koden ovenfor opretter en Kunde klasse. Den implementerer Til rabat brugergrænsefladen, bruger derefter sin metode til at beregne og vise en total total baseret på kundens kategori. Det beskyttet nøgleord i koden ovenfor er et eksempel på dataindkapsling; det begrænser adgangen til de data, der er oprettet gennem denne klasse. Så kun underklasser (eller børneklasser) af Kunde klasse får adgang til sine data.
Filen NewCustomer.java
offentligklasse Ny kunde strækker sig Kunde {
offentlig Ny kunde() {
super();
}offentlig Ny kunde(int kunde-id, streng kundenavn, streng kundekode) {
super(kunde-id, kundenavn, kundekode);
}
}
Koden ovenfor opretter en Ny kunde klasse, der udvider Kunde klasse. Dette Java-klassen bruger arv at repræsentere et forældre-barn forhold til Kunde klasse. Det Ny kunde er barnet i forholdet, så det har adgang til alle ejendommene i kundeklassen. Den importerer kundeklasseattributterne ved hjælp af super() metode.
App.java-filen
offentligklasse App {
offentligstatiskugyldig main (streng[] args) {
Kunde Jane = ny NewCustomer (4001, "Jane Jones", "ny");
Jane.grandTotal("HK1002", 600);
}
}
Koden ovenfor opretter en eksekverbar App klasse. Denne klasse opretter et kundeobjekt (Jane) og gennem polymorfi gør Jane til en Ny kunde. Til sidst genererer den totalen for Janes ordre. Udførelse af programmet ovenfor vil generere følgende output i konsollen:
For Jane Jones ordrenummer HK1002 er totalsummen: $570,0
3. Funktionel programmering
Nøglebegreberne i dette paradigme er udtryk, funktioner, parametrisk polymorfi og dataabstraktion. Udtryk er de grundlæggende komponenter i de funktioner, der bruges af funktionelle programmeringssprog. Parametrisk polymorfi er en af tre typer polymorfi. Denne type letter generisk programmering gennem funktioner og typer.
JavaScript er et af de mest populære funktionelle programmeringssprog.
Eksempel på et funktionelt program
const kunde = {
IDNumber: 1002,
Navn: 'Jane Jones',
Kundekode: 'ny'
}const main = (kunde, funktion, værdi) => {
var total = func.apply (nul, [ kunde. Kundekode, værdi ]);
console.log(`${kunde. Navn} total er: ${total}`);
}const grandTotal = (Kundekode, total) => {
if (Kundekode == "ny") {
rabat = i alt * 0,05;
mainTotal = total - rabat;
returnere hovedTotal;
} else if (Kundekode == "pre") {
rabat = i alt * 0,10;
mainTotal = total - rabat;
returnere hovedTotal;
}
}
hoved (Kunde, grandTotal, 600);
JavaScript-programmet ovenfor har en objekt bogstaveligt og to funktioner. Den erklærer hver af funktionerne som et udtryk ved hjælp af JavaScript pil funktion. Det hoved() funktion er en højere ordens funktion. Det tager grandTotal fungerer som et af dets argumenter, og kalder derefter den funktion. Dette er også et eksempel på parametrisk polymorfi.
Det grandTotal() funktion indeholder flere udtryk, og Kundeobjekt er et eksempel på dataabstraktion. Programmet ovenfor genererer følgende output i konsollen:
Jane Jones i alt er: $570
Programmeringssprogenes kompleksitet
Et programmeringssprog kan legemliggøre begreberne i et programmeringsparadigme, men det betyder ikke, at det er begrænset til ét paradigme. Mange af de populære programmeringssprog (såsom Python, Java, JavaScript og C++) er multi-paradigme sprog.
Nogle programmeringsparadigmer, såsom imperative og objektorienterede paradigmer, er også relaterede. Men på trods af dette slægtskab er der nogle væsentlige forskelle.
Objektorienteret programmering vs. Procedurel programmering: Hvad gør dem anderledes?
Læs Næste
Relaterede emner
- Programmering
- Programmering
- Funktionel programmering
- Objektorienteret programmering
- Programmeringssprog
Om forfatteren
Kadeisha Kean er fuld stack softwareudvikler og teknisk/teknologiskribent. Hun har den udprægede evne til at forenkle nogle af de mest komplekse teknologiske begreber; producere materiale, der let kan forstås af enhver nybegynder teknologi. Hun brænder for at skrive, udvikle interessant software og rejse verden rundt (gennem dokumentarer).
Abonner på vores nyhedsbrev
Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!
Klik her for at abonnere