Orientação a Objetos
Paradigmas de Programação
Marco Antonio Montebello Júnior
[email protected]
Orientação a objetos

Também conhecida como Programação
Orientada a Objetos (POO) ou ainda em inglês
Object-Oriented Programming (OOP).

A análise e projeto orientados a objetos têm
como meta identificar o melhor conjunto de
objetos para descrever um software.
Paradigmas de Programação
Orientação a objetos

Na POO, implementa-se um conjunto de
classes que definem os objetos presentes no
software.

Cada classe determina o comportamento
(definidos nos métodos) e estados possíveis
(atributos) de seus objetos, assim como o
relacionamento com outros objetos.
Paradigmas de Programação
Orientação a objetos


A OO é mais intuitiva e fácil de aprender do que
as técnicas tradicionais, pois foca o problema
em conceitos do mundo real.
Dentre as vantagens que a OO proporciona,
podemos destacar:





aumento de produtividade
reuso de código
redução das linhas de código programadas
componentização
facilidade na manutenção, etc....
Paradigmas de Programação
Conceitos fundamentais de OO












Classe
Objeto
Instância
Atributo
Propriedades
Métodos
Sobrecarga
Herança
Encapsulamento
Abstração
Polimorfismo
Interface
Paradigmas de Programação
Abstração

Segundo SEBESTA [Sebe2000], abstração “é
uma visualização ou uma representação de
uma entidade que inclui somente os atributos de
importância em um contexto particular”. Seu
propósito na programação é:


diminuir a complexidade;
permitir que os programadores se concentrem
apenas nos atributos essenciais.
Paradigmas de Programação
Tipos de abstração

Abstração de processo
public void fatorial(int iNumber)
{
...
}

Abstração de dados

Ocultar informações irrelevantes, preocupando-se
apenas com as características e a forma de
comunicação.
Paradigmas de Programação
Classe x Objeto
Paradigmas de Programação
Conceitos fundamentais de OO
Classe

Classe:



Representa um conjunto de objetos com suas
próprias características.
Uma classe define o comportamento dos objetos,
através de métodos e quais estados
(características) ele é capaz de manter, através de
atributos.
Exemplo de classe:


Os seres humanos
Carro
Paradigmas de Programação
Conceitos fundamentais de OO
Classe



Classes são uma especificação para objetos
Uma classe representa um tipo de dados
complexo
Classes descrevem


Tipos dos dados que compõem o objeto (o que
podem armazenar)
Procedimentos que o objeto pode executar (o que
podem fazer)
Paradigmas de Programação
Conceitos fundamentais de OO
Classe
Instâncias da classe Casa (objetos)
Classe
Casa
boolean abrePorta() {}
int numero
Color cor
static String arquiteto
12
56
72
Casa c1 = new Casa();
c1.numero = 12;
c1.cor = Color.Yellow;
Casa c2 = new Casa();
c2.numero = 56;
c2.cor = Color.Red;
Casa c3 = new Casa();
c3.numero = 72;
c3.cor = Color.White;
c3.abrePorta();
Paradigmas de Programação
Conceitos fundamentais de OO
Classe

Classes definem lógica estática



Relacionamentos entre classes são definidos na programação
e não mudam durante a execução
Relacionamentos entre objetos são dinâmicos e podem
mudar. O funcionamento da aplicação reflete a lógica de
relacionamento entre os objetos, e não entre as classes.
Classes não existem no contexto da execução


Uma classe representa vários objetos que ocupam espaço na
memória, mas ela não existe nesse domínio
A classe tem papel na criação dos objetos, mas não existe
quando os objetos trocam mensagens entre si.
Paradigmas de Programação
Conceitos fundamentais de OO
Classe

Definição de classe em C#:
class FirstClass
{
//atributos
//propriedades
//métodos
}
Paradigmas de Programação
Conceitos fundamentais de OO

Objeto:




É uma instância de uma classe.
Um objeto é capaz de armazenar estados através
de seus atributos e reagir a mensagens enviadas a
ele, assim como se relacionar e enviar mensagens a
outros objetos.
Exemplo de objetos da classe Humanos: João,
José, Maria
Exemplo de objetos da classe Carro: Ferrari, Golf,
Audi, Celta.
Paradigmas de Programação
Conceitos fundamentais de OO
Objetos

Objetos são conceitos que têm




identidade,
estado e
comportamento
Características de Smalltalk, resumidas por Allan Kay:





Tudo (em OO) são objetos
Um programa é composto de vários objetos enviando
mensagens uns aos outros
O espaço (na memória) ocupado por um objeto consiste de
outros objetos
Todo objeto possui um tipo (que descreve seus dados)
Objetos de um determinado tipo podem receber as mesmas
mensagens
Paradigmas de Programação
Conceitos fundamentais de OO
Objetos

