Programmeerparadigma's zijn de theorieën of ideeën die helpen bij het vormgeven van de verschillende talen die u gebruikt om software te maken. Ze vertegenwoordigen de belangrijkste kenmerken van een programmeertaal en dicteren het gedrag ervan.
Het is daarom veilig om te zeggen dat een paradigma net zo belangrijk is als de syntaxis en semantiek van een programmeertaal. De meeste populaire programmeertalen gebruiken een van de weinige soorten programmeerparadigma's.
1. Dwingend programmeren
Het imperatief paradigma is een van de vroegste benaderingen van programmeren en gaat terug tot de jaren vijftig. Dit paradigma is sterk afhankelijk van het gebruik van variabelen, opdrachten en procedures.
Dwingend programmeren gebruikt opdrachten om variabelen te inspecteren en bij te werken, waarbij de status in een programma wordt opgeslagen. Een combinatie van commando's creëert dan een procedure. Data-abstractie speelt een cruciale rol bij datarepresentatie, wat losse koppeling mogelijk maakt.
Een van de meest populaire talen die het imperatief paradigma gebruikt, is C. Deze programmeertaal ondersteunt alleen functieprocedures.
Voorbeeld van een dwingend programma
#erbij betrekken
#erbij betrekkenstruct klant:
{
int Klant-ID;
char Bestelnummer [20];
char Naam [30];
float OrderTotaal;
};leeg hoofd ()
{
struct Klant John = {4000, "HK1001", "John Doe", 200.00};
struct klant Jane = {4001, "HK1002", "Jane Doe", 600.00};memcpy (Jane. naam, "Jane Jones", 10);
printf ("De totale kosten voor %s bestelnummer %s zijn: $%.2f",Jane. Naam, Janneke. Bestelnummer, Jane. Totale bestelling);
}
Het C-programma hierboven creëert een Klant structuur. De structureren type is een goed voorbeeld van data-abstractie in C.
Het programma laat zien hoe commando's een status kunnen creëren, bijwerken en weergeven — via de Jane structuur variabele. Al deze commando's staan in a hoofd() functie, die als geheel een procedure is die aangeeft hoeveel geld een klant moet betalen voor een bestelling.
Als u het bovenstaande programma uitvoert, krijgt u de volgende uitvoer in uw console:
De totale kosten voor Jane Jones-bestelnummer HK1002 zijn: $ 600,00
2. Object georiënteerd programmeren
Het objectgeoriënteerde programmeerparadigma begon in de jaren negentig. Dit paradigma is een afstammeling van de gebiedende wijs. Het objectgeoriënteerde paradigma slaat de status echter op in objecten en niet in variabelen.
Programmeertalen die het objectgeoriënteerde paradigma gebruiken, kunnen complexe toepassingen vaak beter aan. De kernkenmerken van het paradigma zijn objecten, klassen, gegevensinkapseling, overerving en polymorfisme.
Een klasse is het fundamentele onderdeel van een objectgeoriënteerd programma. Sommige klassen erven eigenschappen en bewerkingen van andere klassen. Programmeurs beschrijven dit als een ouder-kindrelatie. Het valt onder de categorie van subtype polymorfisme.
Klassen bevatten tools om gevoelige gegevens te verbergen en te beschermen door middel van inkapseling. Nadat u een klasse hebt gedefinieerd, kunt u deze gebruiken om objecten te maken.
Drie van de meer populaire programmeertalen die het objectgeoriënteerde paradigma gebruiken, zijn Java, C++ en Python.
Voorbeeld van een objectgericht programma
Deze applicatie demonstreert de meeste functies van een objectgeoriënteerde programmeertaal, Java. Een specifiek type klant erft gedrag van een meer algemeen type. Alle klanten implementeren een interface. Het specifieke klanttype overschrijft een methode uit de interface.
Het Discountable.java-bestand
openbaarkoppel verdisconteerd {
openbaarleegte grandTotal (String orderNumber, dubbele totaal);
}
De bovenstaande code creëert een interface. In Java is een interface: een ander voorbeeld van polymorfisme. Het geeft entiteiten die niet direct gerelateerd zijn toegang tot dezelfde eigenschappen, zoals de eindtotaal methode. Deze applicatie is gericht op klanten, maar een werknemersklasse zou ook gebruik kunnen maken van de Discountable-interface.
Het bestand Customer.java
openbaarklas Klant implementeert verdisconteerd {
beschermdint Klanten ID;
beschermd Tekenreeks klantnaam;
beschermd String klantCode;openbaar Klant() {
deze.klant-ID = 0;
deze.klantnaam = "";
deze.klantCode = "";
}openbaar Klant(int klant-ID, tekenreeks klantnaam, tekenreeks klantcode) {
deze.klant-ID = klant-ID;
deze.klantnaam = klantnaam;
deze.klantCode = klantCode;
}openbaarint getCustomerId() {
opbrengst Klanten ID;
}
openbaarleegte setCustomerId(int Klanten ID) {
deze.klant-ID = klant-ID;
}
openbaar Tekenreeks getCustomerName() {
opbrengst klantnaam;
}
openbaarleegte setCustomerName (String customerName) {
deze.klantnaam = klantnaam;
}
openbaar Tekenreeks getCustomerCode() {
opbrengst klantencode;
}openbaarleegte setCustomerCode (String klantCode) {
deze.klantCode = klantCode;
}openbaardubbele customerType (String klantCode) {
dubbele korting = 0;als (customerCode.toLowerCase().equals("pre")) {
korting = 0,10;
} andersals (customerCode.toLowerCase().equals("gen")) {
korting = 0,02;
} andersals (customerCode.toLowerCase().equals("new")) {
korting = 0,05;
}
opbrengst korting;
}@Override
openbaarleegte grandTotal (String orderNumber, dubbele totaal) {dubbele korting = klanttype (klantcode);
dubbele kortingspercentage = totaal * korting;
dubbele finalTotal = totaal - kortingspercentage;Systeem.uit.println("Voor "+ getCustomerName() + "order Number" + orderNumber + " is het eindtotaal: $" + finalTotal);
}
}
De bovenstaande code creëert een Klant klas. Het implementeert de verdisconteerd interface en gebruikt vervolgens zijn methode om een eindtotaal te berekenen en weer te geven op basis van de categorie van de klant. De beschermd trefwoord in de bovenstaande code is een voorbeeld van gegevensinkapseling; het beperkt de toegang tot de gegevens die via deze klasse zijn gemaakt. Dus alleen subklassen (of onderliggende klassen) van de Klant class heeft toegang tot zijn gegevens.
Het bestand NewCustomer.java
openbaarklas Nieuwe klant breidt zich uit Klant {
openbaar Nieuwe klant() {
Super();
}openbaar Nieuwe klant(int klant-ID, tekenreeks klantnaam, tekenreeks klantcode) {
Super(klant-ID, klantnaam, klantcode);
}
}
De bovenstaande code creëert een Nieuwe klant klasse die de. verlengt Klant klas. Deze Java-klasse gebruikt overerving om een ouder-kind relatie te vertegenwoordigen met de Klant klas. De Nieuwe klant is het kind in de relatie, dus het heeft toegang tot alle eigenschappen in de klasse Klant. Het importeert de kenmerken van de klantklasse met behulp van de Super() methode.
Het App.java-bestand
openbaarklas app {
openbaarstatischleegte hoofd (String[] argumenten) {
Klant Jane = nieuwe Nieuwe klant (4001, "Jane Jones", "nieuw");
Jane.grandTotal ("HK1002", 600);
}
}
De bovenstaande code maakt een uitvoerbaar bestand App klas. Deze klasse maakt een Customer-object (Jane) en door polymorfisme maakt Jane een Nieuwe klant. Ten slotte genereert het het eindtotaal voor de bestelling van Jane. Als u het bovenstaande programma uitvoert, wordt de volgende uitvoer in de console gegenereerd:
Voor Jane Jones-bestellingsnummer HK1002 is het totaal: $ 570.0
3. Functionele programmering
De belangrijkste concepten van dit paradigma zijn uitdrukkingen, functies, parametrisch polymorfisme en data-abstractie. Expressies zijn de fundamentele componenten van de functies die worden gebruikt door functionele programmeertalen. Parametrisch polymorfisme is een van de drie soorten polymorfisme. Dit type vergemakkelijkt generieke programmering door middel van functies en typen.
JavaScript is een van de meest populaire functionele programmeertalen.
Voorbeeld van een functioneel programma
const Klant = {
Id-nummer: 1002,
Naam: 'Jane Jones',
Klantcode: 'nieuw'
}const main = (klant, func, waarde) => {
var totaal = func.apply (null, [ klant. Klantcode, waarde ]);
console.log(`${klant. Naam} totaal is: ${total}`);
}const grandTotal = (Klantcode, totaal) => {
if (Klantcode == "nieuw") {
korting = totaal * 0,05;
mainTotal = totaal - korting;
retour hoofdTotaal;
} else if (CustomerCode == "pre") {
korting = totaal * 0,10;
mainTotal = totaal - korting;
retour hoofdTotaal;
}
}
hoofd (Klant, totaal, 600);
Het bovenstaande JavaScript-programma heeft een letterlijk object en twee functies. Het declareert elk van de functies als een uitdrukking met behulp van de JavaScript-pijlfunctie. De hoofd() functie is een functie van hogere orde. Het duurt eindtotaal functie als een van zijn argumenten, roept die functie vervolgens aan. Dit is ook een voorbeeld van parametrisch polymorfisme.
De eindtotaal() functie bevat verschillende uitdrukkingen, en de Klantvoorwerp is een voorbeeld van data-abstractie. Het bovenstaande programma genereert de volgende uitvoer in de console:
Jane Jones-totaal is: $ 570
De complexiteit van programmeertalen
Een programmeertaal kan de concepten van één programmeerparadigma belichamen, maar dat betekent niet dat het beperkt is tot één paradigma. Veel van de populaire programmeertalen (zoals Python, Java, JavaScript en C++) zijn multiparadigmatalen.
Sommige programmeerparadigma's, zoals de imperatief en objectgeoriënteerde paradigma's, zijn ook gerelateerd. Maar ondanks deze verwantschap zijn er enkele significante verschillen.
Objectgericht programmeren vs. Procedureel programmeren: wat maakt ze anders?
Lees volgende
Gerelateerde onderwerpen
- Programmeren
- Programmeren
- Functionele programmering
- Object georiënteerd programmeren
- Programmeertalen
Over de auteur
Kadeisha Kean is een full-stack softwareontwikkelaar en technisch/technologisch schrijver. Ze heeft het onmiskenbare vermogen om enkele van de meest complexe technologische concepten te vereenvoudigen; materiaal produceren dat gemakkelijk kan worden begrepen door elke nieuwe technologie-beginner. Ze is gepassioneerd door schrijven, interessante software ontwikkelen en de wereld rondreizen (via documentaires).
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Klik hier om je te abonneren