O jeito pythonico das propriedades no Python - Parte 1

Uma constante na orientação a objetos é a presença de propriedades dentro dos objetos quando precisamos armazenar dados para alguma manipulação posterior. É muito comum, principalmente quando viemos de outras linguagens, criarmos os famosos getters and setters para manter também um bom nível de encapsulamento. Vamos ter como exemplo a classe Circulo abaixo: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import math class Circulo: def __init__(self, raio): self.raio = raio def area(self): return self.raio ** 2 * math.pi def circunferencia(self): return self.raio * 2 * math.pi c = Circulo(1) print(c.raio) print(c.area()) print(c.circunferencia()) Perceba que para definirmos um círculo temos que passar o seu raio, com isso podemos calcular facilmente a sua área e circunferência. Precisamos também acessar ocasionalmente esse raio, podemos fazer isso através de dos getters que comentamos, mas isso não é o jeito do Python, ou como falaremos, o jeito mais Pythonico. ...

August 16, 2021 · Lucas Polo

Desconstruindo a orientação a objetos: Encapsulando de verdade os seus atributos

Existe uma lei que rege todos os lugares do mundo, em todos os planos e dimensões. Esta lei é a Lei de Murphy, dizendo que você pode morrer e virar um superpolicial robô chamado Robocop. Brincadeiras a parte, a Lei de Murphy diz basicamente que se algo pode dar errado, isto irá dar errado, ou seja, você não deve deixar nenhuma fresta onde o erro pode ocorrer. O seu criador, Edward A. Murphy, um engenheiro aeroespacial, dizia que nunca devemos deixar uma brecha no projeto, pois será neste ponto onde ocorrerá a falha, e como muitas outras coisas que vieram do mundo da engenharia para a informática, esta lei também veio para o nosso ambiente. Muitos dos erros que ocorrem em sistemas orientados a objetos são causados por simplesmente a facilidade em inserir parâmetros incorretos ou ter acesso a parâmetros que não deveriam ser expostos de qualquer maneira, sem antes passar por algum tratamento ou algoritmo. ...

September 20, 2013 · Lucas Polo

Desconstruindo a Orientação a Objetos (ou esquecendo o que você aprendeu na escola) - Parte 1

Lembro-me como se fosse ontem (que poético isso) a primeira vez que eu ouvi sobre a orientação a objetos. Depois de muito tempo lidando com linguagens puramente procedurais (C, COBOL, Visual Basic), eu ouvi falar sobre esse novo paradigma e é claro, sobre uma das linguagens que usa ele, o Java. A primeira coisa que eu ouvi foi “a orientação a objetos é ótima para construir interfaces gráficas”, e eu sei, que se você tem o mínimo de noção sobre o que é orientação a objetos, sabe que isso foi uma enorme canelada*. Já na faculdade, eu tive aulas de orientação a objetos, iniciando com C++ e no final, em Java. Eu já tinha estudado por conta um pouco sobre orientação a objetos e vi como destacavam os mecanismos de herança, e até hoje muitas literaturas ainda dão a maior ênfase na herança. Porém uma aula que me fez ver como a orientação a objetos é poderosa foi sobre o polimorfismo e a capacidade de chamar métodos de maneira dinâmica durante a execução. E é claro, para não dizer que não falei das flores, aprendemos sobre o encapsulamento, o que era basicamente usar private no que queria esconder e public no que queria exibir. Hoje, depois de muito tempo e um pouco de experiência, eu vi que aprendemos tudo ao contrário. ...

September 18, 2013 · Lucas Polo