Trabalho Lógica de Programação e Paradigmas

Fazer download em docx, pdf ou txt
Fazer download em docx, pdf ou txt
Você está na página 1de 7

A programação é uma disciplina ampla que envolve a criação de algoritmos e instruções

para computadores executarem tarefas específicas. Existem vários paradigmas de


programação, que são abordagens ou estilos diferentes de escrever código. Alguns dos
principais paradigmas da programação incluem:
1. Programação Procedural: Neste paradigma, o código é organizado em
procedimentos ou funções que executam operações específicas. O foco está na
decomposição do problema em partes menores e na reutilização de código
através de funções.
2. Programação Orientada a Objetos (POO): Na programação orientada a
objetos, o código é estruturado em torno de objetos, que são instâncias de
classes. Cada objeto possui atributos (dados) e métodos (funções) que operam
nesses dados. A POO enfatiza conceitos como encapsulamento, herança e
polimorfismo.
3. Programação Funcional: Este paradigma trata o código como avaliação de
funções matemáticas e evita o estado mutável e os efeitos colaterais. As funções
são tratadas como cidadãs de primeira classe, o que significa que podem ser
atribuídas a variáveis, passadas como argumentos e retornadas como resultados.
4. Programação Declarativa: Na programação declarativa, os programas
descrevem o que deve ser feito, em vez de instruir explicitamente como fazer.
Isso inclui paradigmas como programação funcional e programação lógica.
5. Programação Lógica: Neste paradigma, o problema é modelado em termos de
relações lógicas e regras. O programa consiste em fatos e regras que definem as
relações entre os elementos do problema. A execução do programa envolve
inferência lógica para encontrar soluções.
6. Programação Baseada em Eventos: Neste paradigma, o código responde a
eventos disparados pelo sistema ou usuário. Os programas são organizados em
torno de manipuladores de eventos que são chamados quando ocorrem eventos
específicos.
7. Programação Concorrente e Paralela: Este paradigma lida com a execução
simultânea de várias partes do programa. A programação concorrente lida com a
execução de tarefas independentes em um ambiente compartilhado, enquanto a
programação paralela envolve a execução simultânea de tarefas em múltiplos
núcleos de processador.
8. Programação Orientada a Aspectos: Este paradigma permite separar
preocupações cruzadas, como logging, segurança e tratamento de exceções, do
código principal. Isso é feito através da introdução de aspectos, que são módulos
de código que encapsulam essas preocupações e são injetados no código
principal em tempo de compilação ou execução.

Programação Linear, Estruturada e Orientada a Objetos:


Conceito: A programação linear segue uma abordagem sequencial, onde as instruções
são executadas uma após a outra. A programação estruturada introduz conceitos como
loops, condicionais e sub-rotinas para organizar e controlar o fluxo de execução do
programa. Já a programação orientada a objetos organiza o código em torno de objetos,
que possuem atributos e métodos.
Uso: A programação linear é simples e direta, adequada para problemas simples e
pequenos scripts. A programação estruturada é mais escalável e legível, sendo
amplamente utilizada em desenvolvimento de software. A programação orientada a
objetos é ideal para modelar sistemas complexos e grandes projetos, promovendo
reutilização de código e modularidade.
Vantagens:

 Programação Linear: Simplicidade e fácil entendimento.


 Programação Estruturada: Legibilidade, manutenibilidade e escalabilidade.
 Programação Orientada a Objetos: Reutilização de código, modularidade,
encapsulamento e herança.

Exemplo de Algoritmo para cada Subtópico:


 Programação Linear:
x=5
y = 10
z=x+y
print(z)

 Programação Estruturada:

def calcular_soma(a, b):


return a + b
resultado = calcular_soma(5, 10)
print(resultado)

 Programação Orientada a Objetos:


class Calculadora:
def somar(self, a, b):
return a + b

calc = Calculadora()
resultado = calc.somar(5, 10)
print(resultado)

História e Evolução da POO


A Programação Orientada a Objetos (POO) surgiu nos anos 1960 e 1970, com o
objetivo de trazer uma abordagem mais intuitiva e organizada para o desenvolvimento
de software. A linguagem Simula, desenvolvida na Noruega por Ole-Johan Dahl e
Kristen Nygaard, é frequentemente creditada como a primeira linguagem a introduzir os
conceitos fundamentais da POO.
No entanto, foi com o advento da linguagem de programação Smalltalk, desenvolvida
na Xerox PARC na década de 1970, que a POO começou a ganhar mais atenção e
popularidade. Smalltalk introduziu conceitos como classes, objetos, herança e
polimorfismo, que se tornaram pilares da POO.
Na década de 1980, a linguagem de programação C++ foi desenvolvida por Bjarne
Stroustrup como uma extensão do C, adicionando suporte para programação orientada a
objetos. O C++ trouxe a POO para o mainstream do desenvolvimento de software,
tornando-se uma das linguagens de programação mais populares em uso até hoje.
Desde então, a POO continuou a evoluir com o surgimento de linguagens como Java,
Python e C#, cada uma trazendo suas próprias abordagens e implementações da POO.
Hoje, a POO é amplamente aceita e praticada na indústria de software, sendo
considerada uma das abordagens mais eficazes para desenvolver sistemas complexos e
de grande escala.
A importância da POO na programação atual reside na sua capacidade de oferecer uma
maneira intuitiva e modular de organizar e estruturar o código, promovendo
reutilização, legibilidade e manutenibilidade.

