I paradigmi di programmazione sono le teorie o le idee che aiutano a plasmare i diversi linguaggi utilizzati per creare software. Rappresentano le principali caratteristiche di un linguaggio di programmazione, determinandone il comportamento.
È, quindi, sicuro dire che un paradigma è importante quanto la sintassi e la semantica di un linguaggio di programmazione. I linguaggi di programmazione più diffusi utilizzano uno dei pochi tipi di paradigma di programmazione.
1. Programmazione imperativa
Il paradigma imperativo è uno dei primi approcci alla programmazione, risalente agli anni '50. Questo paradigma si basa fortemente sull'uso di variabili, comandi e procedure.
La programmazione imperativa utilizza i comandi per ispezionare e aggiornare le variabili, memorizzando lo stato in un programma. Una combinazione di comandi crea quindi una procedura. L'astrazione dei dati gioca un ruolo cruciale nella rappresentazione dei dati, che facilita l'accoppiamento libero.
Uno dei linguaggi più diffusi che utilizza il paradigma dell'imperativo è il C. Questo linguaggio di programmazione supporta solo le procedure di funzione.
Un esempio di programma imperativo
#includere
#includerestruttura Cliente
{
int CustomerId;
char Numero d'ordine[20];
carattere Nome[30];
float OrderTotal;
};vuoto principale ()
{
struct Cliente John = {4000, "HK1001", "John Doe", 200.00};
struct Cliente Jane = {4001, "HK1002", "Jane Doe", 600.00};memcpy (Jane. Nome, "Jane Jones", 10);
printf ("Il costo totale per %s numero d'ordine %s è: $%.2f",Jane. Nome, Jane. Numero d'ordine, Jane. Ordine totale);
}
Il programma C sopra crea a Cliente struttura. Il struttura type è un ottimo esempio di astrazione dei dati in C.
Il programma mostra come i comandi possono creare, aggiornare e visualizzare lo stato — tramite il Giovanna variabile di struttura. Tutti questi comandi sono in a principale() funzione, che nel suo insieme è una procedura che indica quanto denaro dovrebbe pagare un cliente per un ordine.
L'esecuzione del programma sopra produrrà il seguente output nella tua console:
Il costo totale per l'ordine Jane Jones numero HK1002 è: $ 600,00
2. Programmazione orientata agli oggetti
Il paradigma della programmazione orientata agli oggetti è decollato negli anni '90. Questo paradigma è un discendente dell'imperativo. Tuttavia, il paradigma orientato agli oggetti memorizza lo stato negli oggetti e non nelle variabili.
I linguaggi di programmazione che utilizzano il paradigma orientato agli oggetti spesso gestiscono meglio le applicazioni complesse. Le caratteristiche principali del paradigma sono oggetti, classi, incapsulamento dei dati, ereditarietà e polimorfismo.
Una classe è il componente fondamentale di un programma orientato agli oggetti. Alcune classi ereditano proprietà e operazioni da altre classi. I programmatori lo descrivono come una relazione genitore-figlio. Rientra nella categoria del sottotipo di polimorfismo.
Le classi contengono strumenti per nascondere e proteggere i dati sensibili tramite l'incapsulamento. Dopo aver definito una classe, puoi usarla per creare oggetti.
Tre dei linguaggi di programmazione più popolari che utilizzano il paradigma orientato agli oggetti sono Java, C++ e Python.
Un esempio di programma orientato agli oggetti
Questa applicazione mostra la maggior parte delle funzionalità di un linguaggio di programmazione orientato agli oggetti, Java. Un tipo specifico di cliente eredita il comportamento da un tipo più generale. Tutti i clienti implementano un'interfaccia. Il tipo di cliente specifico sovrascrive un metodo dall'interfaccia.
Il file Discountable.java
pubblicointerfaccia Scontabile {
pubblicovuoto grandTotal (String orderNumber, Doppio totale);
}
Il codice sopra crea un'interfaccia. In Java, un'interfaccia è un altro esempio di polimorfismo. Consente a entità non direttamente correlate di accedere alle stesse proprietà, come il somma totale metodo. Questa applicazione si concentra sui clienti, ma una classe di dipendenti potrebbe anche utilizzare l'interfaccia Discountable.
Il file Customer.java
pubblicoclasse Cliente implementa Scontabile {
protettoint identificativo del cliente;
protetto Stringa nomecliente;
protetto Stringa codice cliente;pubblico Cliente() {
questo.ID cliente = 0;
questo.nomecliente = "";
questo.codice cliente = "";
}pubblico Cliente(int customerId, stringa nomecliente, stringa codice cliente) {
questo.ID cliente = ID cliente;
questo.nomecliente = nomecliente;
questo.codice cliente = codice cliente;
}pubblicoint getCustomerId() {
Restituzione identificativo del cliente;
}
pubblicovuoto setCustomerId(int identificativo del cliente) {
questo.ID cliente = ID cliente;
}
pubblico Stringa getNomeCliente() {
Restituzione Nome del cliente;
}
pubblicovuoto setCustomerName (Stringa nomecliente) {
questo.nomecliente = nomecliente;
}
pubblico Stringa getCustomerCode() {
Restituzione codice CLIENTE;
}pubblicovuoto setCustomerCode (String CustomerCode) {
questo.codice cliente = codice cliente;
}pubblicoDoppio customerType (Stringa codice cliente) {
Doppio sconto = 0;Se (customerCode.toLowerCase().equals("pre")) {
sconto = 0,10;
} altroSe (customerCode.toLowerCase().equals("gen")) {
sconto = 0,02;
} altroSe (customerCode.toLowerCase().equals("new")) {
sconto = 0,05;
}
Restituzione sconto;
}@Oltrepassare
pubblicovuoto grandTotal (String orderNumber, Doppio totale) {Doppio sconto = tipo cliente (codice cliente);
Doppio scontoPercentuale = totale * sconto;
Doppio finalTotal = totale - Percentuale di sconto;Sistema.fuori.println("Per "+ getCustomerName() + " order Number " + orderNumber + " il totale generale è: $" + finalTotal);
}
}
Il codice sopra crea un Cliente classe. Implementa il Scontabile interfaccia, quindi utilizza il suo metodo per calcolare e visualizzare un totale generale, in base alla categoria del cliente. Il protetto la parola chiave nel codice sopra è un esempio di incapsulamento dei dati; limita l'accesso ai dati creati tramite questa classe. Quindi, solo le sottoclassi (o classi figlie) di Cliente la classe avrà accesso ai suoi dati.
Il file NewCustomer.java
pubblicoclasse Nuovo cliente si estende Cliente {
pubblico Nuovo cliente() {
super();
}pubblico Nuovo cliente(int customerId, stringa nomecliente, stringa codice cliente) {
super(ID cliente, nome cliente, codice cliente);
}
}
Il codice sopra crea un Nuovo cliente classe che estende il Cliente classe. Questo La classe Java usa l'ereditarietà rappresentare una relazione genitore-figlio con il Cliente classe. Il Nuovo cliente è il figlio nella relazione, quindi ha accesso a tutte le proprietà nella classe Cliente. Importa gli attributi della classe Cliente utilizzando il file super() metodo.
Il file App.java
pubblicoclasse App {
pubblicostaticovuoto main (String[] argomenti) {
Cliente Jane = nuovo Nuovo Cliente (4001, "Jane Jones", "nuovo");
Jane.grandTotal("HK1002", 600);
}
}
Il codice sopra crea un eseguibile App classe. Questa classe crea un oggetto Customer (Jane) e tramite il polimorfismo rende Jane a Nuovo cliente. Infine, genera il totale generale per l'ordine di Jane. L'esecuzione del programma sopra genererà il seguente output nella console:
Per Jane Jones numero d'ordine HK1002 il totale complessivo è: $ 570,0
3. Programmazione Funzionale
I concetti chiave di questo paradigma sono espressioni, funzioni, polimorfismo parametrico e astrazione dei dati. Le espressioni sono i componenti fondamentali delle funzioni utilizzate dai linguaggi di programmazione funzionale. Il polimorfismo parametrico è uno dei tre tipi di polimorfismo. Questo tipo facilita la programmazione generica tramite funzioni e tipi.
JavaScript è uno dei linguaggi di programmazione funzionale più popolari.
Un esempio di programma funzionale
const cliente = {
Numero ID: 1002,
Nome: 'Jane Jones',
Codice cliente: 'nuovo'
}const main = (cliente, funzione, valore) => {
var total = func.apply (null, [ customer. Codice Cliente, valore ]);
console.log(`${cliente. Nome} totale è: ${total}`);
}const grandTotal = (Codice Cliente, totale) => {
if (Codice Cliente == "nuovo") {
sconto = totale * 0,05;
mainTotal = total - sconto;
ritorno mainTotal;
} else if (Codice Cliente == "pre") {
sconto = totale * 0,10;
mainTotal = total - sconto;
ritorno mainTotal;
}
}
principale (Cliente, totale generale, 600);
Il programma JavaScript sopra ha un oggetto letterale e due funzioni. Dichiara ciascuna delle funzioni come un'espressione usando il Funzione freccia JavaScript. Il principale() la funzione è una funzione di ordine superiore. Ci vuole il somma totale funzione come uno dei suoi argomenti, quindi chiama quella funzione. Questo è anche un esempio di polimorfismo parametrico.
Il somma totale() la funzione contiene diverse espressioni e la Clienteoggetto è un esempio di astrazione dei dati. Il programma sopra genera il seguente output nella console:
Il totale di Jane Jones è: $ 570
La complessità dei linguaggi di programmazione
Un linguaggio di programmazione può incarnare i concetti di un paradigma di programmazione, ma ciò non significa che sia limitato a un paradigma. Molti dei più diffusi linguaggi di programmazione (come Python, Java, JavaScript e C++) sono linguaggi multiparadigma.
Sono correlati anche alcuni paradigmi di programmazione, come il paradigma imperativo e orientato agli oggetti. Ma nonostante questa parentela, ci sono alcune differenze significative.
Programmazione orientata agli oggetti vs. Programmazione procedurale: cosa li rende diversi?
Leggi Avanti
Argomenti correlati
- Programmazione
- Programmazione
- Programmazione Funzionale
- Programmazione orientata agli oggetti
- Linguaggi di programmazione
Circa l'autore
Kadeisha Kean è uno sviluppatore di software full-stack e uno scrittore tecnico/tecnologico. Ha la spiccata capacità di semplificare alcuni dei concetti tecnologici più complessi; produrre materiale che può essere facilmente compreso da qualsiasi principiante della tecnologia. È appassionata di scrittura, sviluppo di software interessanti e viaggi per il mondo (attraverso i documentari).
Iscriviti alla nostra Newsletter
Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!
Clicca qui per iscriverti