Você está na página 1de 31

Programação Orientada a

Objetos
Sumário: Classes, Objetos, Atributos,
Métodos, Encapsulamento, Herança,
Polimorfismo.
Introdução
O aumento da complexidade das aplicações implicou
que o software ficasse mais caro e exigiu aos
programadores uma maior capacidade de adaptação
às novas linguagens e sistemas operativos que iam
surgindo. As aplicações tornaram-se mais procuradas,
é certo, mas também mais dispendiosas e com menor
qualidade. Tornou-se urgente encontrar uma forma
de aumentar a produtividade dos programadores, isto
é, de fazer com que existisse a possibilidade de se
utilizar parte de determinadas aplicações noutras,
empregando basicamente as mesmas ideias, o
mesmo código e os mesmos objetos.
Introdução
A tecnologia que foi capaz de lidar com este problema foi a
POO. As características deste tipo de programação foram
particularmente bem sucedidas, na medida em que
simplificaram consideravelmente projetos que até então eram
extremamente complexos e difíceis de estruturar. Este novo
sistema veio conceber técnicas e conceitos de programação
completamente diferentes. Um programa deixou de consistir
apenas num conjunto de instruções que visava o desempenho
de uma tarefa específica e passou a ser definido como um
conjunto de instruções e de objetos que interagem entre si,
onde cada elemento preserva a sua individualidade e
desempenha um papel especial na execução de uma tarefa.
POO
A programação orientada a objetos é um paradigma de
programação que se centra na noção de objeto, ao
contrário da programação tradicional que é centrada no
conceito de procedimento. A POO utiliza objetos e não
algoritmos como bloco lógico fundamental.
A orientação a objetos é uma tecnologia que enxerga os
sistemas como sendo coleção de objetos integrantes. Ela
permite melhorar a reusabilidade e extensibilidade dos
softwares. A tecnologia orientada a objetos é
fundamentada no que, coletivamente, chamamos de
modelo de objetos, que engloba os princípios da abstração,
hierarquização, encapsulamento, classificação,
modularização, relacionamento, simultaneidade e
persistência.
POO
A POO é essencialmente um estilo de programação, de certa
forma independente da linguagem de programação. Ela é
um método ou forma de desenvolver código e
consequentemente software. Enquanto nas linguagens
procedimentais, como caso da linguagem C,
desenvolvemos códigos e funções identificando as variáveis
recorrendo somente a um comportamento, numa
linguagem orientada a objetos podemos ir mais longe e
representar qualquer objetos do dia-a-dia. A proposta da
orientação a objetos é representar o mais fielmente
possível as situações do mundo real nos sistemas
computacionais. Nos entendemos o mundo como um todo
composto por vários objetos que interagem uns com os
outros.
POO
Da mesma maneira, a orientação a objetos consiste em
considerar os sistemas computacionais não como uma
coleção estruturada de processos, mas sim como uma
coleção de objetos que interagem entre si. Com a
programação orientada a objetos é possível
desenvolver aplicações mais robustas e estruturados
em módulos que agrupam um estado e operações
sobre este estado, apresentando assim ênfase em
reutilização de código, isto é, permitem ao programador
uma maior reutilização de código e consequente baixa
probabilidade de falha na produção do software. A
compreensão do software tornou-se mais fácil, pois a
representação em objetos é um processo mais natural.
Porque OO?
• Surgiu da necessidade de simular a realidade, criando
abstrações na tentativa de representar as
características relevantes dos objetos envolvidos no
sistema que se deseja desenvolver. Com o uso da OO,
a engenharia de software conseguiu avançar na
habilidade de modelar e projetar softwares que
representam os problemas do mundo real no mundo
computacional. O desenvolvedor aproveita os
aspectos mais importantes do mundo real para realizar
representações no computador. O processo de
modelagem consiste de abstrair (extrair as
informações relevantes) e representar no computador.
Porque OO?
Principais diferenças entre as PE e POO
• Analisemos as principais diferenças entre as lingauagens
procedimentais(Estruturadas) e as linguagens orientadas a
objetos: por exemplo, em linguagem C para representar um
objeto “Mesa” poderia criar uma estrutura e as variáveis
“Tampo”, “Altura”, “Largura”, “Comprimento”. Não deixa de
ser um conjunto de quatro variáveis que identifica a “Mesa”.
Por cada tipo de mesa, em que o número de variáveis fosse
diferente, teríamos de definir uma nova estrutura e criar
tudo de novo. Numa abordagem de POO poderemos criar
uma classe que identifique a “Mesa” e reutilizá-la as vezes
que entender no programa e se a “Mesa” for diferente, basta
herdar as propriedades da anterior e cria uma nova classe.
• Parece confuso na teoria, mas verá que na prática é mais
simples!
Vantagens da POO
• Forte suporte para o encapsulamento dos dados e da
lógica dentro de um componente que chamamos de
objeto.
• Essas propriedades tornam-se mais importantes
quando os programas se tornam grandes, pois com a
orientação a objetos fica mais fácil de dar
manutenção no código.
• Sensível redução no custo de manutenção do
software.
• Aumento na reutilização de código.
Origens da POO
Orientação a objetos tem suas origens na linguagem
SIMULA 67, a qual introduziu os conceitos de classes
e objetos.
Mas foi a linguagem SmallTalk (1980) que a orientação
a objetos ganhou força.
Outras linguagens: C++, Object Pascal, PHP, Java, C# ....
Conceitos de POO
Classes
Abstração
Objetos
Atributos
Métodos
Instâncias
Mensagem
Encapsulamento
Herança
Polimorfismo
Classes
Classe é o molde para a criação de objetos, isto é,
define o comportamento e os atributos dos seus
objetos. Uma classe representa um conjunto de
objetos que possuem características e
comportamentos comuns. Todos os atributos e
métodos que forem descritos na classe farão parte
dos objetos.
Uma classe é o projeto de um objeto.
Classe representa uma categoria e os objetos são
membros dessa categoria.
Classe é a representação de um conjunto de coisas
reais ou abstratas que são reconhecidas como sendo
do mesmo tipo.
Classes
Uma classe é considerada uma fábrica de instâncias que
inclui atributos e operações dessas instâncias. E de agora
em diante, diremos que um objeto é uma instância de
uma determinada classe, ou seja, criaremos nossos
objetos baseados nas características definidas nas
classes.
É importante evitar a criação de classes que tentem
abranger tudo (ou várias coisas).
1- Pode pensar também como a planta de uma casa.

