Paradigmas de programação são as teorias ou ideias que ajudam a moldar as diferentes linguagens que você usa para criar software. Eles representam as principais características de uma linguagem de programação, ditando seu comportamento.

É, portanto, seguro dizer que um paradigma é tão importante quanto a sintaxe e a semântica de uma linguagem de programação. As linguagens de programação mais populares usam um dos poucos tipos de paradigma de programação.

1. Programação Imperativa

O paradigma imperativo é uma das primeiras abordagens à programação, remontando à década de 1950. Esse paradigma depende muito do uso de variáveis, comandos e procedimentos.

A programação imperativa usa comandos para inspecionar e atualizar variáveis, armazenando o estado em um programa. Uma combinação de comandos cria então um procedimento. A abstração de dados desempenha um papel crucial na representação de dados, o que facilita o acoplamento fraco.

Uma das linguagens mais populares que usa o paradigma imperativo é C. Esta linguagem de programação suporta apenas procedimentos de função.

instagram viewer

Um Exemplo de Programa Imperativo

#incluir 
#incluir

estruturar cliente
{
int CustomerId;
char OrderNumber[20];
char Nome[30];
float OrderTotal;
};

vazio principal ()
{
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 ("O custo total do pedido %s número %s é: $%.2f",Jane. Nome, Jane. OrderNumber, Jane. Total de pedidos);
}

O programa C acima cria um Cliente estrutura. O estrutura type é um excelente exemplo de abstração de dados em C.

O programa demonstra como os comandos podem criar, atualizar e exibir o estado — por meio do Jane variável de estrutura. Todos esses comandos estão em um a Principal() função, que como um todo é um procedimento que indica quanto dinheiro um cliente deve pagar por um pedido.

A execução do programa acima produzirá a seguinte saída em seu console:

O custo total para o número de pedido de Jane Jones HK1002 é: $ 600,00

2. Programação Orientada a Objetos

O paradigma de programação orientada a objetos decolou na década de 1990. Este paradigma é descendente do imperativo. No entanto, o paradigma orientado a objetos armazena o estado em objetos e não em variáveis.

As linguagens de programação que usam o paradigma orientado a objetos geralmente lidam melhor com aplicativos complexos. As principais características do paradigma são objetos, classes, encapsulamento de dados, herança e polimorfismo.

Uma classe é o componente fundamental de um programa orientado a objetos. Algumas classes herdam propriedades e operações de outras classes. Os programadores descrevem isso como um relacionamento pai-filho. Ele se enquadra na categoria de polimorfismo de subtipo.

As classes contêm ferramentas para ocultar e proteger dados confidenciais por meio de encapsulamento. Depois de definir uma classe, você pode usá-la para criar objetos.

Três das linguagens de programação mais populares que usam o paradigma orientado a objetos são Java, C++ e Python.

Um exemplo de programa orientado a objetos

Este aplicativo demonstra a maioria dos recursos de uma linguagem de programação orientada a objetos, Java. Um tipo específico de cliente herda o comportamento de um tipo mais geral. Todos os clientes implementam uma interface. O tipo de cliente específico substitui um método da interface.

O arquivo Discountable.java

públicointerface Desconto {

públicovazio grandTotal (String orderNumber, Duplo total);

}

O código acima cria uma interface. Em Java, uma interface é outro exemplo de polimorfismo. Permite que entidades que não estão diretamente relacionadas acessem as mesmas propriedades, como o total geral método. Este aplicativo se concentra nos clientes, mas uma classe de funcionários também pode ter uso para a interface com desconto.

O arquivo Customer.java

públicoclasse Cliente implementa Desconto {
protegidoint Identificação do Cliente;
protegido String nomedocliente;
protegido String customerCode;

público Cliente() {
esta.customerId = 0;
esta.customerName = "";
esta.customerCode = "";
}

público Cliente(int customerId, String customerName, String customerCode) {
esta.customerId = customerId;
esta.customerName = customerName;
esta.customerCode = customerCode;
}

públicoint getCustomerId() {
Retorna Identificação do Cliente;
}
públicovazio setCustomerId(int Identificação do Cliente) {
esta.customerId = customerId;
}
público String getNomeCliente() {
Retorna nome do cliente;
}
públicovazio setCustomerName (String customerName) {
esta.customerName = customerName;
}
público String getCustomerCode() {
Retorna Código do Consumidor;
}

públicovazio setCustomerCode (String customerCode) {
esta.customerCode = customerCode;
}

públicoDuplo customerType (String customerCode) {
Duplo desconto = 0;

E se (customerCode.toLowerCase().equals("pre")) {
desconto = 0,10;
} outroE se (customerCode.toLowerCase().equals("gen")) {
desconto = 0,02;
} outroE se (customerCode.toLowerCase().equals("novo")) {
desconto = 0,05;
}
Retorna desconto;
}

@Sobrepor
públicovazio grandTotal (String orderNumber, Duplo total) {

Duplo desconto = customerType (customerCode);
Duplo descontoPercentagem = total * desconto;
Duplo finalTotal = total - descontoPercentagem;

Sistema.Fora.println("Para "+ getCustomerName() + " Order Number " + orderNumber + " o total geral é: $" + finalTotal);
}

}

