programação orientada a objetos python
TRANSCRIPT
-
8/18/2019 Programação Orientada a Objetos Python
1/24
Python: Programação Orientada a Objetos
Thiago Lima Silva
Universidade Federal de Santa CatarinaDepartamento de Automação e Sistemas
Santa Catarina, Brasil
1 de julho de 2011
1 / 2 4
http://find/http://goback/
-
8/18/2019 Programação Orientada a Objetos Python
2/24
Introdução
Sumário
1 Introdução
2 Programação Orientada a Objetos
3 A linguagem Python
4 POO em Python
2 / 2 4
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
3/24
Introdução
Introdução
◮ Orientação a Objetos (OO) é uma forma conceitual de se estruturarum programa
◮ A modelagem de sistemas com o uso de orientação a objetos visa:
Diminuir a diferença semântica entre a realidade e o modeloReutilizar códigoFacilitar manutenção
3 / 2 4
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
4/24
Introdução
Introdução
◮ Objeto é uma entidade que possui:
IdentidadeEstadoComportamento
◮ Exemplo: Conta de Banco
NúmeroSaldo
Sacar, depositar
4 / 2 4
I d ˜
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
5/24
Introdução
Figura: Objetos no Mundo Real
5 / 2 4
P ˜ O i t d Obj t
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
6/24
Programaçao Orientada a Objetos
Sumário
1 Introdução
2 Programação Orientada a Objetos
3 A linguagem Python
4 POO em Python
6 / 2 4
Programacão Orientada a Objetos
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
7/24
Programaçao Orientada a Objetos
◮ A Programação Programação Orientada a Objetos (POO) tem comoestrutura básica os objetos que se comunicam e coordenam as suasações
◮ Conceitos Básicos:
Classes: É o tipo de um ObjetoAtributos: Caracterizam o estado de um ObjetoMétodos: Comportamento do objeto (troca de mensagens)Objetos: Instâncias das Classes
7 / 2 4
Programacão Orientada a Objetos
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
8/24
Programaçao Orientada a Objetos
Programação Procedural x POO
(a) Programação Procedural (b) Programação Orientada a Objetos
8 / 2 4
Programacão Orientada a Objetos
http://find/http://goback/
-
8/18/2019 Programação Orientada a Objetos Python
9/24
Programaçao Orientada a Objetos
Conceitos Fundamentais
◮ Encapsulamento (visibilidade):
privados: acesso apenas de dentro da classeprotegidos: acessado de dentro da classe os das subclasses (não
existem em python)públicos: acessados de qualquer classe
◮ Agregação: Quando uma classe faz parte de outra classe
◮ Herança: subclasse herda atributos e métodos de uma classe. Pode-se
adicionar novos atributos e métodos à subclasse.
9 / 2 4
Programacão Orientada a Objetos
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
10/24
Programaçao Orientada a Objetos
Conceitos Fundamentais
◮ Polimorfismo: Sobrecarga de Métodos e Operadores (Python não
permite mais de um método com o mesmo nome no mesmonamespace )
◮ Coordenação e Mensagens: Quando um objeto invoca um método deoutro objeto
10/24
Programação Orientada a Objetos
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
11/24
g ¸ j
Benef́ıcios da Programação Orientada a Objetos (POO)
◮ Modularidade
◮ Produtividade
Aumentar a Reutilização de CódigoFacilitar a Agregação de módulos
◮ Manutenção mais fácil
◮ Adição de novas funcionalidades se torna mais simples
11/24
Programação Orientada a Objetos
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
12/24
g ¸ j
Desvantagens da POO
◮
Curva de Aprendizado maior◮ O desempenho, geralmente, é pior
12/24
A linguagem Python
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
13/24
Sumário
1 Introdução
2 Programação Orientada a Objetos
3 A linguagem Python
4 POO em Python
13/24
A linguagem Python
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
14/24
Python
◮ Desenvolvida em 1991 por Guido Van Rossun
◮ Python é uma linguagem de programação feita em C, relativamente
simples, que possui um grande conjunto de bibliotecas de suporte◮ Linguagem de Alto Ńıvel
◮ Software Livre (Python Software Foundation)
◮ Sintaxe simples que contribui para a boa legibilidade e fácil escrita
14/24
A linguagem Python
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
15/24
◮ Suporta múltiplos paradigmas:Programação ProceduralProgramação Orientada a ObjetosProgramação Funcional
◮ Case sensitive (nome != Nome)
◮ Interpretada
◮ Tipagem Dinâmica e Forte
◮ Multiplataforma:
Linux, Osx, Windows, Solaris, etc..
15/24
A linguagem Python
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
16/24
Por que usar Python?
◮ Fácil Aprendizado
◮ Boa documentação
◮ Software Livre
◮ Suporte a desenvolvimento WEB, Celulares, ..
◮ Conjunto enorme de bibliotecas padrão
◮ Multiplataforma
16/24
A linguagem Python
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
17/24
Quem usa Python?
http://www.python.org/about/success/
(...)
17/24
A linguagem Python
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
18/24
A Linguagem
◮ Hello World: print ’Hello World’◮ Números
Inteiros: 4, 8, 15Ponto Flutuante: 4.23, 42.8E-4
Números Complexos: -5+4j, 2.3-4.6j◮ Strings : ’Hello World’, ”Hello World”
String:format(): print ’Eu estou em {0}’.format(Estado)
◮ Variáveis:
O primeiro caractere precisa ser uma letra ou um , as demais podemser qualquer śımbolo ASCIIPython é case-sensitive (name != NaMe)
18/24
A linguagem Python
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
19/24
◮ Indentação: Python usa espaços em branco para determinar os blocosde código
◮ Controle de fluxo: if, elif, else, while, for◮ Estruturas de Dados:
Listas: [1,2, ’a’]Tuplas(conjuntos fixos): (1, 2 ,3, ”Hello”)Dicionários(hash): {42: ”The answer”, ”key”: ”value”}Conjuntos: ([”list”, ”of”, ”values”])
◮ Funções: def nameOfFunction
19/24
POO em Python
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
20/24
Sumário
1 Introdução
2 Programação Orientada a Objetos
3 A linguagem Python
4 POO em Python
20/24
POO em Python
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
21/24
POO em Python
◮ Em Python, tudo pode ser entendido como objeto
◮ Há suporte para herança múltipla, polimorfismo, agregação,sobrecarga de operadores, etc
◮ Há apenas atributos privados e públicos (incorporado na linguagem)
◮ Há como se definir atributos estáticos (que pertencem à classe)[Cuidado com atributos mutáveis: listas e dicionários]
◮ Introspecção e Reflexão: há como se verificar a classe, o módulo e
outras informações de um objeto
21/24
POO em Python
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
22/24
Classes, Métodos e Atributos
Figura: Classe, métodos e atributos
22/24
POO em Python
http://find/http://goback/
-
8/18/2019 Programação Orientada a Objetos Python
23/24
Herança, Polimorfismo e Agregação
Figura: Herança, Polimorfismo e Agregação
23/24
POO em Python
http://find/
-
8/18/2019 Programação Orientada a Objetos Python
24/24
Obrigado
Obrigado pela atenção!
Thiago [email protected]
24/24
http://find/