Você está na página 1de 44

Programação Orientada a Objetos

Professor Raimundo Osvaldo


Departamento de Computação
IFMA/ Campus São Luís – Monte Castelo
Aula 02 OBJETIVOS
1. Caracterizar o paradigma de
Introdução à Programação programação orientado a
objetos e diferenciá-lo do
Orientada a Objetos paradigma estruturado;
2. Conceituar classes e objetos;
Paradigmas de Programação 3. Listar e Conceituar os
Conceitos Básicos em POO princípios da Programação
Orientada a Objetos
Referências
KEOGH, Jim; GIANNINI, Mario. OOP Desmistificado: Programação
Orientada a Objetos. Rio de Janeiro: Alta Books, 2005
SANTOS, Rafael. Introdução à Programação Orientada a Objetos
usando Java. São Paulo: Elsevier, 2008
CARVALHO, Thiago Leite e. Orientação a Objetos: Aprenda seus
Conceitos e suas Aplicabilidades de Forma Efetiva. São Paulo: Casa
do Código, 2017
K19. K – 11: Orientação a Objetos em Java, 2012.
O que é um
Paradigma?
Paradigma
Paradigma: Conjunto de regras que
estabelecem fronteiras e descrevem como resolver
os problemas dentro destas fronteiras

Os paradigmas influenciam nossa percepção;


ajudam-nos a organizar e a coordenar a maneira como
olhamos para o mundo
Paradigmas de Programação
Na Ciência da Computação, os paradigmas explicam:
1. como os elementos que compõem um programa são
organizados e
2. como interagem entre si

Um paradigma de programação determina a


visão que o programador possui sobre a estruturação e
execução de um programa.
Paradigmas de Programação
Programação Estruturada
Todos os programas possíveis podem ser reduzidos a
apenas três estruturas

SEQUÊNCIA DECISÃO ITERAÇÃO

Arranjo sequencial Escolha de uma ou Processo de


de comandos de algumas entres repetição de uma
programação muitas alternativas ou mais ações
Paradigmas de Programação
Programação Estruturada

Orienta os
programadores para a
criação de estruturas
simples em seus
programas, usando as
Sub-rotinas e as Funções
Paradigmas de Programação
Programação Estruturada
Exemplo: consideremos um sistema bancário com os seguintes
requisitos funcionais
I. Manter o cliente (inserir cliente, remover cliente, selecionar cliente e
atualizar cliente)
II. Manter conta (abrir conta, fechar conta, alterar conta, pesquisar
conta e remover conta)
III. Movimentar caixa (sacar, depositar e transferir)
IV. Registrar movimento (gerar histórico)
V. Emitir relatórios contábeis
Paradigmas de Programação
Programação Estruturada
Cada requisito é mapeado em um programa, que deve ser
executado por um programa principal

Clientes Contas Caixa


inserir() abrir() sacar()
atualizar() fechar() depositar()
remover() alterar() transferir()

Principal
main()
Paradigmas de Programação
Programação Estruturada
Cada programa (inclusive o principal) tem um conjunto de
variáveis específicas para suas necessidades

Variáveis Locais

Clientes Contas
cpf, nome... numero, saldo...
inserir() abrir()
atualizar() fechar()
remover() alterar()
Paradigmas de Programação
Programação Estruturada
Cada variável que precisar ser compartilhada como outros
programas deve ser criada como global

DADOS
Parâmetros passados por valor

Bloco de Bloco de Bloco de

...
Código Código Código
_________ _________ _________
_________ _________ _________
Paradigmas de Programação
Programação Estruturada

Decomposição gradativa dos programas ao nível fundamental (Refinamentos


Sucessivos, Desenvolvimento top-down)

Programação Orientada a Procedimentos: subprogramas – Comunicação por


meio de variáveis globais ou passagem de dados através de parâmetros.

Tipo Abstrato de Dados =


