Dia 11 [missão Python — parte 5]: Usando o turtle e classe!

Mi
Mi
Jul 23, 2017 · 3 min read

Eae gente?!

Fiquei afastada nesses últimos dias, sem estudar e sem fazer nada útil (shame on me :$ lol). Mas ontem tomei vergonha na minha cara e resolvi voltar para os meus estudos (que diga-se de passagem estão suuuuuuuper atrasados :o ).

Voltando ao curso da Udacity (Programming foundations with Python), o próximo exercício é usar o módulo turtle para desenhar.

A primeira observação que me deixou um tanto quanto descontente é que não consegui usar o “for” para desenhar um quadrado, então usei o “while” mesmo. O teste foi assim:

import turtlei = 0while i <= 4:
turtle.forward(50)
turtle.right(90)
i = i + 1

E o resultado foi esse:

[caption id=”attachment_687" align=”alignnone” width=”323"]

PRINT_quadrado-turtle
PRINT_quadrado-turtle

esse foi o basiquinho[/caption]

Meu quadrado customizado ficou assim:

[caption id=”attachment_692" align=”alignnone” width=”997"]

PRINT_turtle-customize
PRINT_turtle-customize

esse com pequenas customizações, porém não está usando a classe Turtle[/caption]

No código exemplo do Udacity, ele usa a classe Turtle, então mudei para usar no meu código:

import turtledef draw_square():i = 1window = turtle.Screen()
window.bgcolor("black")
brad = turtle.Turtle()
while i <= 4:
brad.pencolor("violet")
brad.pensize(2)
brad.shape("triangle")
brad.speed(2)
brad.forward(100)
brad.right(90)
i = i + 1
window.exitonclick()draw_square()

O turtle é um módulo muito comumente usado para ensinar programação para crianças (o que faz sentido, afinal é um módulo gráfico, bem mais divertido para ensinar programação para elas :D ). Ele é primitivo mas é orientado a objetos e/ou procedures. Até o momento, os exercícios trabalhavam usando os módulos e as funções inseridas neles. o turtle é um módulo que possue a classe Turtle. Mas o que é uma classe? O instrutor exemplifica uma classe como sendo:

“uma caixa embalada com perfeição que reúne muito bem seu conteúdo. Ela nos permite escrever códigos como turtle.Turtle()”

Ele faz ainda alguns comentários sobre o que acontece por trás do uso dela no exercício de desenhar o quadrado:

Visualmente, parece que estamos chamando somente uma função, mas na verdade, quando executamos esse código, estamos chamando uma função chamada init, que foi definida dentro da classe Turtle e faz uma inicialização criando um espaço na memória para uma nova instância ou um novo objeto da classe. No exemplo, essa instância é chamada brad. Quando é criada essa instância, ela pode acessar todos os métodos da classe Turtle.

Eu vou ser muito sincera… há muitos anos eu tento entender orientação a objetos sem sucesso. Essa explicação não foi muito diferente. Fiquei com mais dúvidas do que com esclarecimentos. Por exemplo:

Quando eu digo que criando uma instância e podemos acessar os métodos dentro da classe Turtle, é a “mesma coisa” que dizer que eu posso usar funções da classe Turtle?

Enfim, então pra variar parei a aula e fui atrás de tentar entender o que é uma classe, objeto, método, instância, essas paradas ai de O.O.:

No wikilivros e na wikipedia li:

  • uma classe representa objetos com característica semelhantes. Ela define os comportamentos dos seus objetos através dos métodos e de quais estados ele é capaz de manter em seus atributos.
  • um objeto é uma instância (ou seja, um exemplar) de uma classe. Sendo assim, no meu exemplo, quando eu declarei: brad = turtle.Turtle(), o significado é: pegue a classe Turtle dentro do módulo turtle e instancie (“batize”) ela de brad. E fazendo isso, todos os métodos, que são comportamentos dos objetos de uma classe (e que se eu entendi bem, seriam equivalentes às funções se estivéssemos falando de programação procedural) disponíveis para a classe Turtle ficam disponíveis para serem usadas pela instância brad. [OBS:. isso significa que, a grosso modo, a resposta para a minha pergunta anterior é SIIIIIIM!]

Ainda tem aquelas questões de herança e encapsulamento mas achei que para hoje, entender finalmente esses conceitos já tava ótimo! (claro que vou encaminhar esse post para meus amigos nerds, para ver se eu entendi direito hihihi :D )

A Missão do dia não foi concluída mas eu estou contente de ter entendido essa joça depois de tantos anos! hihi

No mais, até o próximo post.

Arrivederci!

Mi

Just Trying to develop

Um site para você, que como nós, é ‘dummy’ em alguma tecnologia, mas está querendo aprender! Obs:. Blog não-profissional (estamos aqui para aprender ;] )

Mi

Written by

Mi

Big data enthusiastic, studying new technologies by myself. Passionate about Italy, languages, concerts, games, sitcoms, movies, coffee, cartoons, karaoke, etc.

Just Trying to develop

Um site para você, que como nós, é ‘dummy’ em alguma tecnologia, mas está querendo aprender! Obs:. Blog não-profissional (estamos aqui para aprender ;] )

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade