Programação Orientada a Objetos em Python

Documentos relacionados
Introdução a Programação Orientada a Objetos

Laboratório de programação II

Programação Orientada a Objetos

Introdução ao Java. Prof. Herbert Rausch Fernandes

Programação Orientada a Objetos

Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos)

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Conceitos de Orientação a Objetos

Aula 15 Modelagem de Classes de Análise. Análise de Sistemas Prof. Filipe Arantes Fernandes

Daniel Wildt

Linguagem de Programação I Apresentação da Disciplina

O PARADIGMA ORIENTADO POR OBJETOS

Informática. Professor: Diego Oliveira. Conteúdo 04: Orientação a Objetos

Desenvolvimento de Aplicações Desktop

Introdução à Programação. Conceitos Básicos de Orientação a Objetos

Orientação a Objetos (OO)

Conceitos de Programação Orientada a Objetos

Conceitos de Programação Orientada a Objetos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objetos

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Princípios de Análise e Projeto Orientados a Objetos com UML

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Programação Java (nível intermediário) 4. Polimorfismo

Introdução à Orientação a Objetos. SSC Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

Orientação a Objetos (OO) LPG II - Java. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Introdução à orientação a objetos. João Tito Almeida Vianna 18/05/2013

Curso teórico: Orientação a Objetos. Matemática computacional Marcos Aurelio Wozhiak Jr webzhiak.com.br

Linguagem de Programação III

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

Introdução. Programação Orientada a Objetos (POO) João Paulo Q. dos Santos

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Programação Orientada a Objetos JAVA - NETBEANS

AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos

Programação Orientada a Objetos

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Programação Estruturada Orientada a Objetos

Introdução à Programação. Encapsulamento e Herança

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. JAVA6 e Programação Orientada Pelos Objectos, F. Mário Martins, FCA, Julho de 2009.

Desenvolvimento Web II

Programação Orientada a Objetos

Programação Orientada a Objetos. Prof. MsC Sílvio Bacalá Júnior

Orientação a Objetos (OO) Java Avançado Revisão do Paradigma de. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Estrutura de Dados Funções e Procedimentos

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Modelo do Mundo Real. Abstração. Interpretação

LINGUAGEM DE PROGRAMAÇÃO

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

COMPORTAMENTOS - Observações

Programação procedimental

POO e C++: Herança e Polimorfismo

C com introdução a OO

Fundamentos de Programação em Python

A modelagem é tida como a parte central de todas as atividades para a construção de um bom sistema, com ela podemos:

Introdução a Orientação a Objetos e UML

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Classe Abstrata e Interface

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.

Orientação a objetos Disciplina: Linguagens de Programação. Prof. Alexandre Cassimiro Andreani

Programação Orientada a Objetos

Modelagem Orientada a Objeto

Orientação a objetos. Objetos ou Instâncias I

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO

Programação Orientada a Objetos

POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos

MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE)

SEMINÁRIOS INTEGRADOS EM SISTEMAS DE INFORMAÇÃO. Luiz Leão

Orientação a Objetos e UML

Desenvolvimento Web TCC Turma A-1

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira

Análise de Sistemas. Visão Geral - Orientação a Objetos. Prof. José Honorato Ferreira Nunes

Programação Orientada a Objetos. Professor Leonardo Cabral - Larback

2. Introdução à Programação e Análise. Orientada a Objetos. Programação Orientada a Objetos em C O que é a Programação Orientada a Objetos?

1 Introdução e Conceitos básicos

Transcrição:

Programação Orientada a Objetos em Python Diego Silveira Costa Nascimento Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte diego.nascimento@ifrn.edu.br 23 de junho de 2017

Ementa do Curso 1 Introdução 2 Abstração 3 Encapsulamento 4 Herança 5 Polimorfismo Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 2 / 30

Ementa do Curso 1 Introdução 2 Abstração 3 Encapsulamento 4 Herança 5 Polimorfismo Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 3 / 30