Modelo Matemático + Operações
Paradigmas de Programação
Programação Estruturada
 Pequena reutilização;
 Alto índice de redundância;
 Alto acoplamento.

No modelo estruturado ficamos limitados a identificar os


programas necessários e, no máximo, a criar funções que possam
ser reutilizadas em outros programas.
Paradigmas de Programação
Programação Orientada a Objetos
É baseada na interação entre diversas unidades de software
chamadas de objetos

Implementa-se um conjunto de classes que definem os objetos


presentes no sistema de software

Cada classe determina o comportamento e estados possíveis de


seus objetos, assim como o relacionamento com outros objetos
Paradigmas de Programação
Programação Orientada a Objetos
A POO é o paradigma de programação que
tenta aproximar o código fonte da realidade
No mundo real o que existe são objetos

Objeto
Pessoa
Atributos (dados)
nome, altura, peso
Comportamentos (métodos)
sentar-se, caminhar, correr
Paradigmas de Programação
Programação Orientada a Objetos

Carro Livro
placa titulo
modelo Autor
capacidadeDoTanque isbn
abastecer numeroDePaginas
dirigir emprestar
parar devolver
Paradigmas de Programação
Programação Orientada a Objetos
Paradigmas de Programação
Programação Orientada a Objetos
É baseada num conjunto de abstrações de classes e objetos e
empacota dados e operações em um mesmo elemento

Responsabilidade
Cada objeto tem um papel a cumprir, oferece um serviço ou
realiza uma ação que é usada por outros objetos

Os objetos se comunicam por


troca de mensagens
Paradigmas de Programação
Pensar em objetos facilita a
compreensão de “coisas”
mais complexas

Por que Os objetos permitem que nos


objetos? concentremos nos detalhes que
nos interessam, ignorando os
que são irrelevantes

Abstração
Paradigmas de Programação

Objetos
1. Um objeto é uma variável
Ele armazena dados

2. Uma estrutura de variáveis é um objeto


mas um objeto pode ser mais que uma estrutura
de variáveis: podemos “pedir” que determinadas
operações sejam feitas sobre o objeto e suas
variáveis
Paradigmas de Programação

Qual é a diferença entre


classe e objeto?

Definição de um tipo Realização do tipo


Especificação Abstrata de um Uma instância da classe
conjunto de objetos
Entidade única criada a
Modelo a partir do qual os partir da especificação da
objetos são criados classe
Paradigmas de Programação
Cachorro
raça
nome Classe
peso
//comportamentos
Cachorro
Labrador
Zeca
10 kg

Objetos
Cachorro Cachorro
Shitsu Poodle
Froddo Belinha
3,5 kg 5 kg
Paradigmas de Programação
Sistemas Orientados a Objetos: Domínio e Aplicação

Um domínio é composto pelas entidades, informações e


processos relacionados a um determinado contexto

Uma aplicação pode ser desenvolvida para automatizar


ou tornar factível as tarefas de um domínio
Paradigmas de Programação
Sistemas Orientados a Objetos: Domínio e Aplicação
A identificação dos elementos de um
domínio não é uma tarefa tão simples

Exige conhecimento das entidades,


informações e processos do domínio

Desenvolvedores buscam
mecanismos para tornar mais
eficiente o entendimento dos
domínios para os quais devem
desenvolver aplicações.
Paradigmas de Programação
Sistemas Orientados a Objetos: Domínio e Aplicação

As entidades identificadas no domínio devem ser


representadas de alguma forma dentro da aplicação
correspondente

Numa aplicação Orientada a Objetos


como são representadas as entidades?
Paradigmas de Programação

As entidades são
representas por
OBJETOS

Um objeto é
composto por
atributos e métodos

