Vous êtes sur la page 1sur 41

Orientação a Objetos

Faculdade Paraíso

Motivação
Como você realmente escreve um grande
software?
• Quanto tempo levará?
• Como o código será organizado?
• Dá para reaproveitar algum código?
• Como será testado?
• Será fácil depurar os bugs?
• Como se dividem as tarefas entre mais programadores?
• Como juntar todos os códigos ao final?
• Funciona?
Faculdade Paraíso

Orientação a Objetos (1)


Faculdade Paraíso

SIMULA

Glyph Class Line (elements);

Ref (Glyph) Array elements;


Begin
Procedure print;
Begin Integer i;
For i:= 1 Step 1
Until UpperBound (elements, 1)
Do elements (i).print; OutImage;
End;
End;
Faculdade Paraíso

SMALTALK
Object subclass: #MessagePublisher
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'Smalltalk Examples'
Faculdade Paraíso
Faculdade Paraíso
Faculdade Paraíso

Orientação a Objetos (1)

 O ser humano se relaciona com o mundo


através do conceito de objetos
 Estamos sempre identificando qualquer
objeto ao nosso redor.
 Para isso lhe damos nomes, e de acordo
com suas características lhes
classificamos em grupos, ou seja, classes

8
Faculdade Paraíso

Orientação a Objetos (1)


Faculdade Paraíso

Conceitos de Orientação a Objetos (3)


 Objetos do mundo real possuem duas
características: estado e comportamento
 Exemplos:
 cachorros  estado: nome, cor, raça
comportamento: latir, correr
 Bicicletas  estado: marcha atual, velocidade atual
comportamento: trocar marcha, aplicar
freios

10
Faculdade Paraíso

Conceitos de Orientação a Objetos (4)


 Identificar o estado e o comportamento de
objetos do mundo real é o primeiro passo para
começar a pensar em programação OO
 Observe um objeto e pergunte:
 Quais os possíveis estados que esse objeto pode
estar?
 Quais os possíveis comportamentos que ele pode
executar?

11
Faculdade Paraíso

Classe (1)
 A unidade fundamental de programação em
orientação a objetos (POO) é a classe
 Classes contém:
Atributos: determinam o estado do objeto;
Métodos: semelhantes a procedimentos em
linguagens convencionais, são utilizados
para manipular os atributos

12
Faculdade Paraíso

Classe (2)
 As classes provêem a estrutura para a construção de
objetos - estes são ditos instâncias das classes

Classe Instâncias
Aluno João
Nome 193.31.098-7
atributos Matrícula 7,6
Nota Média

setNome(nome) Maria
métodos getNome() 195.31.022-5
... 8,7

13
Faculdade Paraíso

Objetos
• Objetos

– São instâncias da classe.


– Sob o ponto de vista da programação orientada a objetos,
um objeto não é muito diferente de uma variável normal.

• Um programa orientado a objetos é composto por


um conjunto de objetos que interagem entre si
Faculdade Paraíso

Objetos (1)
 Objetos de software são conceitualmente
similar a objetos do mundo real:
 Eles consistem do estado e o comportamento
relacionado
 Um objeto armazena seu estado em campos
(variáveis) e expõe seu comportamento através
de métodos (funções)

15
Faculdade Paraíso

Objetos (2)
Instâncias
Bicicleta Bibicleta A
campos Marcha atual 3ª
Velocidade atual 20 km/h
(atributos)
mudarMarcha() Bibicleta B
métodos mudarVelocidade()

...
35 km/h

16
Faculdade Paraíso

Objetos (3)
Métodos operam no estado interno de um
objeto e servem como mecanismo de
comunicação entre objetos

João Bibicleta B
João mudarMarcha 7º
30 anos 35 km/h

17
Faculdade Paraíso

Classe em Java
class Bicicleta {
int velocidade = 0;
int marcha = 1;
void mudarMarcha(int novoValor) {
marcha = novoValor;
}
void aumentarVelocidade(int incremento) {
velocidade = velocidade + incremento;
}
void aplicarFreios(int decremento) {
velocidade = velocidade - decremento;
}
}

18
Faculdade Paraíso

Criando objetos em Java


 Criando dois objetos bicicleta:
Bicicleta bicicleta1 = new Bicicleta();
Bicicleta bicicleta2 = new Bicicleta();

 Invocando seus métodos:


bicicleta1.mudarMarcha(2);
bicicleta2.aumentaVelocidade(5);

19
Faculdade Paraíso

Resumo Classe e Objeto


 A classe prover a estrutura para a construção de
objetos
 Um objeto é uma instância de uma classe. Ele
contem um estado (valores de seus atributos) e
expõe o seu comportamento através de métodos
(funções)
 Ex. Bicicleta: ESTADO – valores dos atributos
velocidade e marcha; COMPORTAMENTO – exposto
pelos métodos mudarMarcha, aumentarVelocidade e
aplicarFreios

20
Faculdade Paraíso

Encapsulamento de Dados (1)


– Encapsulamento: princípio de projeto pelo qual
cada componente de um programa deve agregar
toda a informação relevante para sua
manipulação como uma unidade (uma cápsula).

– Ocultação da Informação: princípio pelo qual cada