Motivações O desenvolvimento de aplicações de software estão cada vez mais complexas; Cresceram as demandas por metodologias que pudessem abstrair e modularizar as estruturas básicas de programas; e A maioria das linguagens de programação suportam orientação a objetos: Haskell, Java, C++, Python, PHP, Ruby, Pascal, entre outras. Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 4 / 30

História Em 1967, Kristen Nygaard e Ole-Johan Dahl, do Centro Norueguês de Computação em Oslo, desenvolveram a linguagem Simula 67 que introduzia os primeiros conceitos de orientação a objetos; Em 1970, Alan Kay, Dan Ingalls e Adele Goldberg, do Centro de Pesquisa da Xerox, desenvolveram a linguagem totalmente orientada a objetos; Em 1979 1983, Bjarne Stroustrup, no laboratório da AT & T, desenvolveu a linguagem de programação C++, uma evolução da linguagem C; e Maior divulgação a partir de 1986 no primeiro workshop Object-Oriented Programming Languages, Systems and Applications. Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 5 / 30

Principais Vantagens Aumento de produtividade; Reúso de código; Redução das linhas de código programadas; Separação de responsabilidades; Componentização; Maior flexibilidade do sistema; e Facilidade na manutenção. Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 6 / 30

Objetos É a metáfora para se compreender a tecnologia orientada a objetos; Estamos rodeados por objetos: mesa, carro, livro, pessoa, etc; e Os objetos do mundo real têm duas características em comum: Estado representa as propriedades (nome, peso, altura, cor, etc.); e Comportamento representa ações (andar, falar, calcular, etc.). Ilustações Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 7 / 30

Orientação a Objetos Definição É um paradigma para o desenvolvimento de software que basea-se na utilização de componentes individuais (objetos) que colaboram para construir sistemas mais complexos. A colaboração entre os objetos é feita através do envio de mensagens; Descreve uma série de técnicas para estruturar soluções para problemas computacionais; e É um paradigma de programação no qual um programa é estruturado em objetos. Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 8 / 30

Os Quatros Pilares 1 Abstração; 2 Encapsulamento; 3 Herança; e 4 Polimorfismo. Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 9 / 30

Ementa do Curso 1 Introdução 2 Abstração 3 Encapsulamento 4 Herança 5 Polimorfismo Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 10 / 30

Classes A estrutura fundamental para definir novos objetos é a classe; e Uma classe é definida em código-fonte. Ilustração Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 11 / 30

Classe em Python Estrutura class nome_da_classe: atributos construtor métodos Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 12 / 30

Demonstração de Classe Exemplo class Conta : numero = None saldo = None Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 13 / 30

Instância Uma instância é um objeto criado com base em uma classe definida; Classe é apenas uma estrutura, que especifica objetos, mas que não pode ser utilizada diretamente; Instância representa o objeto concretizado a partir de uma classe; Uma instância possui um ciclo de vida: Criada; Manipulada; e Destruída. Estrutura variável = Classe() Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 14 / 30

Demonstração de Instância Exemplo conta = Conta () conta. numero = 1 conta. saldo = 10 print ( conta. numero ) print ( conta. saldo ) Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 15 / 30

Construtor Determina que ações devem ser executadas quando da criação de um objeto; e Pode possuir ou não parâmetros. Estrutura def init (self,parâmetros): Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 16 / 30

Demonstração de Construtor Exemplo class Conta : def init (self, numero ): self. numero = numero self. saldo = 0.0 conta = Conta (1) print ( conta. numero ) print ( conta. saldo ) Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 17 / 30

Métodos Representam os comportamentos de uma classe; Premitem que acessemos os atributos, tanto para recuperar os valores, como para alterá-los caso necessário; Podem retornam ou não algum valor; e Podem possuir ou não parâmetros. Estrutura def nome_do_método(self,parâmetros): Importante O parâmetro self é obrigatório. Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 18 / 30

