Conteúdo[Esconder][Mostrar]
Entre os desenvolvedores, a programação orientada a objetos atraiu um número considerável de seguidores. A linguagem de computador popular Python também adere ao paradigma orientado a objetos.
Ele lida com a definição de objetos e classes em Python, que forma a base para os princípios de POO. Neste tutorial sobre “programação orientada a objetos em Python”, você aprenderá como declarar classes Python, criar objetos a partir delas e usar as quatro técnicas de POO.
Então, a primeira coisa em primeiro lugar.
O que é programação orientada a objetos?
O foco principal da programação orientada a objetos (OOP) é a criação de “objetos”. Uma coleção de variáveis e funções interconectadas compõe um objeto.
Essas variáveis são freqüentemente chamadas de atributos do objeto, e seus comportamentos são freqüentemente chamados de funções. Esses itens fornecem ao aplicativo uma estrutura mais eficaz e compreensível. Um automóvel é um exemplo de item.
Se o automóvel fosse um item, seus atributos incluiriam coisas como cor, modelo, preço, marca etc. Além disso, ele aceleraria, desaceleraria e mudaria de marcha.
Outra ilustração: se pensarmos em um cachorro como um item, então algumas de suas características podem ser cor, raça, nome, peso, etc. E ele estaria se movendo, latindo, brincando, etc.
Por incorporar conceitos do mundo real como objetos, ocultação, herança, etc. na programação, a programação orientada a objetos é bem conhecida. Por ser tão semelhante às circunstâncias do mundo real, a visualização é simplificada.
Conceitos de Programação Orientada a Objetos
Classes e objetos em Python
Como todas as outras linguagens orientadas a objetos, o Python permite projetar classes para gerar objetos. Os tipos de dados mais populares em Python, incluindo strings, listas, dicionários e outros objetos, são classes internas.
Uma classe é um grupo de métodos vinculados e variáveis de instância que definem um certo tipo de objeto. Uma classe pode ser vista como o modelo ou template para um objeto. As variáveis que compõem uma classe são conhecidas como atributos.
Um objeto é um membro de uma classe que possui um conjunto definido de atributos. Por causa disso, qualquer número de objetos pode ser criado usando a mesma classe.
As classes Python são definidas usando a palavra class, que é seguida pelo nome da classe e dois pontos. Uma ilustração de uma classe de papagaios pode ser:
Aqui, declaramos a classe vazia Parrot usando a palavra-chave class. Criamos instâncias a partir de classes. Uma instância é um objeto específico que foi feito de uma determinada classe. 'pass' é frequentemente usado como um substituto para código cuja implementação podemos renunciar no momento. Podemos executar o código Python sem gerar um erro usando a palavra-chave “pass”.
Uma instanciação de uma classe resulta em um objeto (instância). Somente a descrição do objeto é definida quando uma classe é criada. Como resultado, nenhum armazenamento ou RAM é alocado.
Um exemplo de um objeto de classe papagaio é:
Obj é um objeto da classe Parrot nesta instância.
Digamos que sabemos detalhes sobre papagaios. Vamos agora demonstrar como criar a classe papagaio e seus objetos.
Método especial ( __init__ )
Um método chamado init define os atributos que todo objeto Parrot deve ter (). Quando um novo objeto Parrot é formado, a função __init__ cria o estado inicial do objeto atribuindo os valores que fornecemos nas propriedades do objeto.
Assim, cada nova instância da classe é inicializada usando __init__(). Embora __init__() possa aceitar qualquer número de parâmetros, self é sempre o primeiro parâmetro.
Uma referência à instância de classe ativa é incluída no auto-argumento. O parâmetro self, que liga ao endereço do objeto atual de uma classe e nos dá acesso aos dados de suas variáveis (do objeto), significa isso.
Exemplo 1
Estabelecemos uma classe chamada Parrot no código acima. Em seguida, as propriedades são definidas. As características de uma coisa são suas propriedades. A função __init__ da classe é onde essas características são especificadas.
Quando um objeto é formado, o método inicializador é aquele que é chamado inicialmente. Em seguida, são criadas instâncias da classe Parrot. Blaze e Wonda nesta instância são referências (valores) para nossos novos objetos. __class .species nos permite acessar o atributo class.
Cada instância de uma classe tem as mesmas características. As características da instância também podem ser acessadas usando blaze.name e blaze.age. No entanto, todas as instâncias de uma classe têm atributos de instância exclusivos.
Exemplo 2
De Depósito
As funções definidas dentro do corpo de uma classe são chamadas de métodos. Eles são empregados para especificar como um item se comportará.
Dois métodos, sing() e dance, são definidos no aplicativo mencionado anteriormente (). Como eles são invocados em um objeto de instância, como flame, eles são chamados de métodos de instância.
Fundamentos do conceito OOPS
As quatro ideias centrais da programação orientada a objetos são:
- Herança
- Encapsulamento
- Polimorfismo
- Abstração
Herança
As pessoas costumam dizer aos recém-nascidos que eles têm características faciais que se assemelham às de seus pais ou que herdaram traços particulares de seus pais.
É possível que você também tenha observado que compartilha algumas características com seus pais. A situação do mundo real também é bastante semelhante à herança.
No entanto, neste caso, as características das “classes pai” são passadas para as “classes filhas”. Esses aspectos são referidos como “propriedades” e “métodos” neste contexto.
Uma classe pode derivar seus métodos e atributos de outra classe usando a técnica conhecida como herança. Herança é o processo de uma classe filha receber as propriedades de uma classe pai.
Exemplo:
A classe pai Human é herdada pela classe filha Boy no exemplo acima. Como Boy está herdando de Human, podemos acessar todos os seus métodos e atributos quando criamos uma instância da classe Boy.
Na classe Boy, um método chamado schoolName também foi definido. O objeto de classe pai não pode acessar o método schoolName. O método schoolName pode, no entanto, ser chamado criando um objeto de classe filho (Boy).
Encapsulamento
Dar a cada variável no programa acesso global não é uma jogada inteligente ao trabalhar com classes e manipular dados confidenciais.
Sem dar ao programa acesso completo a nenhuma dessas variáveis, o encapsulamento fornece um mecanismo para obtermos as variáveis necessárias.
Os métodos definidos explicitamente para essa finalidade podem ser usados para atualizar, editar ou excluir dados de variáveis. Este método de programação tem as vantagens de maior segurança e controle sobre a entrada de dados.
Veja com que rapidez as variáveis podem ser acessadas na demonstração abaixo:
Polimorfismo
Digamos que você esteja usando seu telefone para navegar no Instagram feeds. Quando deu vontade de ouvir alguma música, acessou o Spotify e começou a tocar sua música favorita.
Depois de um tempo, você recebeu uma ligação, então pausou tudo o que estava fazendo em segundo plano para atender. Seu amigo ligou e pediu que você enviasse uma mensagem com o número de telefone de uma determinada pessoa.
Então você enviou a ele o número de telefone por SMS e continuou com suas tarefas. Você pegou alguma coisa? Com apenas um dispositivo - seu telefone celular - você pode navegar por feeds, ouvir música, receber e fazer chamadas telefônicas e enviar mensagens.
Portanto, o polimorfismo é comparável a isso. Poly significa numerosos, e morph denota diferentes formas. Portanto, o polimorfismo como um todo se refere a algo com várias formas.
Ou “algo” que, dependendo da circunstância, pode apresentar uma variedade de comportamentos. Em OOPS, o polimorfismo descreve funções com os mesmos nomes, mas comportamentos distintos. Alternativamente, uma assinatura de função diferente com o mesmo nome de função (parâmetros passados para a função).
Exemplo:
Aqui, podemos usar a variável animal para iterar entre os objetos da Zebra e do Coelho, usando seus respectivos métodos de instância. Como resultado, o comportamento (color() & eats()) tanto da Zebra quanto do Coelho são representados aqui por uma única variável chamada animal. Está, portanto, aderindo às regras de polimorfismo.
Abstração
Você provavelmente usa um laptop, telefone ou tablet para ler este conteúdo. Ao lê-lo, você provavelmente também está tomando notas, sublinhando passagens-chave e talvez armazenando algumas informações em seus arquivos pessoais.
Tudo o que você pode ver ao ler isso é uma “tela” com os dados que estão sendo exibidos para você. Você apenas vê as teclas do teclado enquanto digita, então não precisa se preocupar com sutilezas internas, como pressionar uma tecla pode fazer com que essa palavra apareça na tela.
Alternativamente, como pressionar um botão na tela pode iniciar uma nova guia.
Portanto, tudo o que podemos observar nessa situação é abstrato. Só podemos ver o resultado que está criando e não as complexidades internas (que realmente importam para nós).
Semelhante a isso, a abstração apenas revela as funções que tudo possui enquanto oculta quaisquer implementações ou detalhes internos.
O principal objetivo da abstração é ocultar informações básicas e qualquer implementação de dados estranhos para que as pessoas vejam apenas o que precisam ver. Ele ajuda a gerenciar a complexidade do código.
Exemplo:
Uma classe abstrata relacionada ao veículo está presente aqui. Porque herda da classe abstrata ABC, é abstrato. Como os métodos abstratos não são definidos ou permanecem vazios, a classe Vehicle possui um método abstrato chamado no of wheels que não possui uma definição.
Eles antecipam as classes que herdam as classes abstratas para dar a implementação do método.
Benefícios dos conceitos OOPS
- Ao encapsular, obtém-se alta segurança e privacidade de dados.
- Flexibilidade em ter muitas versões polimórficas da mesma classe.
- O alto nível de complexidade do código foi reduzido pela abstração.
- Em vez de vasculhar centenas de linhas de código para localizar um único problema, a modularidade da programação simplifica a depuração.
- A reutilização de código é causada pela herança de uma classe filha das propriedades da classe pai.
- A resolução eficaz de problemas é possível porque criamos classes que realizam as ações necessárias para cada mini-problema. O problema a seguir pode ser resolvido ainda mais rapidamente, pois podemos reutilizar essas classes.
Conclusão
Em conclusão, aprendemos sobre as ideias de OOPS em Python, o paradigma de programação mais quente do momento.
Depois de ler isso, você deve ter percebido que o paradigma OOPS lida inteiramente com a ideia de classes e objetos. e conceitos OOPS como encapsulamento, polimorfismo, herança e abstração.
Deixe um comentário