Exemplo:
Planta de uma casa
Exmplos de Classes
Classes
Sintaxe :[acesso] <palavra chave (class)> <Nome da classe>
{
[bloco de Instruções]
}
Em que: acesso representa o nível de proteção da classe, palavra chave
onde deve-se colocar class e o nome da classe que corresponde ao nome
que pretendemos atribuir à classe.
Obs: Assembly módulo de programação compilado que agrega código-
fonte, metainformação, bem como outros recursos (tais como imagens).

Tabela nº 1: Níveis de Proteção de Classes


Nível de Proteção Descrição
Internal A classe apenas pode ser acedida a partir do assembly onde se
encontra definida.

Public A classe pode ser acedida a partir de qualquer assembly.


Abstração
Abstração -Identificar todas as informações que
atendem a aplicação e ignorar as informações
irrelevantes. Isto é, consiste na seleção de alguns
aspetos de domínio do problema a modelar,
desconsiderando os irrelevantes para o nível de
abstração em questão;
A abstração é essencial para identificarmos classes e
indispensável na modelagem de objetos reais porque,
no mundo real, quase tudo é complexo:
Abstração

Dados
abstraidos
O que são objetos?

Características Comportamentos
Acelerar Características Comportamentos
Cor Cor Acelerar
Combustível Freiar
Acender farol Combustível Freiar
Num_Portas Num_Portas Acender farol
Potencia Dar seta
Buzinar Potencia Dar seta
Capacidade Carga Buzinar
Acionar Freio-Motor

Características
Peso Comportamentos
Cor Ligar
Tamanho tela Desligar
Processador Ligar Wireless
Memória Desligar Wireless
O que são objetos?
Estamos cercados de objetos, como: Cadeira, Mesa, Computador,
Pessoas, etc. Cada objeto tem suas características e
comportamentos.
Um dos objetivos da Orientação a Objetos é representar objetos
do mundo real em sistemas computacionais, facilitando a
análise e construção de software.
Atualmente: Paradigma de programação é técnica de projeto de
software.
Um objeto é uma pessoa, um lugar, é a base para todos os outros
conceitos da orientação a objetos.
Um objeto denota uma entidade de natureza física, conceitual ou
de software:
Entidades físicas: um carro, uma pessoa, um livro;
Entidade conceitual: um DER de uma sistema;
Entidade de software: um radiobutton em uma página web.
Objectos
É a instância da classe em memória.
Possui todas as características definidas previamente
na classe.
Se comunicam através da troca de mensagens.
É uma entidade real ou abstrata, que modela um
conceito presente na realidade humana, ocupando
espaço físico ou lógico.
Facilita a compreensão do mundo real e oferece uma
base real para implementação em computador.