O código acima cria um Cliente classe. Ele implementa o Desconto interface, em seguida, usa seu método para calcular e exibir um total geral, com base na categoria do cliente. O protegido palavra-chave no código acima é um exemplo de encapsulamento de dados; ele restringe o acesso aos dados criados por meio dessa classe. Assim, apenas subclasses (ou classes filhas) do Cliente classe terá acesso aos seus dados.

O arquivo NewCustomer.java

públicoclasse Novo cliente estende Cliente {
público Novo cliente() {
super();
}

público Novo cliente(int customerId, String customerName, String customerCode) {
super(customerId, customerName, customerCode);
}

}

O código acima cria um Novo cliente classe que estende o Cliente classe. este A classe Java usa herança para representar uma relação pai-filho com o Cliente classe. O Novo cliente é o filho no relacionamento, portanto, ele tem acesso a todas as propriedades da classe Customer. Importa os atributos da classe Customer usando o super() método.

O arquivo App.java

públicoclasse Aplicativo {
públicoestáticovazio main (String[] argumentos) {
Cliente Jane = novo NovoCliente (4001, "Jane Jones", "novo");
Jane.grandTotal("HK1002", 600);
}
}

O código acima cria um executável Aplicativo classe. Esta classe cria um objeto Customer (Jane) e através do polimorfismo torna Jane uma Novo cliente. Por fim, gera o total geral do pedido de Jane. A execução do programa acima gerará a seguinte saída no console:

Para o pedido de Jane Jones Número HK1002, o total geral é: $ 570,0

3. Programação Funcional

Os conceitos-chave deste paradigma são expressões, funções, polimorfismo paramétrico e abstração de dados. As expressões são os componentes fundamentais das funções usadas pelas linguagens de programação funcionais. O polimorfismo paramétrico é um dos três tipos de polimorfismo. Esse tipo facilita a programação genérica por meio de funções e tipos.

JavaScript é uma das linguagens de programação funcional mais populares.

Um Exemplo de Programa Funcional

const Cliente = {
Número de identificação: 1002,
Nome: 'Jane Jones',
Código do Cliente: 'novo'
}

const main = (cliente, func, valor) => {
var total = func.apply (null, [ cliente. CódigoCliente, valor ]);
console.log(`${cliente. Nome} total é: ${total}`);
}

const grandTotal = (CustomerCode, total) => {
if (CódigoCliente == "novo") {
desconto = total * 0,05;
mainTotal = total - desconto;
retornar principalTotal;
} else if (CustomerCode == "pré") {
desconto = total * 0,10;
mainTotal = total - desconto;
retornar principalTotal;
}
}

principal (Cliente, grandTotal, 600);

O programa JavaScript acima tem um literal de objeto e duas funções. Declara cada uma das funções como uma expressão usando o Função de seta JavaScript. O a Principal() função é uma função de ordem superior. Leva o total geral função como um de seus argumentos, então chama essa função. Este também é um exemplo de polimorfismo paramétrico.

O total geral() função contém várias expressões, e o Clienteobjeto é um exemplo de abstração de dados. O programa acima gera a seguinte saída no console:

O total de Jane Jones é: $ 570

A Complexidade das Linguagens de Programação

Uma linguagem de programação pode incorporar os conceitos de um paradigma de programação, mas isso não significa que esteja limitada a um paradigma. Muitas das linguagens de programação populares (como Python, Java, JavaScript e C++) são linguagens multiparadigmáticas.

Alguns paradigmas de programação, como os paradigmas imperativo e orientado a objetos, também estão relacionados. Mas, apesar desse parentesco, existem algumas diferenças significativas.

Programação Orientada a Objetos vs. Programação procedural: o que os torna diferentes?

Leia a seguir

ParticipaçãoTweetParticipaçãoE-mail

Tópicos relacionados

  • Programação
  • Programação
  • Programação Funcional
  • Programação Orientada a Objetos
  • Linguagens de programação

Sobre o autor

Kadeisha Kean (51 Artigos Publicados)

Kadeisha Kean é desenvolvedora de software full-stack e escritora técnica/tecnológica. Ela tem a habilidade distinta de simplificar alguns dos conceitos tecnológicos mais complexos; produzindo material que pode ser facilmente compreendido por qualquer novato em tecnologia. Ela é apaixonada por escrever, desenvolver softwares interessantes e viajar pelo mundo (através de documentários).

Mais de Kadeisha Kean

Assine a nossa newsletter

Junte-se à nossa newsletter para dicas de tecnologia, análises, e-books gratuitos e ofertas exclusivas!

Clique aqui para assinar