Buscar

Slides 01 _ Introdução a Orientação a Objetos

Prévia do material em texto

I N T R O D U Ç Ã O A
O R I E N T A Ç Ã O A O B J E T O S
Mário Meireles Teixeira
Deptº de Informática, UFMA
mario@deinf.ufma.br
CURSO DE LICENCIATURA EM COMPUTAÇÃO
Linguagem de Programação I I
TÓPICOS 
ABORDADOS
Paradigma de Orientação a Objetos (OO)
Classes e Objetos
Atributos e Métodos
Construtores
Primeiros programas em Python
UFMA | L icenc. em Computação | L ing. Programação I I – Prof . Már io Meire les 2
PROGRAMAÇÃO ORIENTADA A OBJETOS
• A POO tem suas origens na década de 1960 e desde os anos 1990 tornou-se o 
principal paradigma de programação para a criação de software
• Na programação procedural, o foco está na escrita de código (funções ou 
procedimentos) que operam sobre os dados 
• Na programação orientada a objetos, o foco reside na criação de objetos que 
contêm tanto dados quanto funcionalidades
• Os objetos correspondem a entidades do mundo real e suas funcionalidades 
são a maneira como eles interagem
UFMA | L icenc. em Computação | L ing. Programação I I – Prof . Már io Meire les 3
POO: UMA PERSPECTIVA DIFERENTE
• Na programação tradicional, utilizamos funções para realizar algo no 
programa. Funções são agentes ativos, que contêm um código-fonte que vai 
atuar sobre os dados do programa
• Na POO, os objetos são os agentes ativos, portanto solicitamos a eles que 
realizem determinadas ações do nosso interesse. Um objeto contém os dados 
e o código que vai agir sobre eles:
Programação Procedural POO
calc_area(b, h) retangulo.calc_area()
UFMA | L icenc. em Computação | L ing. Programação I I – Prof . Már io Meire les 4
POO: UMA PERSPECTIVA DIFERENTE
• A POO é mais parecida com a nossa maneira de pensar. Quando interagimos 
com um celular, p.ex., pedimos a ele simplesmente que envie um SMS e ele 
“sabe” como fazer isso. Não precisamos lhe passar nenhuma “função especial”
• As funcionalidades dos objetos do mundo real são intrínsecas a eles. Uma faca 
sabe como cortar, um lápis como escrever, um carro como frear
• Assim é na POO, um objeto ‘caderneta’ sabe como atualizar as notas dos 
alunos, um ‘círculo’ como calcular sua área, um ‘editor de texto’ como tornar o 
texto em negrito, e assim por diante
• A orientação a objetos permite escrever funções mais versáteis e facilita a 
manutenção e reuso do código-fonte
UFMA | L icenc. em Computação | L ing. Programação I I – Prof . Már io Meire les 5
O QUE É UM OBJETO?
• Um objeto é uma entidade (física ou conceitual) que possui estado e 
comportamento
• Estado:
• Características ou propriedades do objeto 
• Expresso pelos atributos
• programação estruturada à variáveis
• Comportamento:
• O que o objeto sabe fazer, suas funcionalidades
• Definido através dos métodos
• programação estruturada à funções ou procedimentos
• Atributos e métodos são chamados de membros de um objeto
UFMA | L icenc. em Computação | L ing. Programação I I – Prof . Már io Meire les 6
Atributos
Métodos
OBJETO
EXEMPLO: dois objetos Círculo
• A classe Circle define um tipo de 
objeto
• Os objetos são criados de acordo 
com as especificações da classe
• Cada objeto circle1, circle2 é 
independente (e distinto) do outro
• Classe à especificação, tipo
Objeto à instância da classe
UFMA | L icenc. em Computação | L ing. Programação I I – Prof . Már io Meire les 7
O QUE É UMA CLASSE?
• Classes são uma especificação 
para objetos com propriedades
(atributos) e comportamentos
semelhantes (métodos)
• A classe é a “planta”; o objeto é a 
“casa” construída:
• Várias casas diferentes podem ser 
feitas a partir da mesma planta, 
porém cada uma preserva sua 
própria identidade
UFMA | L icenc. em Computação | L ing. Programação I I – Prof . Már io Meire les 8
POO USANDO PYTHON
• A POO introduz um nível maior de abstração e permite aos programadores 
tratar problemas e conceitos cada vez complexos, usando classes e objetos
• As classes são abstrações (representações), em tempo de compilação e os 
objetos são instâncias de classes que mantêm e manipulam sua informação 
(estado), em tempo de execução
• Python é uma linguagem de programação orientada a objetos
• Em Python, todo valor é um objeto. Seja uma lista, uma string, um int, um float, 
todos são objetos. Nós interagimos com os objetos chamando métodos sobre 
eles
• Um objeto é sempre criado (instanciado) a partir de uma classe que o define
UFMA | L icenc. em Computação | L ing. Programação I I – Prof . Már io Meire les 9
•PRIMEIROS 
PASSOS
DECLARANDO UMA CLASSE
• Definição de uma classe mínima em Python:
class Conta:
pass
• Criando objetos (instâncias de classe):
conta1 = Conta()
cta2 = Conta()
UFMA | L icenc. em Computação | L ing. Programação I I – Prof . Már io Meire les 11
UTILIZANDO ATRIBUTOS
• Para criar atributos, basta fazer nome_objeto.nome_atributo = valor :
conta1.ag = "1601-7"
conta1.saldo = 400
• Atributos são como variáveis:
conta1.saldo += 80
print(conta1.saldo)
• Objetos são regiões na memória referenciadas por variáveis:
conta2 = conta1
conta2.saldo = 50
UFMA | L icenc. em Computação | L ing. Programação I I – Prof . Már io Meire les 12
PRIMEIRO PROGRAMA (1)
UFMA | L icenc. em Computação | L ing. Programação I I – Prof . Már io Meire les 13
#!/usr/bin/env python3
#coding: utf-8
class Conta:
pass
conta1 = Conta()
conta1.ag = "1601-7"
conta1.num = "23145-8"
conta1.saldo = 400
print(conta1.saldo)
conta1.saldo += 80
print(conta1.saldo)
conta2 = conta1 # referencia objeto conta1
conta2.saldo = 50 # altera conteúdo de conta1
print(conta2.saldo) 
CONSTRUTORES
UFMA | L icenc. em Computação | L ing. Programação I I – Prof . Már io Meire les 14
class Conta:
def __init__(self, ag, numero, saldo=0):
self.ag = ag
self.num = numero
self.saldo = saldo
#main()
conta1 = Conta("1601-7", "23145-8", 400)
• É recomendável inicializar o estado da classe (os atributos) através de um 
método construtor, chamado automaticamente, uma única vez, quando da 
criação do objeto
• Para tanto, em Python, utiliza-se o método especial __init__ (duas sublinhas):
CRIANDO OUTROS MÉTODOS
UFMA | L icenc. em Computação | L ing. Programação I I – Prof . Már io Meire les 15
class Conta:
def creditar(self, valor):
self.saldo += valor
def debitar(self, valor):
self.saldo -= valor
conta = Conta("1601-7", "23145-8", 400)
conta.creditar(25)
print(conta.saldo)
• O primeiro parâmetro de um método é sempre o self, que referencia o objeto 
criado. Todo acesso a um membro da classe deve ser sempre precedido por 
um self
Saída na tela:
425
IMPRIMINDO O CONTEÚDO DO OBJETO
• O método especial __str__ retorna uma string com uma representação 
textual do conteúdo do objeto:
UFMA | L icenc. em Computação | L ing. Programação I I – Prof . Már io Meire les 16
class Conta:
def __init__(self, ag, numero, saldo=0):
self.ag = ag
self.num = numero
self.saldo = saldo
def __str__(self):
return "Ag: " + self.ag + " C/C: " + self.num + " Saldo: " + str(self.saldo)
# main()
conta = Conta("1601-7", "23145-8", 100)
print(conta)
Saída na tela:
Ag: 1601-7 C/C: 23145-8 Saldo: 100
PRIMEIRO PROGRAMA (2)
UFMA | L icenc. em Computação | L ing. Programação I I – Prof . Már io Meire les 17
class Conta:
def __init__(self, ag, numero, saldo=0):
self.ag = ag
self.num = numero
self.saldo = saldo
def __str__(self):
return "Ag: " + self.ag + " C/C: " + self.num + " Saldo: " + str(self.saldo)
def creditar(self, valor):
self.saldo += valor
def debitar(self, valor):
self.saldo -= valor
# main()
conta = Conta("1601-7", "23145-8", 100)
print(conta)
MATERIAL COMPLEMENTAR
• Recomendamos a leitura do seguinte material on-line, para complementar o 
conteúdo desta aula:
• Capítulo “Programação Orientada a Objetos”, do curso interativo “Aulas de 
Introdução à Computação em Python”. Disponível em: 
https://panda.ime.usp.br/aulasPython/static/aulasPython/aula17.html#programacao-orientada-a-
objetos
• Capítulo “Classes e Objetos – Fundamentos”,do curso interativo “Como Pensar 
como um Cientista da Computação”. Disponível em: 
https://python.ime.usp.br/pensepy/static/pensepy/13-Classes/classesintro.html
UFMA | L icenc. em Computação | L ing. Programação I I – Prof . Már io Meire les 18
https://panda.ime.usp.br/aulasPython/static/aulasPython/aula17.html
https://python.ime.usp.br/pensepy/static/pensepy/13-Classes/classesintro.html
PROGRAMAS DISPONÍVEIS
• Todos os programas utilizados como exemplo nesta disciplina estão 
disponíveis on-line em: www.deinf.ufma.br/~mario/lpII-ead/prog
UFMA | L icenc. em Computação | L ing. Programação I I – Prof . Már io Meire les 19
http://www.deinf.ufma.br/~mario/lpII-ead/prog

Continue navegando