Curso de Programação Python com Linux - Parte 4

Programa em Python que ilustra o conceito de herança de classes.

Nesta época de ilusões e promessas enganosas geradas por empresas de Inteligência Artificial e seus propagandistas, aprender programação continua sendo mais necessário do que nunca. Nesta quarta parte do curso de programação Python com Linux, continuaremos explicando como entender o paradigma da Programação Orientada a Objetos. Lembre-se de que o link para a lição anterior está no final da postagem.

Embora os agentes e modelos de IA sejam capazes de compreender e escrever código, ainda é necessário que um humano lhes forneça instruções detalhadas. do que ela precisa fazer. Para isso, não basta apenas entender o problema que a aplicação pretende resolver, mas também projetar a solução levando em consideração as características da linguagem.

Vejamos se conseguimos esclarecer isso com uma analogia.

Operários da construção civil erguem arranha-céus. Mas, antes do início da construção, é preciso contratar arquitetos para elaborar os projetos e engenheiros para realizar os cálculos estruturais e projetar as instalações elétricas, de gás e de água. Depois que o prédio estiver concluído, outras pessoas terão que definir o design de interiores. É claro que trabalhadores experientes provavelmente conseguiriam fazer um trabalho competente, desde que não haja complicações. Mas, na prática, ninguém quer correr esse risco.

Na realidade, a codificação por vibração produz melhores resultados quanto mais detalhadas forem as instruções. Além disso, grandes empresas sofreram interrupções de serviço e tiveram bancos de dados insubstituíveis apagados por agentes de Inteligência Artificial excessivamente empreendedores e com instruções insuficientes.

Curso de programação Python com Linux

Vimos em artigos anteriores que o modelo de Programação Orientada a Objetos se baseia em 4 pilares: objetos, classes, métodos e atributos. As classes são os modelos usados ​​para representar os objetos ou entidades com os quais trabalhamos. Esses modelos definem os atributos que os objetos terão, enquanto os métodos definem o comportamento do objeto.

Os diferentes elementos criados com o modelo estabelecido nas classes são chamados de instâncias. Por exemplo, dentro da classe Sistemas Operacionais temos as instâncias: Linux, Windows, macOS. No entanto, podemos querer criar classes que sejam apenas ligeiramente diferentes das classes existentes. Não é necessário reescrever o código, pois podemos aproveitar um recurso da Programação Orientada a Objetos conhecido como herança.

Vamos analisar o seguinte programa com uma classe adicional.

O motivo pelo qual não colo o código diretamente no artigo é, como já expliquei, que a plataforma que usamos para publicar o blog não suporta indentação. Essa prática envolve adicionar espaços ou tabulações (observe o "ou tabulações", pois não podem ser misturados), tornando o código mais fácil de entender.

A indentação facilita a estruturação hierárquica do código.
Diferenciar blocos de código, como loops, funções ou classes. Além disso, se você não indentar seus programas em Python corretamente, eles não funcionarão.

Agora vamos analisar o programa linha por linha.

class Sistemas:

Como vimos, este programa cria o modelo sobre o qual as instâncias do sistema operacional serão criadas.

def __init__(self, nombre, version, derivada):

Aqui estamos construindo a turma. A primeira parte é um método automatizado que é usado sempre que uma nova instância é criada. Os itens entre parênteses são os parâmetros que o objeto terá. `Self` é sempre usado e se refere ao objeto. Ele sempre vem primeiro. Os outros parâmetros são aqueles que definimos em aulas anteriores: o nome da distribuição Linux, a versão e de qual distribuição ela deriva.

self.nombre = nombre
self.version = version
self.derivada = derivada

Essas linhas são usadas para criar os atributos do objeto. São variáveis ​​específicas do objeto que atuam como variáveis ​​dentro do objeto e serão mantidas quando necessário.

def mostrar_info(self):

Este método define como as informações de atributos do objeto serão exibidas. O parâmetro `self` indica que somente os parâmetros salvos como atributos devem ser usados.

print(f"Nombre: {self.nombre}")
print(f"Versión: {self.version}")
print(f"Derivada: {self.derivada}")

Essas 3 linhas indicam que a forma de exibir as informações do atributo é imprimindo-as na tela.

class SistemaConPeso(Sistemas):

É aqui que nosso programa difere do anterior. Adicionamos uma nova classe estendida, construída sobre a anterior. É por isso que o nome da classe anterior é acrescentado ao nome da classe entre parênteses.

def __init__(self, nombre, version, derivada, peso):

Este é o construtor da classe filha, quase igual ao que vimos antes, mas adicionando o parâmetro de peso.

super().__init__(nombre, version, derivada)

Para evitar repetição de código, informamos ao programa, por meio da instrução `super`, que a tarefa de lidar com nome, versão e classe derivada é de responsabilidade da classe pai.

self.peso = peso

Ainda tínhamos que nos preocupar em salvar o atributo de peso.

def mostrar_info(self):

Como o objetivo é evitar escrever código extra, em vez de criar uma nova função que exiba os dados adicionais, modificaremos a que já temos.
super().mostrar_info()

Chame o método da classe pai para definir como os atributos armazenados nela devem ser exibidos.
print(f"Peso: {self.peso}

Adicione informações sobre como os dados da turma atual devem ser exibidos.

sistema = SistemaConPeso("Linux Mint", "22", "Ubuntu", "3GB")

Crie o objeto onde as informações serão armazenadas com o novo parâmetro adicionado e salve-o na variável de sistema.

sistema.mostrar_info()

Chame o método responsável por exibir as informações.

É claro que este programa não tem aplicações práticas reais. Não faria sentido ter que inserir valores de atributos no código, pois um programador seria necessário sempre que algo precisasse ser modificado. Como vimos no exemplo do jogo da velha, o Python pode receber e armazenar informações inseridas pelo usuário através do teclado. Ele também pode fazer isso lendo arquivos ou interagindo com bancos de dados.

No entanto, foi útil para esclarecer conceitos-chave da programação orientada a objetos, como classes, atributos, construtores, métodos, herança e polimorfismo. Prometo que no próximo artigo terminarei de discutir a Programação Orientada a Objetos e começarei a falar sobre como as coisas são feitas em Python.

Programa em Python codificado com VS Code
Artigo relacionado:
Curso de Programação Python com Linux - Parte 3