Introdução à Programação Aula 19 Programação com objetos

Documentos relacionados
Introdução à Programação

Introdução à Programação Aula 4 Definição de funções

Pedro Vasconcelos DCC/FCUP. Programação Funcional 3 a Aula Definição de funções

Pedro Vasconcelos DCC/FCUP. Programação Funcional 5 a Aula Definições recursivas

Pedro Vasconcelos DCC/FCUP. Programação Funcional 4 a Aula Listas

Computação II (MAB 225)

Programação Funcional

Tutorial Klogo Turtle

Introdução a programação em Python Flávio Filipe L. S. Porto

Introdução à Programação Aula 20 Definição de classes

Computação 1. Aula 5 - Teórica Professor: Leonardo Carvalho

Introdução à Programação Aula 11 Mais sobre ciclos e iteração

Programação I Aula 3 Primeiros programas

Introdução à Programação Aula 6 Números pseudo-aleatórios

Introdução à Programação Aula 3 Primeiros programas

Introdução à Programação Aula 15 Definições recursivas

Pedro Vasconcelos DCC/FCUP. Programação Funcional 13 a Aula Definição de tipos

Programação Funcional Aulas 5 & 6

Pedro Vasconcelos DCC/FCUP. Programação Funcional 7 a Aula Funções de ordem superior

Introdução à Programação / Programação I

Computação 1 - Python Aula 3 - Teórica: Tipos de dados, Strings, Estrutura Condicional 1/ 28

Programação I Aula 9 Listas e tuplos

Algoritmos e estrutura de dados

Processamento da Informação Teoria Funções

Pedro Vasconcelos DCC/FCUP. Programação Funcional 11 a Aula Gráficos usando Gloss

Programação orientada a objetos

Computação 1 - Python Aula 10 - Teórica: Estrutura de Dados - Dicionário. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 18

Programação I Aula 17 Correção de programas Pedro Vasconcelos DCC/FCUP

Introdução à Programação Aula 14 Dicionários

Fundamentos da Programação

Pedro Vasconcelos DCC/FCUP. Programação Funcional 14 a Aula Um verificador de tautologia

Programação procedimental

Subindo uma escada. Ação: Subir 1 degrau da escada

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa

Fundamentos da Programação

Programação I Aula 10 Processamento de listas

FUNDAMENTOS DA PROGRAMAÇÃO 2º Teste, 1 de junho de 2013, 1h30m

Pedro Vasconcelos DCC/FCUP. Programação Funcional 16 a Aula Árvores equilibradas

Computação 1 - Python Aula 8 - Teórica: Estrutura de Repetição : for 1/ 10

Programação Funcional Aulas 9, 10 & 11

Pedro Vasconcelos DCC/FCUP. Programação Funcional 2 a Aula Tipos e classes

Aula Prática 3. Paradigmas da Programação I / Programação Funcional. ESI/MCC 1 o ano (2005/2006)

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Aula prática 14. Expressão Lambda

Introdução à Computação

Computação 2. Aula 5 Teórica professor: Leonardo Carvalho

Aula 04 Introdução à Programação Orientada à Objetos

Expressões Condicionais

Computação 1 - Python Aula 12 - Teórica. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 22

Transcrição:

Introdução à Programação Aula 19 Programação com objetos Pedro Vasconcelos DCC/FCUP 2015 Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 1 / 20

Nesta aula 1 Programação com objetos 2 Exemplos Módulo turtle Passeio aleatório 3 Tipos de dados Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 2 / 20

Nesta aula 1 Programação com objetos 2 Exemplos Módulo turtle Passeio aleatório 3 Tipos de dados Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 3 / 20

Programação com objetos Programação procedimental e funcional: decompomos problemas em sub-problemas; compomos programas definimos funções e procedimentos. Programação com objetos: agregamos dados e operações em entidades chamada objetos; compomos programas definindo objectos que interagem. Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 4 / 20

O que é um objeto? É uma entidade que agrega dados e operações sobre eles. Permite agrupar conceitos e funcionalidade relacionados Propriedades dos objetos: identidade podemos distinguir um objeto de qualquer outro; estado valores internos ao objeto; comportamento operações que o objeto expõe ao exterior (métodos). Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 5 / 20

