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.
Um Exemplo de Programa Imperativo
#incluir
#incluirestruturar 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
Tópicos relacionados
- Programação
- Programação
- Programação Funcional
- Programação Orientada a Objetos
- Linguagens de programação
Sobre o autor
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).
Assine a nossa newsletter
Junte-se à nossa newsletter para dicas de tecnologia, análises, e-books gratuitos e ofertas exclusivas!
Clique aqui para assinar