Baixe o app para aproveitar ainda mais
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
Compartilhar