Você está na página 1de 5

CURSO: Tcnico em Informtica para WEB

DISCIPLINA: Lgica de Programao - CARGA HORRIA: 60 h/a


PROFESSOR REGENTE: Jeanne de Souza Silva Leite
COORDENADOR: Ricardo Martins Ramos
Tutor Distncia: Maria Elinete de Carvalho Campos
Tutor Presencial: Valdineide Araujo Campos
Aluno: Joo Batista Fontes Soares

ATIVIDADE DE CASA IX - 28.06.2014 a 05.07.2014 (AULA IX)


Nossos programas at agora foram feitos utilizando o paradigma procedural, com
funes ou comandos que manipulam dados. No Python podemos implementar o
paradigma orientado a objetos, que outra maneira de construir o programa
combinando dados e funes em objetos. Na programao orientada a objetos temos
as classes e objetos como seus elementos bsicos. Uma classe define um novo tipo
onde objetos so do tipo da classe (instncias).
Por Exemplo:

No exemplo acima, Pessoa uma classe e pessoa1 um objeto desta classe. Uma
classe armazena dados em variveis chamadas de atributos, no exemplo, nome e
CPF so atributos da classe Pessoa. Alm disso, as funes definidas dentro de uma
classe so chamadas de mtodos da classe, no exemplo, getNome() e getCPF() so
mtodos da classe Pessoa. A nica diferena de um mtodo das funes normais
que devem ter a palavra-chave self adicionada ao incio da lista de parmetros, mas
no devemos atribuir valor nenhum a este parmetro quando chamar o mtodo,
Python far isto implicitamente. Esta varivel especial uma referencia ao prprio
objeto e por conveno chamada self.
comum em uma classe definir um mtodo especial chamado construtor, ele serve
para inicializar o objeto com os valores dos dados(atributos) passados por paramento,
no Python, o mtodo construtor definido como _init_.
A palavra-chave class utilizada para definir classes. Os atributos e mtodos da
classe so listados dentro do bloco de comandos de class seguindo a indentao do
bloco.

Pesquise um pouco mais sobre Orientao a Objetos em Python e:


1- (5 pontos) Faa um resumo sobre este assunto.
O texto a seguir foi transcrito da comunidade Python Brasil, consideramos sua
totalidade pois no h como resumir sem perdas de compreenso.

1. Introduo
Este pequeno manual traduzido de Estrutura de Dados e Algoritmos com Padres de Projetos
Orientado a Objeto em Python de Bruno R. Preiss identifica e descreve as caractersticas da
linguagem de programao Python.

2. Objetos e Tipos de dados


Um objeto em linguagem de programao abstrata representa a posio onde ser armazenada. Os
objetos em Python apresentam os seguintes atributos:
* Tipo: O tipo de um objeto determina os valores que o objeto pode receber e as operaes que
podem ser executadas nesse objeto.
* Valor: O valor de um objeto o ndice de memria ocupada por essa varivel. Como os ndices
das posies da memria so interpretados, isto determinado pelo tipo da varivel.
* Tempo de vida: A vida de um objeto o intervalo de tempo de execuo de um programa em
Python, durante este tempo que o objeto existe.
Python define uma extensa hierarquia de tipos. Esta hierarquia inclui os tipos numricos (tais como
int, float e complex), seqncias (tais como a tupla e a lista), funes (tipo funo), classes e
mtodos (tipos classobj e instancemethod), e as instncias da classe (tipo instance).

3. Nomes
A fim de utilizar um objeto em um programa em Python, esse objeto deve ter um nome. O nome de
um objeto uma varivel usada para identificar esse objeto em um programa. Em Python, um
objeto no pode ter zero, um ou mais no nome.
Veja:
Esconder nmero das linhas
1 i = 57

Esta indicao cra um objeto com nome i e liga vrios atributos com esse objeto. O tipo do objeto
int e seu valor 57.
Alguns atributos de um objeto, tal como seu tipo, so limitados quando o objeto criado e no
podem serer mudados. Isto chamado ligao esttica.
As ligaes para outros atributos de um objeto, tais como seu valor, podem ser mudados durante a
execuo do programa onde o objeto est. Isto chamado de ligao dinmica.
Veja:

Esconder nmero das linhas


1 i = int(57)

Se ns seguirmos esta indicao com uma indicao de atribuio como:


Esconder nmero das linhas
1 j = i

ento os nomes i e j so o mesmo objeto!


A comparao ficaria:
Esconder nmero das linhas
1 if i == j:
2
print "valores iguais"