São definidos em
uma CLASSE.
Paradigmas de Programação
Programação Orientada a Objetos
Exemplo: consideremos um sistema bancário com os seguintes
requisitos funcionais
I. Manter o cliente (inserir cliente, remover cliente, selecionar cliente e
atualizar cliente)
II. Manter conta (abrir conta, fechar conta, alterar conta, pesquisar
conta e remover conta)
III. Movimentar caixa (sacar, depositar e transferir)
IV. Registrar movimento (gerar histórico)
V. Emitir relatórios contábeis

E agora, como fica?


Paradigmas de Programação
Sistemas Orientados a Objetos
Classes → Objetos
As entidades do domínio: Cliente, Conta e Movimento
Regras de Negócio

Um sistema OO geralmente possui também duas classes


especiais: uma classe controle e uma classe fronteira

Responsável por coordenar os Camada mais externa do sistema


comportamentos do sistema Interação com o meio externo
Ponte entre a fronteira e as entidades Receber dados e exibir informações
Paradigmas de Programação
Sistemas Orientados a Objetos
Todo sistema também necessita de um repositório de dados

Normalmente um
Banco de Dados

Em nossas aplicações
iremos simular o Banco
de Dados com uma
Estrutura de Dados
um array, por exemplo
Princípios da POO

Abstração
Princípios da POO

ORIENTAÇÃO A OBJETOS

ENCAPSULAMENTO POLIMORFISMO HERANÇA

ABSTRAÇÃO
Princípios da POO
Encapsulamento
O encapsulamento é um mecanismo de programação que
vincula o código e os dados que trata.
(SCHILDT, 2013)

Proteção dos Dados do Objetos


Forma de restringir o acesso ao comportamento interno do
objeto
Princípios da POO
Encapsulamento
Minimiza as interdependências entre módulos, através da
definição de interfaces externas
SERVIÇOS

A interface do objeto declara todas as operações permitidas


Todo o acesso aos dados é feito através da chamada a um
método definido pelo objeto
Princípios da POO
Encapsulamento
Mensagem
Interface
Implementação

Mensagem Mensagem
OBJETO

Mensagem
Princípios da POO
Encapsulamento
Exemplo de Objeto: uma Lâmpada
Operações:
Ligar
Desligar
SERVIÇOS

DADOS

Dados:
Estado (ligada/desligada)
Princípios da POO
Encapsulamento
Benefícios

Segurança: Protege os objetos de terem seus atributos


corrompidos por outros objetos;
Independência: “Escondendo” seus atributos, um objeto
protege outros de complicações de dependência da sua
estrutura interna.
Torna o código mais legível e minimiza os erros de programação
Princípios da POO
Herança
Classes semelhantes são agrupadas em hierarquias, onde cada
nível de hierarquia é visto como um nível de abstração
Maior Abstração Figura

É um tipo de

Fig. Geométrica

É um tipo de É um tipo de

Menor Abstração Círculo Quadrado


Princípios da POO
Herança

Através da herança, é possível construir novas classes


usando com base classes já existentes

As novas classes herdam tanto os comportamentos como


os atributos da classe pré-existente (classe mãe)
Princípios da POO
Herança
Veículo
modelo
numeroDeMarchas
trocar marcha
parar

Carro Bicicleta
placa aro
capacidadeDoTanque pedalar
dirigir trocar corrente
abastecer
Princípios da POO
Polimorfismo
Processo pelo qual diferentes implementações de métodos
podem ser acessadas pelo mesmo nome
Além de permitir aplicar a mesma operação (conceitual) a
objetos de tipos diferentes
Princípios da POO
Polimorfismo
Pra finalizar...
Programação Orientada a Objetos (POO) é um
paradigma de programação de computadores onde se
usam classes e objetos, criados a partir dos modelos
descritos, para representar e processar dados usando
programas de computador

Na POO os dados são representados por tipos de dados nativos


da linguagem (dados primitivos)
Dados também podem ser representados por modelos já existentes
na linguagem ou por modelos criados pelo programador
Faça suas anotações

Hora do Café... Preencha o Mapa Conceitual


Quais as suas dúvidas?
Faça os Exercícios

Você também pode gostar