Você está na página 1de 28

Centro Universitário Cidade Verde

Engenharia de Software e Análise e Desenvolvimento de Sistemas


Programação Orientada a Objetos

Programação Orientada a Objetos


Classes, atributos, métodos e instâncias de objetos

prof_leandrosilva@unicv.edu.br
INTRODUÇÃO

Programação Orientada a Objetos 2


Introdução

• Paradigma Procedural é um paradigma clássico


• Dados são globais, e as ações são executadas em sequência

Programação Orientada a Objetos 3


Introdução

• Programação Orientada a Objetos é um paradigma de programação


• Baseado no conceito de objetos

Programação Orientada a Objetos 4


Introdução

• Programação Orientada a Objetos é um paradigma de programação


• Baseado no conceito de objetos

• Um objeto é uma instância de uma classe


• Classe é pode ser vista como um modelo para um objeto

• Uma classe é composta por:


• Atributos: dados (ou estados)
• Métodos: funções (ou operações)

Programação Orientada a Objetos 5


Disponível em https://www.linkedin.com/pulse/programa%C3%A7%C3%A3o-orientada-objetos-diego-rocha/?originalSubdomain=pt

Programação Orientada a Objetos 6


Introdução

• Abstração consiste em mapear um objeto do mundo real de forma lógica


• A representação lógica é feita por meio de uma classe

• Um objeto (mundo real) é abstraído para uma classe (representação lógica):


• Atributos: propriedades (estados) que os objetos de uma classe deve possuir
• Métodos: ações (comportamentos) que os objetos de uma classe pode executar

Programação Orientada a Objetos 7


Introdução

• Encapsulamento é uma forma de proteger o acesso aos atributos da classe


• Modificador de acesso private para os atributos
• Métodos getters e setters com o modificador de acesso public

• Em Python, não existem modificadores de acesso como em Java


• No entanto, existem convenções para declarar atributos e métodos privados

Programação Orientada a Objetos 8


Introdução

Programação Orientada a Objetos 9


Introdução

• Herança é uma forma de reaproveitar código entre as classes


• Superclasse descreve um modelo padrão (genérico)
• Subclasses estender e podem customizar seus comportamentos (específico)

• Herança é o principal pilar para o reúso de código da Orientação a Objetos


• Em Python, fazendo na declaração da classe

• Em Python, uma classe pode estender várias classes diretamente!


• Conceito de Herança Múltipla

Programação Orientada a Objetos 10


Introdução

Programação Orientada a Objetos 11


Introdução

• Abstração e Polimorfismo são pilares relacionados com o reúso


• Abstração é aplicada a nível de classe e método
• Polimorfismo está relacionado ao tipo e sua instância

• Abstração e Polimorfismo estão relacionadas com a herança


• Superclasses possuem comportamentos abstratos
• Subclasses possuem comportamentos específicos

Programação Orientada a Objetos 12


CLASSES E OBJETOS

Programação Orientada a Objetos 13


Classes e Objetos

• Em orientação a objetos, “qualquer coisa” é considerada um objeto


• Objetos são instâncias de classes

• Os objetos se comunicam por meio de mensagens


• Métodos (descritos na classe) fazem os objetos transmitirem mensagens

• Python oferece suporte ao Paradigma de Orientação a Objetos


• Padrão camel case para classes. Ex: Carro, AlunoGraducao, etc.
• Padrão snake case para atributos e métodos. Ex: nome_completo, get_nome, etc.
• Uso da palavra self para representar a própria instância

Programação Orientada a Objetos 14


Classes e Objetos

• Em orientação a objetos, “qualquer coisa” é considerada um objeto


• Objetos são instâncias de classes
• Métodos (descritos na classe) fazem os objetos transmitirem mensagens

Programação Orientada a Objetos 15


Classes e Objetos

• Em orientação a objetos, “qualquer coisa” é considerada um objeto


• Objetos são instâncias de classes

Programação Orientada a Objetos 16


Classes e Objetos

• Python é uma linguagem que suporta o paradigma de orientação a objetos


• Portanto, é possível declarar classes e instanciar objetos

Programação Orientada a Objetos 17


Classes e Objetos

• Linha 1: declaração da classe Conta


• Linhas 3 a 6: declaração dos atributos
codigo (int), nome (str) e saldo (double)
da classe Conta com o método
construtor
• Linhas 8 e 9: declaração do método
extrato da classe Conta
• Linhas 11 a 15: declaração do método
sacar da classe Conta
• Linhas 17 a 21: declaração do método
depositar da classe Conta

Programação Orientada a Objetos 18


Classes e Objetos

• Linha 1: instanciação de um objeto da


classe Conta para a variável conta_1

• Linha 2: chamada do método extrato


da conta_1

• Linha 3: chamada do método depositar


com o valor 500,00 para conta_1

• Linha 5 e 6: chamada do método sacar


com os valores 1000,00 e 300,00

Programação Orientada a Objetos 19


Classes e Objetos
• O método construtor é responsável por definir como é possível instanciar
um objeto da classe

• Método construtor SEMPRE possui o nome __init__

• Em Python, só é reconhecido um construtor por classe

Programação Orientada a Objetos 20


Classes e Objetos

• Em Python, só é reconhecido um construtor por classe

Programação Orientada a Objetos 21


EXERCÍCIO

Programação Orientada a Objetos 22


Exercício

• Descreva uma classe que represente um produto de um mercado


• Qual(is) seria(m) o(s) atributo(s)?
• Como seria(m) o(s) método(s) construtor(es)?
• Qual(is) seria(m) o(s) método(s)?

• Após a criação da classe, instancie alguns objetos:


• Armaze em variáveis individuais
• Armaze em uma array

Programação Orientada a Objetos 23


RESUMO

Programação Orientada a Objetos 24


Resumo

• Programação Orientada a Objetos (POO) é um paradigma


• Linguagem Java é uma linguagem exclusiva para POO

• POO é fundamentada em quatro pilares:


• Abstração
• Herança
• Polimorfismo
• Encapsulamento

Programação Orientada a Objetos 25


Disponível em https://www.linkedin.com/pulse/programa%C3%A7%C3%A3o-orientada-objetos-diego-rocha/?originalSubdomain=pt

Programação Orientada a Objetos 26


Resumo

• Em orientação a objetos, “qualquer coisa” é considerada um objeto


• Objetos são instâncias de classes

Programação Orientada a Objetos 27


Muito Obrigado!

prof_leandrosilva@unicv.edu.br

Programação Orientada a Objetos 28

Você também pode gostar