Exemplo:
A casa construída
Atributos
Os atributos são as características que definem os objetos de uma
classe, ou seja, as peculiaridades que costumam variar de objeto
para objeto;. Também são conhecidos como propriedades.
Alguns exemplos de atributos em uma classe chamada Pessoa
seriam: altura, sexo, cor, idade.
Exemplos de atributos de qualquer classe como: o tipo de letra, a
posição no ecrã e a capacidade de redimensionamento.
Alguns atributos permitem diferenciar um objeto do outro dentro
de uma mesma classe.
Sintaxe :[acesso] <tipo de dados> <atributo>;
Em que: acesso representa o nível de proteção do atributo, depois
o tipo de dados (que podem ser: inteiros, reais, caracteres ou
strings, estruturas e inclusive outros objetos ou apontadores de
objetos).
Atributos
Nível de proteção Descrição
Private O atributo só pode ser acedido a partir da classe onde foi declarado.
Public O atributo pode ser acedido a partir de qualquer classe.
Protected O atributo só pode ser acedido a partir da classe onde foi declarado e
a partir de classes derivadas.
Internal O atributo pode ser acedido a partir de qualquer classe.
Protected Internal O atributo só pode ser acedido a partir da classe onde foi declarado e
a partir de classes derivadas.

Tabela nº 2: Nível de Proteção de Atributos.


Obs: Em geral os atributos são privadas caso não se
especifique o nível de proteção, isto é, o atributo fica
como private (valor por omissão), e acedidas pelos
métodos.
Métodos
Os métodos são ações que os objetos podem desempenhar;
Também são chamados de comportamentos;
São procedimentos declarados na classe que permitirá aos
programadores alterar o estado do objeto;
São funções que executam todo o código necessário para a
gestão do objeto e integração com outros componentes
do programa;
Estas funcionalidades, tecnicamente conhecidas por funções
de membro de uma classe, são constituídas por um
conjunto de instruções que se encontram bem definidas e
estruturadas internamente na classe onde são definidas;
Métodos
Representam as atividades que uma classe pode
executar;
Podemos comparar um método a uma função
desenvolvida em uma linguagem de
programação como, por exemplo, C#;
Os métodos podem (ou não) receber parâmetros;
Um método retornar (ou não) valores;
Representam um conjunto de instruções que são
executadas quando eles são chamados.
Instâncias
objeto instanciado na memória.
Mensagem
requisição para executar um método do objeto. Mensagens são
requisições para que um objeto execute uma de suas ações. Cada
objeto somente pode responder às mensagens que constem do seu
protocolo. O protocolo de um objeto são as mensagens
correspondentes as suas operações, além do protocolo de sua
superclasse.
Os objetos interagem através de mensagens. O atendimento de uma
mensagem envolve a execução de algum tipo de código, ou seja, os
métodos, sobre um dado associado àquela operação, ou seja, sobre
os atributos. Quando um objeto é criado, o acesso a suas
características é feito através de mensagens. Para cada mensagem
recebida pelo objeto, existe um método associado para respondê-la.
Quando a mensagem estiver se referenciando a um atributo, o valor
deste deve ser devolvido, e no caso de uma operação, o
procedimento desta é executado.
Encapsulamento
Permite que os atributos e os métodos sejam
empacotados dentro de uma classe.
Mecanismo para proteger os atributos.
Atributos são manipulados apenas pelos métodos
públicos.
O encapsulamento visa proteger os dados.
Normalmente os dados são privados ou
protegidos. Cada linguagem tem uma forma de
declarar dados privados e protegidos.
Exemplo agenda: atributos privados Nome,
Endereço, Telefone e Idade.
Herança
Permite reutilizar a definição de um tipo de
objeto para definir outro tipo de objeto.
Herança
Polimorfismo
Capacidade de objetos de diferentes tipos
responder a métodos com o mesmo nome, cada
um de acordo com seu próprio comportamento.

Você também pode gostar