Objetos e Classes:
A Programação Orientada a Objetos (POO) é um paradigma de programação que se
baseia no conceito de "objetos" e "classes". Essa abordagem permite organizar o código
de forma mais modular e reutilizável, ao modelar entidades do mundo real como
objetos, que possuem atributos (características) e métodos (ações). As classes são as
estruturas que definem os objetos, especificando quais atributos e métodos eles
possuem.
Classes: Uma classe é uma estrutura que define um tipo de objeto. Ela encapsula os
dados (atributos) e comportamentos (métodos) que os objetos dessa classe irão possuir.
As classes servem como modelos para criar múltiplos objetos com características
similares. Por exemplo, se estivéssemos modelando carros, poderíamos ter uma classe
"Carro" que define os atributos comuns a todos os carros, como cor, marca, modelo e
métodos como ligar, desligar, acelerar, etc.
Objetos: Um objeto é uma instância de uma classe. Em outras palavras, quando uma
classe é instanciada, ela se torna um objeto específico com seus próprios valores para os
atributos e pode executar os métodos definidos na classe. Por exemplo, se criarmos um
objeto "carro1" a partir da classe "Carro", esse objeto terá suas próprias características,
como cor, marca e modelo, e poderá executar métodos como ligar e desligar.
Funcionamento:
Para entender melhor o funcionamento de classes e objetos, vamos considerar dois
exemplos simples em algoritmos:

Exemplo 1: Classe Pessoa

class Pessoa:
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade

def apresentar(self):
print(f"Olá, meu nome é {self.nome} e tenho {self.idade} anos.")

# Criando objetos
pessoa1 = Pessoa("João", 30)
pessoa2 = Pessoa("Maria", 25)

# Chamando métodos
pessoa1.apresentar()
pessoa2.apresentar()

Neste exemplo, temos a classe "Pessoa", que possui os atributos "nome" e "idade" e o
método "apresentar", que imprime uma mensagem de apresentação com o nome e idade
da pessoa. Depois, criamos dois objetos, "pessoa1" e "pessoa2", a partir dessa classe e
chamamos o método "apresentar" para cada um deles.
Exemplo 2: Classe Conta Bancária

class ContaBancaria:
def __init__(self, titular, saldo=0):
self.titular = titular
self.saldo = saldo

def depositar(self, valor):


self.saldo += valor
print(f"Depósito de R${valor} realizado. Novo saldo: R${self.saldo}")

def sacar(self, valor):


if valor > self.saldo:
print("Saldo insuficiente.")
else:
self.saldo -= valor
print(f"Saque de R${valor} realizado. Novo saldo: R${self.saldo}")

# Criando objeto
conta1 = ContaBancaria("João")

# Realizando operações
conta1.depositar(1000)
conta1.sacar(500)

Neste segundo exemplo, temos a classe "ContaBancaria", que possui os atributos


"titular" e "saldo" e os métodos "depositar" e "sacar" para manipular o saldo da conta.
Criamos um objeto "conta1" a partir dessa classe e realizamos operações de depósito e
saque.

Atributos e Métodos

Na Programação Orientada a Objetos (POO), os conceitos de atributos e métodos


desempenham papéis fundamentais. Eles são essenciais para definir o comportamento e
as características dos objetos, permitindo modelar entidades do mundo real de forma
mais precisa e modular. Vamos explorar detalhadamente cada um desses conceitos e
fornecer exemplos práticos para ilustrar seu funcionamento.
Atributos:
Os atributos são características dos objetos que pertencem a uma classe específica. Eles
representam os dados associados a um objeto e descrevem seu estado. Por exemplo, em
uma classe "Carro", os atributos podem incluir marca, modelo, cor e ano de fabricação.
Os atributos são definidos na classe e cada objeto dessa classe terá seus próprios valores
para esses atributos.
Métodos:
Os métodos são funções associadas a uma classe que definem o comportamento dos
objetos dessa classe. Eles representam as ações que um objeto pode executar e podem
manipular os atributos do objeto ou realizar outras operações. Por exemplo, em uma
classe "Carro", os métodos podem incluir ligar, desligar, acelerar e frear. Os métodos
são definidos na classe e podem ser chamados em objetos específicos dessa classe para
realizar operações.
Funcionamento:
Vamos exemplificar o funcionamento de atributos e métodos com dois exemplos em
algoritmos:

Exemplo 1: Classe Pessoa

class Pessoa:
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade

def apresentar(self):
print(f"Olá, meu nome é {self.nome} e tenho {self.idade} anos.")

