Estrutura de Dados
  • Programação e Estrutura de Dados
  • Estrutura de Dados
    • 1. Vetores e Matrizes
      • Vetores
      • Matrizes
      • Listas de Exercícios
    • 2. Listas Lineares
      • Lista Encadeada Simples
      • Lista Duplamente Encadeada
    • 3. Pilhas
      • Visão Geral
      • Operações
        • Criação de Pilhas
        • Inserção de elementos
        • Remoção de elementos
        • Impressão, topo e tamanho da pilha
      • Exemplo
    • 4. Filas
      • Visão Geral
      • Operações
        • Criação das Filas
        • Inserção de Elementos
        • Remoção de Elementos
        • Impressão, inicio e final da fila
      • Exemplo
    • 5. Recursividade
      • Visão geral
      • Exemplos
        • Execução do Algoritmo de Fibonacci Recursivo
    • 6. Algoritmos de Busca
      • Busca Sequencial
      • Busca Binária
      • Exemplos
    • 7. Algoritmos de Ordenação
      • Ordenação
      • Bubble Sort
      • Selection Sort
      • Insertion Sort
      • Merge Sort
      • Quicksort
    • 8. Árvores
      • Introdução
      • Árvores Binárias
      • Árvores Binárias de Busca
      • Árvores AVL
    • 9. Indexação e Hashing
    • 10. Grafos
  • Programação Orientada a Objetos
    • 1. Introdução a Orientação a Objetos
Powered by GitBook
On this page
  • O paradigma de Programação Orientada a Objetos
  • Vantagens da Orientação a Objetos
  • Os quatro pilares da Orientação a Objetos

Was this helpful?

  1. Programação Orientada a Objetos

1. Introdução a Orientação a Objetos

Previous10. Grafos

Last updated 4 years ago

Was this helpful?

O paradigma de Programação Orientada a Objetos

Paradigmas são formas de enxergar o mundo (os problemas, a vida, um código de um programa). O paradigma de Orientação a Objetos pode ser encarado como uma forma de pensar o seu projeto, desde a arquitetura até a implementação. Outros exemplos de paradigmas de programação são a programação imperativa e a orientada a procedimentos

Paradigma Orientado a Objetos vs Paradigma Orientado a Procedimentos

Orientado a Procedimentos

Orientado a Objetos

  • Baseado em chamada de funções ou sub-rotinas que operam sobre elas

  • O fluxo de dados concentra todas as variáveis

  • Uma função recebe um conjunto de variáveis como argumento e retorna o resultado para o fluxo de dados, que pode ser utilizado por outras funções ou simplesmente ser exibido para o usuário

  • Baseia-se na utilização de componentes individuais (objetos) que colaboram para construir sistemas mais complexos

  • A colaboração entre os objetos é feita através do envio de mensagens

Vantagens da Orientação a Objetos

  • Facilita a reutilização de código;

  • Os modelos refletem o mundo real de maneira mais aproximada:

  • Descrevem de maneira mais precisa os dados;

  • Mais fáceis de entender e manter.

  • Pequenas mudanças nos requisitos não implicam em grandes alterações no sistema em desenvolvimento.

Os quatro pilares da Orientação a Objetos

Quatro pilares da Orientação a Objetos (autoria própria)

Abstração

Classes: estrutura fundamental para definir novos objetos.

Uma classe é apenas a estrutura que especifica os objetos, mas não pode ser utilizada diretamente. Uma instância representa o objeto concretizado a partir de uma classe.

  • Exemplo de uma classe Carro com a definição de dois atributos (modelo e cor):

class Carro:
    def __init__(self, modelo: str, cor: str):
        self.modelo = modelo
        self.cor = cor

Instância: objeto criado com base em uma classe definida

  • Exemplo de uma instância de carro com o preenchimento dos atributos especificados na classe:

if __name__ == '__main__':
    carro: Carro = Carro("Onix", "Vermelho")

Instâncias possum um ciclo de vida definido pelas seguintes fases:

Criada: instância acabou de ser criada e está pronta para uso. Nesta fase os atributos possuem os valores padrões (atribuídos no método __init__)

Manipulada: instância está sendo utilizada no momento para alguma ação (escrita de atributos, chamadas de métodos)

Destruída: instância não é mais necessária e será desalocada da memória.

Métodos

  • Representam os comportamentos de uma classe;

  • Permitem acesso a atributos, tanto para recuperar os valores, como para alterá-los caso necessário;

  • Podem retornam ou não algum valor; e

  • Podem possuir ou não parâmetros.

Estrutura de um método:

def nomeDoMetodo(parametros) -> retorno: corpo

Método Construtor

  • Determina que ações devem ser executadas quando da criação de um objeto; e

  • Pode possuir ou não parâmetros.

  • Pode atribuir valores padrões para atributos opcionais

Estrutura:

class Carro:
    def __init__(self, modelo: str, cor: str, novo: bool = True):
        self.modelo = modelo
        self.cor = cor
        self.novo = novo
    
    def is_novo(self) -> bool:
        return self.novo
Diferença entre classe (estrutura) e objeto (instância)
Ciclo de vida de uma instância de classe

Desde a versão 3.5, a linguagem Python suporta tipagem explícita. O uso de tipos é altamente recomendado para facilitar o entendimento sobre os tipos de dados que se espera como entrada ou saída de determinados métodos. Para mais detalhes, veja:

https://docs.python.org/3/library/typing.html