FLISOL-2013
python orientado a objetos
Luan Fonseca <luanfonceca@gmail.com>
Quem sou eu
- Luan fonseca, 20 anos, programador desde 2010;
- Graduando em Enhgenharia de Software/UFRN, formado como Técnico de Infomática para Internet com ênfase WEB pelo IDM;
- Desenvolvedor de Software na empresa Multmeio;
- Entusiasta e evangelista Python e Open-source.
Porque você deve me ouvir
- Já estive no seu lugar;
- Me mostraram o Python igual agora;
- Open-source is awesooome!
- As empresas daqui precisam mais de programadores pagam bem, se merecido, óbvio.
Quem usa python
Onde pode ser usado
- Desenvolvimento WEB (Django, Flask, ZOPE, Web2py, Pyramid);
-
Desenvolvimento Desktop (PyQT, PyGTK
);
- Na Ciência (SciPy, BioPython, AstroPy);
- Jogos e Multmidia (PyGame, PyMedia, PyOpenGL, Python GStreamer, PIL);
Primeiro "Hello world"
Em Java
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello, World!!!");
}
}
Em Python
print "Hello, World!!!"
Um pouco de Código
nome = "Luan"
idade = 20
peso = 70.3
gosta_de_python = True
interesses = ["Python", "Software Livre", 42]
informacoes = {
'nome': nome,
'interesses': interesses,
'idade': idade,
'empresa': 'Multmeio',
'funcao': 'Desenvolvedor',
}
def exibir_nome(nome):
print "Seu nome: " + nome
Condicionais
if condicao:
print "Faca algo"
if condicao:
print "Condicao resultou em True" else:
print "Condicao resultou False"
if condicao1:
print "Condicao1 resultou em True" elif condicao2:
print "Condicao2 resultou em True" else:
print "Nenhuma das condicoes resultou em True"
while True:
print "Rodando para sempre"
Orientação a Objetos
Classe
É uma estrutura que visa abstrair e imitar o comportamento de coisas reais.
Objeto
O mais básico tipo de coisa, qualquer instancia de qualquer coisa.
Instância
O Resultado, o objeto, criado pela Classe, com seus atributos e comportamento.
Orientação a Objetos
def
Palavra-chave usada para criar métodos..
self
Dentro das funções de uma classe, 'self' é uma variável para a instancia/objeto que está sendo acessado.
cls
Dentro das funções de escopo de classe, 'cls' é uma variável para a Classe que está sendo acessada.
Orientação a Objetos
O conceito de uma Classe herdar atributos e métodos de outra classe.
O conceito que uma Classe pode ser composta por outras Classes.
O conceito que objetos de uma mesma hierarquia são tratados como se fossem do mesmo "tipo".
Orientação a Objetos
O conceito de que uma Classe pode ter atributos/métodos inacessíveis por outras Classes.
Atributo Publico
Afirma que um atributo Publico pode ser acessado por qualquer outra classe.
Atributo Privado
Afirma que um atributo Privado só pode ser acessado pela própria classe.
ORIENTAÇÃO A OBJETOS
class Pessoa(): def __init__(self, nome, idade): self.nome = nome self.idade = idade
def informacoes(self):
print "Nome: %s\nIdade: %s" % (
self.nome, self.idade
)
>>> p = Pessoa(nome="Joao", idade=20)
>>> p. informacoes()
Nome: Joao
idade: 20
Orientação a Objetos
Herança
class Pessoa(object):
def __init__(self, nome):
self.nome = nome
def falar(self):
print "%s diz: Ola!" % self.nome
class Crianca(Pessoa):
def __init__(self, nome, idade):
super(Crianca, self).__init__(nome)
self.idade = idade
def falar(self):
super(Crianca, self).falar()
print "Eu tenho %s anos." % self.idade
Orientação a Objetos
Composição/Agregação
class Pessoa(object):
def __init__(self, nome):
self.nome = nome
def falar(self):
print "%s diz: Ola!" % self.nome
class Carro(object):
def __init__(self, nome, dono):
self.nome = nome
self.dono = Pessoa(dono)
Orientação a Objetos
Encapsulamento
class Encapsulada(object):
def __init__(self, privado):
self._privado = privado
@property
def privado(self):
return self._privado
@privado.setter
def privado(self, value):
self._privado = value
Orientação a Objetos
Polimorfismo
class Animal(object):
def __init__(self, nome):
self.nome = nome
def falar(self):
raise NotImplementedError(
"Subclasses precisam implementar o metodo abstrato"
)
class Gato(Animal):
def falar(self):
return '%s: Meow! Meow!' % self.nome
class Cachorro(Animal):
def falar(self):
return '%s: Woof! Woof!' % self.nome
Orientação a Objetos
Projetinho
class ItemNaoEncontrado(Exception):
pass
class Lista(object):
def __init__(self, nome, itens=[]):
self.nome = nome
self.itens = itens
def incluir(self, item):
if type(item) in (list, tuple):
self.itens.extend(item)
else:
self.itens.append(item)
print self.itens
Orientação a Objetos
Projetinho
# Continuação #
def excluir(self, indice):
try:
del self.itens[indice]
print self.itens
except IndexError:
raise ItemNaoEncontrado(
"Indice invalido. Nenhum item encontrado."
)
def excluir_todos(self):
self.itens = []
print self.itens
@property
def qtd_itens(self):
return len(self.itens)
python orientado a objetos
By Luan Fonseca de Farias
python orientado a objetos
- 3,155