# Criando objeto
pessoa1 = Pessoa("João", 30)

# Acessando atributos
print(pessoa1.nome) # Saída: João
print(pessoa1.idade) # Saída: 30

# Chamando método
pessoa1.apresentar() # Saída: Olá, meu nome é João e tenho 30 anos.

Neste exemplo, temos a classe "Pessoa", que possui os atributos "nome" e "idade" e o
método "apresentar" para imprimir uma mensagem de apresentação com o nome e idade
da pessoa. O método __init__ é um método especial em Python usado para inicializar os
atributos quando um objeto é criado. Criamos um objeto pessoa1 a partir dessa classe e
acessamos seus atributos usando a notação de ponto. Em seguida, chamamos o método
apresentar para exibir a mensagem de apresentação.

Exemplo 2: Classe Retângulo


class Retangulo:
def __init__(self, comprimento, largura):
self.comprimento = comprimento
self.largura = largura

def calcular_area(self):
return self.comprimento * self.largura

def calcular_perimetro(self):
return 2 * (self.comprimento + self.largura)

# Criando objeto
retangulo1 = Retangulo(5, 3)

# Chamando métodos
print(retangulo1.calcular_area()) # Saída: 15
print(retangulo1.calcular_perimetro()) # Saída: 16

Neste segundo exemplo, temos a classe "Retangulo", que possui os atributos


"comprimento" e "largura" e os métodos "calcular_area" e "calcular_perimetro" para
calcular a área e o perímetro do retângulo, respectivamente. Criamos um objeto
retangulo1 a partir dessa classe com comprimento 5 e largura 3. Em seguida, chamamos
os métodos para calcular a área e o perímetro do retângulo e exibimos os resultados.

Vocabulário

1. Classe:
Definição: Uma classe é um modelo ou uma planta de um objeto. Ela define os atributos
e métodos que os objetos desse tipo terão.
Função: As classes são usadas para criar objetos. Elas encapsulam comportamentos e
estados em um único objeto.
2. Objeto:
Definição: Um objeto é uma instância de uma classe. Ele possui características
(atributos) e comportamentos (métodos) definidos pela classe.
Função: Os objetos são as entidades que manipulamos e trabalhamos em programas
orientados a objetos. Eles permitem representar entidades do mundo real em código.
3. Atributo:
Definição: Um atributo é uma variável associada a uma classe ou a um objeto. Ele
armazena informações sobre o estado do objeto.
Função: Os atributos representam características dos objetos e são usados para
armazenar dados específicos de cada objeto.
4. Método:
Definição: Um método é uma função associada a uma classe ou a um objeto. Ele define
o comportamento dos objetos dessa classe.
Função: Os métodos representam as ações que os objetos podem realizar. Eles podem
manipular os atributos do objeto ou realizar outras operações.
5. Construtor (__init__):
Definição: O construtor é um método especial em Python que é chamado
automaticamente quando um objeto é criado. Ele inicializa os atributos do objeto.
Função: O construtor é usado para definir e inicializar os atributos de um objeto quando
ele é criado.
6. Herança:
Definição: A herança é um mecanismo que permite que uma classe herde atributos e
métodos de outra classe. A classe que herda é chamada de subclasse, e a classe da qual
ela herda é chamada de superclasse ou classe base.
Função: A herança permite reutilizar código e estabelecer uma relação hierárquica entre
as classes, promovendo a modularidade e a extensibilidade do código.
7. Encapsulamento:
Definição: O encapsulamento é um conceito que se refere à ocultação dos detalhes
internos de implementação de uma classe, expondo apenas uma interface para interagir
com ela.
Função: O encapsulamento ajuda a proteger o estado interno de um objeto, permitindo
que os detalhes de implementação sejam alterados sem afetar o código que utiliza a
classe.
8. Polimorfismo:
Definição: O polimorfismo é a capacidade de um objeto executar métodos de maneiras
diferentes com base no contexto em que são chamados.
Função: O polimorfismo permite que diferentes classes implementem métodos com o
mesmo nome, mas comportamentos diferentes, promovendo a flexibilidade e a
reutilização de código.
9. Override (sobrescrita):
Definição: O override ocorre quando uma subclasse define um método com o mesmo
nome e assinatura de um método da superclasse.
Função: O override permite que a subclasse forneça uma implementação específica para
um método herdado da superclasse, substituindo a implementação padrão da
superclasse.
10. Acesso a Atributos e Métodos:
Definição: O acesso a atributos e métodos refere-se à capacidade de ler ou modificar os
valores dos atributos e chamar os métodos de um objeto.
Função: O acesso a atributos e métodos é fundamental para interagir com os objetos de
uma classe, permitindo manipular seu estado e comportamento.

Este dicionário abrange os principais termos e conceitos utilizados na programação


orientada a objetos em Python, fornecendo definições e funções para cada um deles.
Esses conceitos são fundamentais para compreender e desenvolver programas usando o
paradigma de orientação a objetos em Python.

Você também pode gostar