Programmeringsparadigmer er teoriene eller ideene som bidrar til å forme de forskjellige språkene du bruker til å lage programvare. De representerer de viktigste egenskapene til et programmeringsspråk, og dikterer dets oppførsel.
Det er derfor trygt å si at et paradigme er like viktig som et programmeringsspråks syntaks og semantikk. De fleste populære programmeringsspråk bruker en av noen få typer programmeringsparadigmer.
1. Imperativ programmering
Imperativparadigmet er en av de tidligste tilnærmingene til programmering, og går så langt tilbake som 1950-tallet. Dette paradigmet er sterkt avhengig av bruken av variabler, kommandoer og prosedyrer.
Imperativ programmering bruker kommandoer for å inspisere og oppdatere variabler, og lagre tilstand i et program. En kombinasjon av kommandoer lager deretter en prosedyre. Dataabstraksjon spiller en avgjørende rolle i datarepresentasjon, noe som letter løs kobling.
Et av de mest populære språkene som bruker imperativparadigmet er C. Dette programmeringsspråket støtter kun funksjonsprosedyrer.
Et imperativt programeksempel
#inkludere
#inkluderestruct kunde
{
int Kunde-ID;
char Ordrenummer[20];
char Navn[30];
flyte OrderTotal;
};void main ()
{
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 ("Totalkostnaden for %s ordrenummer %s er: $%.2f", Jane. Navn, Jane. Ordrenummer, Jane. OrderTotal);
}
C-programmet ovenfor oppretter en Kunde struktur. De struktur type er et godt eksempel på dataabstraksjon i C.
Programmet demonstrerer hvordan kommandoer kan opprette, oppdatere og vise tilstand - via Jane strukturvariabel. Alle disse kommandoene er i en hoved() funksjon, som samlet sett er en prosedyre som angir hvor mye penger en kunde skal betale for en ordre.
Å kjøre programmet ovenfor vil produsere følgende utgang i konsollen din:
Den totale kostnaden for Jane Jones bestillingsnummer HK1002 er: $600,00
2. Objektorientert programmering
Det objektorienterte programmeringsparadigmet tok fart på 1990-tallet. Dette paradigmet er en etterkommer av det imperative. Imidlertid lagrer det objektorienterte paradigmet tilstand i objekter og ikke variabler.
Programmeringsspråk som bruker det objektorienterte paradigmet håndterer ofte komplekse applikasjoner bedre. Paradigmets kjernetrekk er objekter, klasser, datainnkapsling, arv og polymorfisme.
En klasse er den grunnleggende komponenten i et objektorientert program. Noen klasser arver egenskaper og operasjoner fra andre klasser. Programmerere beskriver dette som et foreldre-barn-forhold. Det faller inn under kategorien undertype polymorfisme.
Klasser inneholder verktøy for å skjule og beskytte sensitive data gjennom innkapsling. Når du har definert en klasse, kan du bruke den til å lage objekter.
Tre av de mer populære programmeringsspråkene som bruker det objektorienterte paradigmet er Java, C++ og Python.
Et objektorientert programeksempel
Denne applikasjonen demonstrerer de fleste funksjonene til et objektorientert programmeringsspråk, Java. En spesifikk type kunde arver atferd fra en mer generell type. Alle kunder implementerer et grensesnitt. Den spesifikke kundetypen overstyrer en metode fra grensesnittet.
Discountable.java-filen
offentliggrensesnitt Rabattbar {
offentligtomrom grandTotal (String orderNumber, dobbelt Total);
}
Koden ovenfor lager et grensesnitt. I Java er et grensesnitt et annet eksempel på polymorfisme. Det lar enheter som ikke er direkte relatert til å få tilgang til de samme egenskapene, som grandTotal metode. Denne applikasjonen fokuserer på kunder, men en ansattklasse kan også ha bruk for det rabatterte grensesnittet.
Customer.java-filen
offentligklasse Kunde redskaper Rabattbar {
beskyttetint Kunde ID;
beskyttet String 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.customerName = kundenavn;
dette.customerCode = kundekode;
}offentligint getCustomerId() {
komme tilbake Kunde ID;
}
offentligtomrom setCustomerId(int Kunde ID) {
dette.customerId = kunde-ID;
}
offentlig String getCustomerName() {
komme tilbake Kundenavn;
}
offentligtomrom setCustomerName (String customerName) {
dette.customerName = kundenavn;
}
offentlig String getCustomerCode() {
komme tilbake kundenummer;
}offentligtomrom setCustomerCode (streng kundekode) {
dette.customerCode = kundekode;
}offentligdobbelt kundeType (streng kundekode) {
dobbelt rabatt = 0;hvis (customerCode.toLowerCase().equals("pre")) {
rabatt = 0,10;
} ellershvis (customerCode.toLowerCase().equals("gen")) {
rabatt = 0,02;
} ellershvis (customerCode.toLowerCase().equals("new")) {
rabatt = 0,05;
}
komme tilbake rabatt;
}@Overstyring
offentligtomrom grandTotal (String orderNumber, dobbelt Total) {dobbelt rabatt = kundetype (kundekode);
dobbelt rabattProsent = totalt * rabatt;
dobbelt finalTotal = total - rabattProsent;System.ute.println("For "+ getCustomerName() + " ordrenummer " + ordrenummer + " totalsummen er: $" + finalTotal);
}
}
Koden ovenfor oppretter en Kunde klasse. Den implementerer Rabattbar grensesnitt, og bruker deretter metoden sin til å beregne og vise en totalsum, basert på kundens kategori. De beskyttet nøkkelord i koden ovenfor er et eksempel på datainnkapsling; det begrenser tilgangen til dataene som er opprettet gjennom denne klassen. Så, bare underklasser (eller barneklasser) av Kunde klasse vil ha tilgang til dataene sine.
NewCustomer.java-filen
offentligklasse Ny kunde strekker Kunde {
offentlig Ny kunde() {
super();
}offentlig Ny kunde(int kunde-ID, streng kundenavn, streng kundekode) {
super(kunde-ID, kundenavn, kundekode);
}
}
Koden ovenfor oppretter en Ny kunde klasse som utvider Kunde klasse. Dette Java-klassen bruker arv å representere et foreldre-barn-forhold med Kunde klasse. De Ny kunde er barnet i forholdet, så det har tilgang til alle egenskapene i kundeklassen. Den importerer kundeklasseattributtene ved å bruke super() metode.
App.java-filen
offentligklasse App {
offentligstatisktomrom main (streng[] args) {
Kunde Jane = ny NewCustomer (4001, "Jane Jones", "ny");
Jane.grandTotal("HK1002", 600);
}
}
Koden ovenfor lager en kjørbar fil App klasse. Denne klassen lager et kundeobjekt (Jane) og gjennom polymorfisme gjør Jane til en Ny kunde. Til slutt genererer den totalsummen for Janes ordre. Å kjøre programmet ovenfor vil generere følgende utgang i konsollen:
For Jane Jones ordrenummer HK1002 er totalsummen: $570,0
3. Funksjonell programmering
Nøkkelbegrepene i dette paradigmet er uttrykk, funksjoner, parametrisk polymorfisme og dataabstraksjon. Uttrykk er de grunnleggende komponentene i funksjonene som brukes av funksjonelle programmeringsspråk. Parametrisk polymorfisme er en av tre typer polymorfisme. Denne typen letter generisk programmering gjennom funksjoner og typer.
JavaScript er et av de mest populære funksjonelle programmeringsspråkene.
Eksempel på et funksjonelt program
const Customer = {
ID-nummer: 1002,
Navn: 'Jane Jones',
Kundekode: 'ny'
}const main = (kunde, funksjon, verdi) => {
var totalt = func.apply (null, [ kunde. Kundekode, verdi ]);
console.log(`${customer. Totalt navn} er: ${total}`);
}const grandTotal = (Kundekode, totalt) => {
if (Kundekode == "ny") {
rabatt = totalt * 0,05;
mainTotal = total - rabatt;
return mainTotal;
} else if (Kundekode == "pre") {
rabatt = totalt * 0,10;
mainTotal = total - rabatt;
return mainTotal;
}
}
hoved (Kunde, totaltotal, 600);
JavaScript-programmet ovenfor har en objekt bokstavelig og to funksjoner. Den erklærer hver av funksjonene som et uttrykk ved å bruke JavaScript-pilfunksjon. De hoved() funksjon er en funksjon av høyere orden. Det tar grandTotal funksjon som et av argumentene, og kaller deretter den funksjonen. Dette er også et eksempel på parametrisk polymorfisme.
De grandTotal() funksjonen inneholder flere uttrykk, og Kundegjenstand er et eksempel på dataabstraksjon. Programmet ovenfor genererer følgende utgang i konsollen:
Jane Jones totalt er: $570
Kompleksiteten til programmeringsspråk
Et programmeringsspråk kan legemliggjøre konseptene til ett programmeringsparadigme, men det betyr ikke at det er begrenset til ett paradigme. Mange av de populære programmeringsspråkene (som Python, Java, JavaScript og C++) er flerparadigmespråk.
Noen programmeringsparadigmer, som imperative og objektorienterte paradigmer, er også relatert. Men til tross for dette slektskapet, er det noen betydelige forskjeller.
Objektorientert programmering vs. Prosedyreprogrammering: Hva gjør dem annerledes?
Les Neste
Relaterte temaer
- Programmering
- Programmering
- Funksjonell programmering
- Objektorientert programmering
- Programmerings språk
Om forfatteren
Kadeisha Kean er en fullstack-programvareutvikler og teknisk/teknologiskribent. Hun har den utpregede evnen til å forenkle noen av de mest komplekse teknologiske konseptene; produsere materiale som lett kan forstås av enhver teknologinybegynner. Hun er lidenskapelig opptatt av å skrive, utvikle interessant programvare og reise verden rundt (gjennom dokumentarer).
Abonner på vårt nyhetsbrev
Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!
Klikk her for å abonnere