Baixe o app para aproveitar ainda mais
Prévia do material em texto
06/12/2021 19:28 Disciplina Portal https://estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D213C2740B0F19DC3C17D0E7D5F6153FE93CC57DDA5ED2325A36… 1/11 Programação RAD Aula 4: Fundamentos da linguagem de script orientada a objeto INTRODUÇÃO Você já deve ter ouvido que a orientação a objetos é um dos assuntos dos quais não há como fugir no aprendizado de qualquer linguagem de programação. Mas não é bem assim! Lembre-se de que existem linguagens com outros paradigmas, as quais nunca serão orientadas a objeto. 06/12/2021 19:28 Disciplina Portal https://estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D213C2740B0F19DC3C17D0E7D5F6153FE93CC57DDA5ED2325A36… 2/11 De fato, a maioria das linguagens bem conhecidas e muito usadas no mercado possui esse caráter. E Python é uma delas. Assim como outros aspectos da linguagem, criar e usar objetos é bem simples em Python. Porém, é muito importante que você retome os conhecimentos adquiridos da orientação a objetos de outras linguagens. Nesta aula, de�niremos alguns conceitos importantes, tais como herança, abstração, encapsulamento e polimor�smo. Vamos lá? OBJETIVOS Explicar o funcionamento da orientação a objetos em Python. Criar scripts com objetos nessa linguagem. Usar objetos em Python. 06/12/2021 19:28 Disciplina Portal https://estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D213C2740B0F19DC3C17D0E7D5F6153FE93CC57DDA5ED2325A36… 3/11 ORIENTAÇÃO A OBJETOS A orientação a objetos é um paradigma de programação (glossário) muito usado nos dias de hoje pelas principais linguagens. E Python está entre elas. É muito comum encontrar programadores que repetem código da internet sem nem saber o que estão fazendo ou a teoria que envolve o recurso usado. Por isso, conhecer os fundamentos das linguagens é extremamente importante para gerar códigos mais e�cazes e reutilizáveis. Antes de nos aprofundarmos nos códigos, vamos relembrar os pilares que sustentam a orientação a objetos. São eles: Vamos entendê-los: Herança Mecanismo mais relacionado com reuso de código dentro da orientação a objetos – uma grande vantagem desse tipo de paradigma. Exemplo Uma criança herda características de seus pais, estes herdam de seus avós, os avós dos bisavôs, e assim por diante. Na orientação a objetos, um objeto abaixo de uma hierarquia herda características de todos os objetos superiores a ele. Abstração O problema de qualquer engenheiro de software é transportar para o mundo computacional uma visão da realidade de acordo com o paradigma que escolheu para desenvolver o projeto. No caso da orientação a objetos, a abstração envolve três questões: 06/12/2021 19:28 Disciplina Portal https://estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D213C2740B0F19DC3C17D0E7D5F6153FE93CC57DDA5ED2325A36… 4/11 1. Todo objeto precisa ter uma identidade. 2. Todo objeto possui propriedades, ou seja, os elementos que o de�nem. 3. Todo objeto possui métodos ou ações que executa. Portanto, podemos abstrair elementos do mundo real e convertê-los em objetos para que sejam implementados em alguma linguagem orientada a objetos. Encapsulamento Pilar que esconder as propriedades de um objeto, tornando o programa mais seguro e deixando à mostra somente as ações que o objeto pode executar. Basicamente, quando usamos propriedades privadas relacionadas a métodos assessores (get e set), evitamos o acesso direto à propriedade do objeto, aumentando a segurança da aplicação. Exemplo Quando assistimos à TV, só nos preocupamos com o ato de ligar ou desligar o aparelho, o que ocorre internamente. Mas os circuitos envolvidos dentro da televisão não são de nosso conhecimento nem de nosso interesse. Polimor�smo Os objetos-�lhos herdam atributos e métodos de seus pais, mas, em algumas situações, é importante que ações para um mesmo método sejam diferentes. O polimor�smo ocorre quando existe uma alteração do funcionamento interno de um método herdado de um objeto-pai. Exemplo Vamos voltar a pensar no funcionamento da TV. O televisor pode ser um objeto que herda de uma classe chamada eletrodoméstico. Sabemos que todo eletrodoméstico pode ser ligado ou desligado, certo? Considerando dois objetos (uma TV e uma máquina de lavar roupa), ambos têm o método ligar e desligar, mas a forma como fazem isso é múltipla (polimor�smo). Os quatro pilares são fundamentais para entendermos o paradigma de orientação a objetos. Cada linguagem os implementa de forma diferente, mas, no geral, o resultado é o mesmo. Atenção 06/12/2021 19:28 Disciplina Portal https://estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D213C2740B0F19DC3C17D0E7D5F6153FE93CC57DDA5ED2325A36… 5/11 , Embora os conceitos não se alterem, existem detalhes especí�cos que envolvem a herança e o polimor�smo em algumas linguagens. FUNÇÕES EM PYTHON Na orientação a objetos, precisamos escrever métodos nas classes, os quais são bem semelhantes às funções e aos procedimentos da programação estruturada. Por isso, antes de começarmos a escrever programas orientados a objetos, precisamos aprender a escrever funções em Python. Vamos, então, mostrar uma função de�nida nessa linguagem: 1 def printme (str): 2 "Esta função vai imprimir: " 3 print str 4 return Você consegue descobrir para que serve? Re�ita sobre isso enquanto explicamos sua estrutura: 1. Toda função em Python começa com o comando def. 2. Depois do def, há o nome da função 3. Em seguida, aparece a lista de parâmetros, que pode estar vazia, mas os parênteses são obrigatórios. 4. Após essa lista, estão os dois pontos (“:”). 5. Observe que há uma indentação nas linhas 2, 3 e 4. Todo o código que estiver indentado fará parte do corpo da função. A indentação é muito importante na de�nição de funções. Portanto, cuidado ao digitar os blocos de comandos. 6. Toda função termina com o comando return, que pode ser seguido ou não de uma variável de retorno. A FUNÇÃO FOI DEFINIDA NO EXEMPLO ANTERIOR, MAS COMO EXECUTAR UMA DEFINIDA PELO USUÁRIO? Lembre-se de que já aprendemos a fazer isso: quando usamos o print() ou input(), estamos, na verdade, chamando funções prede�nidas na Python – também denominadas buit-in. Como exemplo, vamos usar o IDLE. Observe a �gura: 06/12/2021 19:28 Disciplina Portal https://estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D213C2740B0F19DC3C17D0E7D5F6153FE93CC57DDA5ED2325A36… 6/11 Como podemos perceber, aqui, chamar a função não é muito diferente do que em outras linguagens. Vamos tratar das funções novamente e com mais detalhes na aula 9. Como nosso objetivo atual é aprender a orientação a objetos, o que estudamos até o momento é su�ciente. Saiba Mais , Talvez, você tenha achado estranha a string do exemplo, mas sua história é bem interessante. Se quiser saber mais sobre o assunto, assista ao vídeo Edward Snowden on Passwords: last week tonight with John Oliver. (https://www.youtube.com/watch? v=yzGzB-yYKcc) CLASSES EM PYTHON Em Python, a criação de uma classe também é bem simples. Observe sua sintaxe: class Nome_da_classe: 'String de documentação da classe (Opcional) ' Corpo_da_classe Vamos analisar um exemplo: 1 class Empregado: 2 'Classe base para empregados' https://www.youtube.com/watch?v=yzGzB-yYKcc 06/12/2021 19:28 Disciplina Portal https://estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D213C2740B0F19DC3C17D0E7D5F6153FE93CC57DDA5ED2325A36… 7/11 3 contador = 0 4 5 def __init__ (self, nome, salario): 6 self.nome = nome 7 self.salario = salario 8 Empregado.contador += 1 9 10 def mostra_contador (self): 11 Print ("Número de empregados: %d" % Empregado.contador) 12 13 def mostra_empregado (self): 14 Print ("Nome: ", self.nome, ", Salário: ", self.salario) Esta é uma classe! Se você analisar seu código, perceberá que não é tão diferente de outras linguagens. No fundo, aestrutura é bem parecida com qualquer outra linguagem orientada a objetos. Para que a compreensão se torne mais fácil, vamos explicar a classe linha a linha: Linha 1 De�nição da classe e seu nome (Empregado). Não se esqueça de colocar os dois pontos (“:”) após essa nomenclatura. Linha 2 Breve descrição da classe. Observe que NÃO é um comentário, e sim uma string que faz parte da documentação da classe. Linha 3 Criação de uma variável de classe – chamada, aqui, de contador. A de�nição de variáveis é feita conforme as regras da linguagem. Lembre-se de que variável de classe é diferente de variável de instância. Linha 4 Atividades de controle gerencial. Impacto por mudanças gerenciais. 06/12/2021 19:28 Disciplina Portal https://estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D213C2740B0F19DC3C17D0E7D5F6153FE93CC57DDA5ED2325A36… 8/11 EXERCÍCIO Agora, que você já aprendeu sobre as classes em Python, crie uma classe em que represente um ponto cartesiano com coordenadas X e Y. As coordenadas devem fazer parte do construtor. Elabore uma frase para representar e documentar a classe. Resposta Correta OBJETOS EM PYTHON Agora que já criamos as classes, é o momento de instanciar os objetos. Vamos usar como base a classe Empregado: >>> emp1 = Empregado("Fabiano",1000) >>> emp2 = Empregado("João Neves", 1500) Aqui, não precisamos declarar o objeto antes e, depois, instanciá-lo com “new” ou outro comando, como em outras linguagens. Em Python, realizamos o processo de forma direta. Como criamos um construtor para a classe, ele é invocado quando criamos objetos da classe referenciada. Observe que não passamos o self como parâmetro, e sim o nome e o salário na mesma ordem em que são de�nidos na assinatura do método construtor. EXERCÍCIO Vamos retomar o exercício anterior. Você se lembra da classe que criou para representar um ponto cartesiano? Agora, adicione mais dois pontos. Linhas de 5 a 8 De�nição do método construtor. Observe seu nome especí�co: “__init__()”. Quando a Python encontra esse método, trata-o como construtor da classe. Dentro dele, de�nimos as variáveis de instância da classe. Linhas de 10 a 13 Os outros métodos da classe são criados como funções normais, com exceção de que o primeiro argumento para cada método é o self. A Python coloca o self na lista para você, mas ele não precisa ser referenciado quando for chamar os métodos. 06/12/2021 19:28 Disciplina Portal https://estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D213C2740B0F19DC3C17D0E7D5F6153FE93CC57DDA5ED2325A36… 9/11 p ➜ com coordenadas 2 e 3; q ➜ com coordenadas 3 e 2. Resposta Correta Agora, vamos analisar mais um exemplo: Vamos, então, acessar os elementos da classe >>> emp1.mostra_empregado() Nome : Fabiano , Salário: 1000 >>> emp2.mostra_empregado() Nome : João Neves , Salário: 1500 Podemos até incluir, remover ou modi�car os atributos de classe e de objetos a qualquer momento >>> emp1.idade = 44 Note que criamos uma nova variável de instância na classe Empregado >>> print("Nome: ",emp1.nome," - Salário: ",emp1.salario," - Idade: ",emp1.idade) Nome: Fabiano - Salário: 1000 - Idade: 44 Já para o objeto emp2, temos... >>> print("Nome: ",emp2.nome," - Salario:",emp2.salario," - Idade:",emp2.idade) Traceback (most recent call last): File "", line 1, in print("Nome: ",emp2.nome," - Salario:",emp2.salario," - Idade:",emp2.idade) AttributeError: 'Empregado' object has no attribute 'idade' EXERCÍCIO No caso do emp2 há um erro. Você conseguiu perceber? Identi�que-o e explique como podemos corrigi-lo. 06/12/2021 19:28 Disciplina Portal https://estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D213C2740B0F19DC3C17D0E7D5F6153FE93CC57DDA5ED2325A3… 10/11 Resposta Correta Em vez de usar as instruções normais para acessar atributos, você também pode aplicar as seguintes funções: getattr (objeto, nome [, default]) Para acessar o atributo do objeto hasattr (objeto, nome) Para veri�car se existe um atributo ou não setattr (objeto, nome, valor) Para de�nir um atributo (se não existe, será criado) delattr (objeto, nome) Para excluir um atributo Atenção , Assim como sugerimos nas aulas anteriores, refaça os exemplos apresentados aqui. Execute, erre, descubra seus erros e tente corrigi-los. Praticar é essencial no aprendizado de uma nova linguagem de programação. EXERCÍCIO Para �nalizarmos esta aula, vamos praticar com mais um exercício. Crie um método para retornar o valor da coordenada X e outro para retornar o valor da coordenada Y. Resposta Correta 06/12/2021 19:28 Disciplina Portal https://estacio.webaula.com.br/Classroom/index.asp?191C757E76=484D213C2740B0F19DC3C17D0E7D5F6153FE93CC57DDA5ED2325A3… 11/11 Glossário PARADIGMA DE PROGRAMAÇÃO “[Aquele que] fornece e determina a visão que o programador possui sobre a estruturação e execução do programa.” Disponível em: https://goo.gl/wA4raQ (https://goo.gl/wA4raQ). Acesso em: 16 out. 2017. VARIÁVEL DE CLASSE Membro de uma classe. Atributo que está presente na própria classe e que é compartilhado por todos os seus objetos. VARIÁVEL DE INSTÂNCIA Membro de uma classe. Variável que cada objeto carrega consigo durante sua existência, cujos valores podem ser modi�cados. https://goo.gl/wA4raQ
Compartilhar