este o teste se o valor do objeto i o mesmo valor do objeto j (desde que sejam de mesmo valor).
Entretanto, possvel para dois objetos distintos terem o mesmo valor. Para testar se os dois nomes
so um mesmo objeto, necessrio utilizar o operador is:
Esconder nmero das linhas
1 if i is j:
2
print "mesmo objeto"

Para saber se os tipos de dados de dois objetos so iguais necessrio:


Esconder nmero das linhas
1 i = 57
2 j = 47
3 if type(i) == type(j):
4
print "mesmo tipo"

3.1. Objeto None


Em Python, um nome sempre ser um objeto. Entretanto, s vezes conveniente usar um nome
chamado None ou nulo. Python fornece um tipo especial de objeto para esta finalidade chamada
NoneType. Sempre h somente um objeto do tipo NoneType e o nome desse objeto None.
Ns podemos explicitamente atribuir um nome ao None
Esconder nmero das linhas
1 f = None

Tambm, ns podemos testar explicitamente se um nome None como:


Esconder nmero das linhas
1 if f is None:
2
print " nulo"

3.2. Espao de um nome e Namespaces


O espao de um nome a escala das indicaes no texto de um programa em que esse nome pode
ser usado referenciado a um objeto. Python define trs espaos -- locais, globais, e built-in (internos
do Python). Os espaos so chamados namespaces. Quando um nome referenciado a um objeto
em um programa os namespaces sero procurados na seguinte ordem para encontrar a ligao para
esse nome: namespace local primeiramente, ento namespace global, e depois namespace interno.
Isto chamado de regra de LGB.

Quando uma funo chamada, um novo namespace local est criado. Por padro, as ligaes
conhecidas criadas dentro de uma funo so criados no namespace local dessa funo. As ligaes
conhecidas criadas no nvel mais alto de um mdulo (ou de um arquivo) so criados no namespace
global. O namespace interno contem as ligaes para os nomes predefinidos do Python.

4. Passagem de Parmetros
A passagem de parmetro um mtodo em que os parmetros so transferidos entre mtodos
quando um mtodo chama outro. Python fornece somente um mtodo da passagem de parmetro,
passagem-por-referncia.
Considere o par de mtodos definidos abaixo. Na linha 4, o mtodo um chama o mtodo dois. Em
geral, cada chamada do mtodo inclui a lista de argumentos, possivelmente vazio. Os argumentos
especificados em uma chamada do mtodo so chamados parmetros reais. Neste caso, h somente
um parmetro real, o x.
Esconder nmero das linhas
1 def um():
2
x = 1
3
print x
4
dois(x)
5
print x
6
7 def dois(y):
8
print y
9
y = 2
10
print y

Na linha 7 o mtodo dois definido como um mtodo que aceita um nico argumento y. Os
argumentos que aparecem na definio do mtodo so chamados parmetros formais.
A semntica da passagem-por-referncia : O efeito da definio do parmetro formal deve criar um
nome no namespace local da funo e lig-lo ento o nome ao objeto pelo parmetro real. Por
exemplo, no mtodo dois o parmetro formal y. Quando o mtodo chamado, o nome y est
atribudo ao objeto x.
A sada do mtodo um ficar:
1121
E a sada do mtodo dois com o parmetro 3 ficar:
23

5. Classes
Uma classe define uma estrutura de dados que contenha instncia de atributos, instncia de mtodos
e classes aninhadas. Em Python a classe de um objeto e o tipo de um objeto so sinnimos. Cada
objeto do Python tem uma classe (tipo) que derivada diretamente ou indiretamente da classe
interna do objeto do Python. A classe (tipo) de um objeto determina o que e como pode ser
manipulado. Uma classe encapsula dados, operaes e semntica.
A classe o que faz com que Python seja uma linguagem de programao orientada a objetos.
Classe definida como um agrupamento de valores sua gama de operaes. As classes facilitam a
modularidade e abstrao de complexidade. O usurio de uma classe manipula objetos instanciados
dessa classe somente com os mtodos fornecidos por essa classe.

Frequentemente classes diferentes possuem caractersticas comuns. As classes diferentes podem


compartilhar valores comuns e podem executar as mesmas operaes. Em Python tais
relacionamentos so expressados usando derivao e herana.
2- (5 pontos) Construa a classe Aluno, que possui os atributos nome e nota.
Crie(instancie) um objeto aluno1 do tipo Aluno e exiba seus dados (atributos).