Nesta aula 1 Programação com objetos 2 Exemplos Módulo turtle Passeio aleatório 3 Tipos de dados Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 6 / 20

Módulo turtle Até agora usamos o turtle de forma procedimental. Este módulo também pode ser usado com objetos. Cada tartaruga é um objeto: estado a posição e orientação, côr do traço, etc.; comportamento métodos para movimentar e desenhar (forward, left, right, etc); identidade podemos criar múltiplas tartarugas distintas na janela. Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 7 / 20

Módulo turtle (cont.) >>> import turtle >>> alice = turtle.turtle() # uma tartaruga >>> bob = turtle.turtle() # outra tararuga >>> alice.forward(200) # mover a Alice >>> bob.left(90) # mudar estado do Bob >>> bob.pencolor( blue ) >>> bob.forward(100) # mover o Bob Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 8 / 20

Módulo turtle (cont.) Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 9 / 20

Estado Cada tartaruga guarda estado: a sua posição e orientação; a cor da caneta e espessura do traço;... >>> alice.position() (200.00,0.00) >>> bob.position() (0.00,100.00) >>> alice.heading() 0.0 >>> bob.heading() 90.0 Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 10 / 20

Identidade Podemos distinguir as duas tartarugas. >>> alice <turtle.turtle object at 0xfba3d0> >>> bob <turtle.turtle object at 0x7f2dac171390> >>> alice == bob False As duas tartarugas são diferentes mesmo se estiverem na mesma posição e com a mesma orientação! Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 11 / 20

Construtores Turtle é o construtor de objetos tartaruga (não confundir com o nome do módulo turtle) Usamos como uma função sem argumentos: >>> import turtle >>> alice = turtle.turtle() Alternativa >>> from turtle import * >>> alice = Turtle() Turtle é uma classe: define as operações comuns a todas as tartarugas; um molde para fabricar objetos (instâncias). Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 12 / 20

Passeio aleatório Vamos refazer o passeio aleatório de turtle graphics usando objetos. cada tartaruga é um objeto; escolhemos ângulos aleatórios para cada uma. Vantagem dos objetos: é fácil alterar o programa para simular várias tartarugas. Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 13 / 20

Um passo da simulação def step(ts, a): "Passeio aleatório de várias tartarugas." # ts: lista de tartarugas; a: ângulo máximo length = 10 # medida de cada passo for t in ts: # para cada tartaruga if visivel(t): angle = random.randint(-a,a) t.left(angle) else: angle = t.towards(0,0) t.setheading(angle) t.forward(length) Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 14 / 20

Testar se uma tartaruga está visível def visivel(t): "Verifica se a tartaruga t está visivel." w = 0.5*turtle.window_width() h = 0.5*turtle.window_height() (x,y) = t.position() return (x<w and x>=-w and y<h and y>=-h) Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 15 / 20

Programa principal alice = turtle.turtle() # criar 3 tartarugas bob = turtle.turtle() carol = turtle.turtle() alice.speed(0) bob.speed(0) carol.speed(0) alice.pencolor( red ) bob.pencolor( blue ) carol.pencolor( darkgreen ) for i in range(200): # executar 200 passos step([alice,bob,carol], 30) Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 16 / 20

Exemplo de execução Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 17 / 20

Nesta aula 1 Programação com objetos 2 Exemplos Módulo turtle Passeio aleatório 3 Tipos de dados Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 18 / 20

Tipos de dados Os tipos pré-definidos em Python são objetos: tipos básicos int, float, bool tipos estruturados str, list, tuple, dict Podemos também definir novas classes para novos tipos de dados (nas próximas aula). Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 19 / 20

Tipos de dados (cont.) Exemplos: >>> txt = banana >>> txt.count( a ) 3 >>> xs = [1,1,2,3,3,4] >>> type(xs) <class list > >>> xs.count(3) 2 >>> xs.append(1) >>> xs.count(1) 3 Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 19 Programação com objetos 2015 20 / 20