componente deve manter oculta sob sua guarda
uma decisão de projeto única. Para a utilização
desse componente, apenas o mínimo necessário
para sua operação deve ser revelado (tornado
público)
Faculdade Paraíso

Encapsulamento de Dados (1)


É um princípio fundamental da OO:
Esconder o estado interno (valores dos atributos)
Obrigar que interações com os atributos sejam
executadas através de métodos
Com o encapsulamento um objeto determina a
permissão que outros objetos terão para
acessar seus atributos (estado)

22
Faculdade Paraíso

Encapsulamento de Dados (2)

Proteger os atributos

Permitir acesso aos


atributos através dos
métodos

23
Faculdade Paraíso

Modificadores de controle de acesso (1)

 Determinam se atributos e métodos poderão


ser acessados por outras classes
 public (público)
 private (privado)

 protected (protegido)
 modificador não explícito (package-
private)

24
Faculdade Paraíso

Encapsulamento de Dados (2)

Proteger os atributos

Permitir acesso aos


atributos através dos
métodos

25
Faculdade Paraíso

Modificadores de controle de acesso (2)

 Uma classe pode ser:


public – acessado por qualquer outra
classe
nenhum modificador (package-private) –
acessado somente dentro do seu pacote

26
Faculdade Paraíso

Modificadores de controle de acesso (3)


 Atributo e método podem ser:
public – acessado por qualquer outra
classe
nenhum modificador (package-private) –
acessado somente dentro do seu pacote
private – acessado somente dentro de sua
própria classe
protected – acessado somente dentro do
seu pacote e por suas subclasses
27
Faculdade Paraíso

Modificadores de controle de acesso (3)


atributos ou
modificador
métodos
pacote subclasse todos
public Sim Sim Sim Sim
protected Sim Sim Sim Não
nenhum Sim Sim Não Não
private Sim Não Não Não

28
Faculdade Paraíso

Herança (1)
 Permite a uma classe herdar o estado
(atributos) e o comportamento (métodos) de
outra classe

29
Faculdade Paraíso

Herança (2)
Pessoa
------------------------------------------------

nome
idade

Professor Aluno
-------------------------------------------------------------------
------------------------------------------------------------------------------------

formação curso

área de interesse cr

30
Faculdade Paraíso

Herança (3)

31
Faculdade Paraíso

Herança (4)

32
Faculdade Paraíso

Herança (5)

33
Faculdade Paraíso

Herança (6)
Instâncias de Aluno
João
25
Sistemas de Informação

Maria
20
Sistemas de Informação

34
Faculdade Paraíso

Herança em Java (1)

class Aluno extends Pessoa {


...
}

35
Faculdade Paraíso

Herança em Java (2)


class Pessoa {
String nome;
int idade; class Aluno extends Pessoa {
void definirNome(String valor) { String curso;
nome = valor;
} void definirCurso(String valor) {
curso = valor;
String retornarNome() { }
return nome;
} String retornarCurso() {
return curso;
void definirIdade(int valor) { }
idade = valor;
} }

int retornarIdade() {
return idade;
}
}
36
Faculdade Paraíso

Herança em Java (3)

Aluno joao = new Aluno();


joao.definirNome(“João”); João
joao.definirIdade(25); 25
joao.definirCurso(“Sistemas de Sistemas de Informação
Informação”);

Aluno maria = new Aluno();


maria.definirNome(“Maria”); Maria
maria.definirIdade(20); 20
maria.definirCurso(“Sistemas de Sistemas de Informação
Informação”);

37
Faculdade Paraíso

Construtores (2)
 Devem ter o mesmo nome da classe que
inicializam
 Podem ter parâmetros
 Não tem retorno
 Se não é declarado nenhum construtor, a
linguagem provê um construtor padrão sem
argumentos que não faz nada

38
Faculdade Paraíso

Construtores (1)
 Utilizados para a construção de objetos
class Pessoa {
String nome;
int idade;
public Pessoa (String nome, int idade) {
this.nome = nome; Pessoa maria =
this.idade = idade; new Pessoa(“Maria”, 20);
}
Pessoa joao = new Pessoa();
public Pessoa () {
this.nome = “João”;
this.idade = 25;
}
}

39
Faculdade Paraíso

Programa em Java (1)

Pacotes import java.util.*;

public class AloMundo {


Variáveis

private String mensagem = “ ”; Construtores


Classe
public AloMundo () {
Date data = new Date();
mensagem = "Alô, Mundo” + data.toString() ;
} Métodos
public void mostrarMensagem () {
System.out.println( mensagem );
}
}

40
Faculdade Paraíso

Programa em Java (2) public static void main (String[] args) {


Pessoa p1 = new Pessoa();
p1.definirNome(“João”);
public class Pessoa { p1.definirIdade(25);
private String nome;
System.out.println( p1.retornarNome() +
private int idade;
“ “ + p1.retornarIdade());
void definirNome(String valor) {
nome = valor; Pessoa p2 = new Pessoa();
}
p2.definirNome(“Maria”);
String retornarNome() { p2.definirIdade(20);
return nome; System.out.println(p2.retornarNome() +
}
“ “ + p2.retornarIdade());
void definirIdade(int valor) { }
idade = valor;
} } // fim da classe Pessoa
int retornarIdade() {
return idade;
}
41

Vous aimerez peut-être aussi