Programação Orientada a Objetos Python

Embed Size (px)

Citation preview

  • 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/