Em uma linguagem OO pura




Um objeto é composto de objetos, portanto


Uma variável é um objeto
Um programa é um objeto
Um procedimento é um objeto
Um programa (objeto) pode ter variáveis (objetos que
representam seu estado) e procedimentos (objetos que
representam seu comportamento)
Analogia: abstração de um telefone celular



É composto de outros objetos, entre eles bateria e botões
A bateria é um objeto também, que possui pelo menos um
outro objeto: carga, que representa seu estado
Os botões implementam comportamentos
Paradigmas de Programação
Criação de um objeto

Em C#, utiliza-se a seguinte sintaxe para
criação de objetos:


<Tipo> <nome> = new <Tipo>();
Exemplos:


Computador comp1 = new Computador();
Pessoa pess = new Pessoa();
Paradigmas de Programação
Membros de instância

Cada objeto, quando criado, aloca espaço
para eles

Só podem ser usados através de objetos
Paradigmas de Programação
Exemplo
public class Casa {
private Porta porta;
private int numero;
public System.Drawing.Color cor;
public Casa() {
porta = new Porta();
numero = ++contagem * 10;
}
Tipo
public void abrePorta() {
porta.abre();
}
public static String arquiteto = "Zé";
private static int contagem = 0;
static Casa(){
if ( condição ) {
arquiteto = "Og";
}
}
}
Paradigmas de Programação
Atributos de instância: cada
objeto poderá armazenar valores
diferentes nessas variáveis.
Procedimento de inicialização de
objetos (Construtor): código é
executado após a criação de
cada novo objeto. Cada objeto
terá um número diferente.
Método de instância: só é
possível chamá-lo se for através
de um objeto.
Atributos estáticos: não é preciso
criar objetos para usá-los. Todos
os objetos os compartilham.
Procedimento de inicialização
estático: código é executado
uma única vez, quando a classe
é carregada. O arquiteto será um
só para todas as casas: ou Zé ou
Og.
Mensagens



A comunicação entre objetos ocorre através das
mensagens;
Ao receber uma mensagem, um objeto necessita
executar uma ação;
As ações ocorrem através de procedimentos
denominados métodos.
MENSAGEM
OBJETO B
OBJETO A
Paradigmas de Programação
Métodos



Determinam como um objeto agirá ao receber
uma mensagem;
Implementa abstração de processos, uma que o
objeto que envia a mensagem não necessita
saber como o receptor irá tratá-la;
São usados para dar acesso às funcionalidades
dos objetos.
Paradigmas de Programação
Propriedades


Fornecem acesso aos dados contidos no objeto;
Exemplo:
class Pessoa
{
private string strName;
public string GetSetName
{
get {return strName;}
set {strName = value};
}
}
Paradigmas de Programação
Atributos

Descrevem as características de um objeto:


Exemplo:
 Um objeto pessoa possui os atributos: nome, endereço etc.
Normalmente é utilizado internamente na classe (A
exposição das características da classe é tarefa das
propriedades)
Modificador
Significado
public
Atributo acessível a partir de qualquer código
private
Atributo acessível apenas para o código que faz parte da classe (o
padrão se nenhuma palavra-chave for usada)
Internal
Atributo acessível apenas para o código dentro do projeto em que ele é
definido
protected
Atributo acessível apenas para o código que faz parte da classe, ou
uma classe derivada (veremos com detalhes na parte de Herança)
Paradigmas de Programação
Conceitos fundamentais de OO

Instância

É um objeto gerado por uma classe.

A classe é apenas a representação de um objeto
enquanto a instância de uma classe é o objeto
propriamente dito, com tempo e espaço de
existência.
Paradigmas de Programação
Exemplo de instância (*)

Em C#, utiliza-se a seguinte sintaxe para
criação de objetos:


<Tipo> <nome> = new <Tipo>();
Exemplos:


Computador comp1 = new Computador();
Pessoa pess = new Pessoa();
Paradigmas de Programação
Aprofundando nos Conceitos
Objeto


Cada objeto ativo no sistema em particular também é
chamado de instância. As diferentes instâncias
possuem seu próprio estado.
Exemplos de instâncias de pessoas
Paradigmas de Programação
Aprofundando nos Conceitos
Objeto
Paradigmas de Programação
Aprofundando nos Conceitos
Classe

Na Orientação a Objetos também é possível ter
vários objetos do mesmo tipo, que compartilham
caracteríscas em comum.

Uma classe é um modelo (protótipo) que define
as variáveis (estado) e os métodos
(comportamento) comuns a todos os objetos do
mesmo tipo.
Paradigmas de Programação
Exemplo prático

Implementar a classe pessoa

Implementar a classe carro

Implementar a classe fruta

Implementar a classe árvore.
Paradigmas de Programação
Download

objeto