Demonstração de Métodos Exemplo class Conta : def init (self, numero ): self. numero = numero self. saldo = 0.0 def consultar_saldo ( self ): return self. saldo def creditar (self, valor ): self. saldo += valor def debitar (self, valor ): self. saldo -= valor def transferir (self,conta, valor ): self. saldo -= valor conta. saldo += valor conta1 = Conta (1) conta1. creditar (10) conta2 = Conta (2) conta2. creditar (5) print ( conta1. consultar_saldo ()) print ( conta2. consultar_saldo ()) conta1. transferir ( conta2,5) print ( conta1. consultar_saldo ()) print ( conta2. consultar_saldo ()) Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 19 / 30

Ementa do Curso 1 Introdução 2 Abstração 3 Encapsulamento 4 Herança 5 Polimorfismo Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 20 / 30

Encapsulamento Consiste em separar os aspectos externos de um objeto dos detalhes internos de implementação; Evita que dados específicos de uma aplicação possa ser acessado diretamente; e Protege os atributos ou métodos de uma classe. Ilustração Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 21 / 30

Modificadores de Acesso Em Python, existem dois tipos de modificadores de acesso para atributos e métodos: Público; ou Privado. Atributos ou métodos iniciados por dois sublinhados são privados e todas as outras formas são públicas. Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 22 / 30

Demonstração de Encapsulamento Exemplo class Conta : def init (self, numero ): self. numero = numero self. saldo = 0.0 def consultar_saldo ( self ): return self. saldo def creditar (self, valor ): self. saldo += valor def debitar (self, valor ): self. saldo -= valor def transferir (self, conta, valor ): self. saldo -= valor conta. saldo += valor conta = Conta (1) conta. creditar (100) conta. saldo = 200.0 #Não é poss í vel alterar o saldo da conta print ( conta. consultar_saldo ()) Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 23 / 30

Ementa do Curso 1 Introdução 2 Abstração 3 Encapsulamento 4 Herança 5 Polimorfismo Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 24 / 30

Herança É uma forma de abstração utilizada na orientação a objetos; Pode ser vista como um nível de abstração acima da encontrada entre classes e objetos; Na herança, classes semelhantes são agrupadas em hierarquias; Cada nível de uma hierarquia pode ser visto como um nível de abstração; Cada classe em um nível da hierarquia herda as características das classes nos níveis acima; É uma forma simples de promover reuso através de uma generalização; Facilita o compartilhamento de comportamento comum entre um conjunto de classes semelhantes; e As diferenças ou variações de uma classe em particular podem ser organizadas de forma mais clara. Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 25 / 30

Herança Estrutura class nome_da_classe(classe_pai_1, classe_pai_2, classe_pai_n): atributos métodos Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 26 / 30

Demonstração de Herança Exemplo class Poupanca ( Conta ): def init (self, numero ): super (). init ( numero ) self. rendimento = 0.0 def consultar_rendimento ( self ): return self. rendimento def gerar_rendimento (self, taxa ): self. rendimento += super (). consultar_saldo () * taxa / 100 conta = Poupanca (1) conta. creditar (200.0) conta. gerar_rendimento (10) print ( conta. consultar_saldo ()) print ( conta. consultar_rendimento ()) Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 27 / 30

Ementa do Curso 1 Introdução 2 Abstração 3 Encapsulamento 4 Herança 5 Polimorfismo Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 28 / 30

Polimorfismo É originário do grego e significa muitas formas (poli = muitas, morphos = formas); Indica a capacidade de abstrair várias implementações diferentes em uma única interface; É o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação (assinatura) mas comportamentos distintos; e Quando polimorfismo está sendo utilizado, o comportamento que será adotado por um método só será definido durante a execução. Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 29 / 30

Demonstração de Polimorfismo Exemplo class Poupanca ( Conta ): def init (self, numero ): super (). init ( numero ) self. rendimento = 0.0 def consultar_rendimento ( self ): return self. rendimento def gerar_rendimento (self, taxa ): self. rendimento += super (). consultar_saldo () * taxa / 100 def consultar_saldo ( self ): return super (). consultar_saldo () + self. rendimento conta = Poupanca (1) conta. creditar (200.0) conta. gerar_rendimento (5) print ( conta. consultar_saldo ()) Diego S. C. Nascimento (IFRN) Programação Orientada a Objetos 23 de junho de 2017 30 / 30