Python Orientado a Objetos - Introdução
As linguagens de programação estão surgindo constantemente, assim como diferentes metodologias. A programação orientada a objetos é uma dessas metodologias que se tornou bastante popular nos últimos anos.
Este capítulo fala sobre os recursos da linguagem de programação Python que a torna uma linguagem de programação orientada a objetos.
Esquema de classificação de programação de linguagem
Python pode ser caracterizado sob metodologias de programação orientada a objetos. A imagem a seguir mostra as características de várias linguagens de programação. Observe os recursos do Python que o tornam orientado a objetos.
Aulas de Langauage | Categorias | Langauages |
---|---|---|
Paradigma de Programação | Processual | C, C ++, C #, Objective-C, java, Go |
Scripting | CoffeeScript, JavaScript, Python, Perl, Php, Ruby | |
Funcional | Clojure, Eralang, Haskell, Scala | |
Classe de Compilação | Estático | C, C ++, C #, Objective-C, java, Go, Haskell, Scala |
Dinâmico | CoffeeScript, JavaScript, Python, Perl, Php, Ruby, Clojure, Erlang | |
Classe de tipo | Forte | C #, java, Go, Python, Ruby, Clojure, Erlang, Haskell, Scala |
Fraco | C, C ++, C #, Objective-C, CoffeeScript, JavaScript, Perl, Php | |
Classe de Memória | Gerenciou | Outras |
Não gerenciado | C, C ++, C #, Objective-C |
O que é programação orientada a objetos?
Object Orientedsignifica direcionado para objetos. Em outras palavras, significa funcionalmente direcionado para a modelagem de objetos. Esta é uma das muitas técnicas usadas para modelar sistemas complexos, descrevendo uma coleção de objetos que interagem por meio de seus dados e comportamento.
Python, uma programação orientada a objetos (OOP), é uma forma de programação que se concentra no uso de objetos e classes para projetar e construir aplicativos. Os principais pilares da Programação Orientada a Objetos (OOP) são Inheritance, Polymorphism, Abstraction, de Anúncios Encapsulation.
Análise Orientada a Objetos (OOA) é o processo de examinar um problema, sistema ou tarefa e identificar os objetos e as interações entre eles.
Por que escolher a programação orientada a objetos?
Python foi projetado com uma abordagem orientada a objetos. OOP oferece as seguintes vantagens -
Oferece uma estrutura de programa clara, que facilita o mapeamento de problemas do mundo real e suas soluções.
Facilita a fácil manutenção e modificação do código existente.
Aumenta a modularidade do programa porque cada objeto existe de forma independente e novos recursos podem ser adicionados facilmente sem perturbar os existentes.
Apresenta uma boa estrutura para bibliotecas de código onde os componentes fornecidos podem ser facilmente adaptados e modificados pelo programador.
Proporciona capacidade de reutilização de código
Programação orientada a objetos vs. programação procedimental
A programação baseada em procedimentos é derivada da programação estrutural baseada nos conceitos de functions/procedure/routines. É fácil acessar e alterar os dados na programação orientada a procedimentos. Por outro lado, a Programação Orientada a Objetos (OOP) permite a decomposição de um problema em uma série de unidades chamadasobjectse construir os dados e funções em torno desses objetos. Ele enfatiza mais os dados do que procedimentos ou funções. Também na OOP, os dados estão ocultos e não podem ser acessados por procedimento externo.
A tabela na imagem a seguir mostra as principais diferenças entre a abordagem POP e OOP.
Diferença entre Programação Orientada a Procedimentos (POP) vs. Programação Orientada a Objetos (OOP).
Programação Orientada a Procedimentos | Programação orientada a objeto | |
---|---|---|
Baseado em | No Pop, todo o foco está em dados e funções | Oops é baseado em um cenário do mundo real. Todo o programa é dividido em pequenas partes chamadas de objeto |
Reutilização | Reutilização limitada de código | Reutilização de código |
Aproximação | Abordagem de cima para baixo | Design focado no objeto |
Especificadores de acesso | Nenhum | Público, privado e protegido |
Movimentação de dados | Os dados podem se mover livremente de funções para funções no sistema | Em Oops, os dados podem se mover e se comunicar uns com os outros por meio de funções de membro |
Acesso de dados | No pop, a maioria das funções usa dados globais para compartilhamento que podem ser acessados livremente de função para função no sistema | Em Ops, os dados não podem se mover livremente de um método para outro, podem ser mantidos em público ou privado para que possamos controlar o acesso aos dados |
Ocultação de dados | No pop, uma forma tão específica de ocultar dados, um pouco menos segura | Ele fornece ocultação de dados, muito mais seguro |
Sobrecarregando | Não é possivel | Sobrecarga de funções e operador |
Linguagens de exemplo | C, VB, Fortran, Pascal | C ++, Python, Java, C # |
Abstração | Usa abstração no nível do procedimento | Usa abstração em nível de classe e objeto |
Princípios da Programação Orientada a Objetos
A Programação Orientada a Objetos (OOP) é baseada no conceito de objects ao invés de ações, e dataem vez de lógica. Para que uma linguagem de programação seja orientada a objetos, ela deve ter um mecanismo que permita trabalhar com classes e objetos, bem como a implementação e uso dos princípios e conceitos fundamentais da orientação a objetos, nomeadamente herança, abstração, encapsulamento e polimorfismo.
Vamos entender cada um dos pilares da programação orientada a objetos em breve -
Encapsulamento
Esta propriedade oculta detalhes desnecessários e facilita o gerenciamento da estrutura do programa. A implementação e o estado de cada objeto estão ocultos por trás de limites bem definidos e isso fornece uma interface limpa e simples para trabalhar com eles. Uma maneira de fazer isso é tornar os dados privados.
Herança
A herança, também chamada de generalização, nos permite capturar uma relação hierárquica entre classes e objetos. Por exemplo, uma 'fruta' é uma generalização de 'laranja'. A herança é muito útil de uma perspectiva de reutilização de código.
Abstração
Esta propriedade permite ocultar os detalhes e expor apenas as características essenciais de um conceito ou objeto. Por exemplo, uma pessoa que dirige uma scooter sabe que ao apertar a buzina, um som é emitido, mas ela não tem ideia de como o som é realmente gerado ao apertar a buzina.
Polimorfismo
Polimorfismo significa muitas formas. Ou seja, uma coisa ou ação está presente de diferentes formas ou modos. Um bom exemplo de polimorfismo é a sobrecarga do construtor nas classes.
Python orientado a objetos
O coração da programação Python é object e OOP, no entanto, você não precisa se restringir ao uso da OOP organizando seu código em classes. OOP adiciona a toda a filosofia de design do Python e incentiva uma forma limpa e pragmática de programação. OOP também permite escrever programas maiores e complexos.
Módulos vs. Classes e Objetos
Módulos são como “dicionários”
Ao trabalhar em Módulos, observe os seguintes pontos -
Um módulo Python é um pacote para encapsular código reutilizável.
Os módulos residem em uma pasta com um __init__.py arquivo nele.
Os módulos contêm funções e classes.
Os módulos são importados usando o import palavra-chave.
Lembre-se de que um dicionário é um key-valuepar. Isso significa que se você tiver um dicionário com uma chaveEmployeID e você deseja recuperá-lo, então você terá que usar as seguintes linhas de código -
employee = {“EmployeID”: “Employee Unique Identity!”}
print (employee [‘EmployeID])
Você terá que trabalhar em módulos com o seguinte processo -
Um módulo é um arquivo Python com algumas funções ou variáveis nele.
Importe o arquivo que você precisa.
Agora, você pode acessar as funções ou variáveis nesse módulo com o '.' (dot) Operador.
Considere um módulo chamado employee.py com uma função chamada employee. O código da função é fornecido abaixo -
# this goes in employee.py
def EmployeID():
print (“Employee Unique Identity!”)
Agora importe o módulo e acesse a função EmployeID -
import employee
employee. EmployeID()
Você pode inserir uma variável nele chamada Age, como mostrado -
def EmployeID():
print (“Employee Unique Identity!”)
# just a variable
Age = “Employee age is **”
Agora, acesse essa variável da seguinte maneira -
import employee
employee.EmployeID()
print(employee.Age)
Agora, vamos comparar isso com o dicionário -
Employee[‘EmployeID’] # get EmployeID from employee
Employee.employeID() # get employeID from the module
Employee.Age # get access to variable
Observe que há um padrão comum em Python -
Dê uma key = value recipiente de estilo
Obtenha algo com o nome da chave
Ao comparar o módulo com um dicionário, ambos são semelhantes, exceto com o seguinte -
No caso do dictionary, a chave é uma string e a sintaxe é [chave].
No caso do module, a chave é um identificador e a sintaxe é .key.
As aulas são como módulos
Módulo é um dicionário especializado que pode armazenar código Python para que você possa acessá-lo com o caractere '.' Operador. Uma classe é uma maneira de pegar um agrupamento de funções e dados e colocá-los dentro de um contêiner para que você possa acessá-los com o operador '.'.
Se você tiver que criar uma classe semelhante ao módulo de funcionário, você pode fazer isso usando o seguinte código -
class employee(object):
def __init__(self):
self. Age = “Employee Age is ##”
def EmployeID(self):
print (“This is just employee unique identity”)
Note- As classes são preferíveis aos módulos porque você pode reutilizá-los como estão e sem muita interferência. Enquanto com módulos, você tem apenas um com o programa inteiro.
Objetos são como mini-importações
Uma classe é como um mini-module e você pode importar de uma maneira semelhante à que faz para as classes, usando o conceito chamado instantiate. Observe que quando você instancia uma classe, você obtém umobject.
Você pode instanciar um objeto, semelhante a chamar uma classe como uma função, conforme mostrado -
this_obj = employee() # Instantiatethis_obj.EmployeID() # get EmployeId from the class
print(this_obj.Age) # get variable Age
Você pode fazer isso de uma das três maneiras a seguir -
# dictionary style
Employee[‘EmployeID’]
# module style
Employee.EmployeID()
Print(employee.Age)
# Class style
this_obj = employee()
this_obj.employeID()
Print(this_obj.Age)