Você está na página 1de 17

27/09/2016

Programao Orientada a Objetos

PROF. THIAGO DRUMMOND R. G. MOREIRA

O Mundo
composto de Objetos !

1
27/09/2016

O que um Objeto?

Definies:
Alguma coisa que faz sentido no domnio da
aplicao,
Uma abstrao

Utilidade:
facilita a compreenso
oferece base real para implementao no
computador

Descrio de um Objeto

Um objeto pode ser descrito por um conjunto de


atributos e comportamentos:

Atributos Comportamentos
Motor Avanar
Cor Retroceder
Potncia Parar
Rodas Abastecer

substantivos verbos

2
27/09/2016

Classe de Objetos
Grupo de objetos com os mesmos atributos
e os mesmos comportamentos
pertencem a mesma classe.

Classe

Define Estrutura e Comportamento


(notao OMT) Exemplo

Nome da Classe Carro


Atributo1:tipo=valor Chassi: string
Atributo2:tipo=valor Cor: integer
Motor: Cmotor

Ligar():void
operao1(argumentos): tipo-retorno TemGasolina():boolean
operao2(argumentos): tipo-retorno Virar(direo):void

3
27/09/2016

Definio de classe em Java

class Carro {
String Chassi;
Propriedades int Cor;
Cmotos Motor;

void Ligar()
{ comandos }

boolean TemGasolina()
Mtodos {comandos}

void Virar(direo)
{comandos}
}

Classe = Molde de Objetos


Tempo de Tempo de Execuo
Compilao
Objeto Carro:
Instncia 1
Classe:
Carro Instanciando Objetos
Esportivo
Objeto Carro:
Instncia 2

Objeto Carro:
Instncia 3

4
27/09/2016

Instncias
class Aplicao {
Carro carros[];
Tempo de Execuo
public static void main(String arg[])
{ Objeto Carro:
Carro car1, car2, car3; Instncia 1
car1 = new Carro();
car2 = new Carro(); Instanciando Objetos
car3 = new Carro();
Objeto Carro:
if (car1.TemGasolina()) Instncia 2
{ car1.ligar();}

if (car2.TemGasolina()) Objeto Carro:


{ car2.ligar();} Instncia 3
}
}

Encapsulamento

Propriedades
e Mtodos
Privados

Objeto 1

5
27/09/2016

Caractersticas de
um Objeto
Um objeto tem identidade nica, est em um dado
estado e exibe comportamentos bem definidos.

Identidade Estado Comportamentos

Classes

Semnticas
modelo de objetos (tempo de compilao)
fbrica de objetos
unidade de reuso

6
27/09/2016

Relaes entre Classes

Uma margarida um tipo de flor


Uma rosa tipo diferente de flor
Rosas Vermelhas e amarelas so tipos de
rosas
Uma ptala uma parte de ambos tipos de
flores
Joaninhas comem formigas que infestam
certo tipos de flores

Relaes entre Classes (cont)

Associao
Referncia a outras classes (parmetros ou
variveis de mtodos)
Agregao
Propriedades de um tipo de classe
Herana:
Uma classe (subclasse) herda as propriedades e
mtodos de uma classe superior (superclasse)

7
27/09/2016

Relaes entre Classes

Associao: Conexo fsica ou conceitual


entre classes

Bomba Controlador

Relaes entre Classes


Associao
class CControlador { class CBomba {
acionar (CBomba bomba) {bomba.ligar();} integer nivel;
boolean energizada (CBomba bomba) { void ligar() { }
return bomba.tem_energia(); } boolean tem_energia(){
} return (nivel > 0); }
}

Programa Principal
CControlador controlador;
CBomba bomba1, bomba2;
...
if (controlador.energizada(bomba2)) {
controlador.ligar(bomba1);}

8
27/09/2016

Relaes entre Classes

Agregao: Denota relao de parte/de

Empresa Funcionrios

Relaes entre Objetos


Agregao
class CEmpresa { class CFuncionario {
CFuncionario lista_func []; private string nome;
CFuncionario novofunc; private float salario;
int cont_func = 0;
CFuncionario (String nome,
void inserir_func (String nome, float sal ) float salario)
{ novofunc = new CFuncionario(nome,sal); { this.nome = nome;
cont_func++; this.salario = salario; }
lista_func[cont_func] = novofunc; }
void alterar_sal (float sal)
void aumentarSal (float valor) { salario = sal;}
{ for (c=1;c<cont_func;c++) }
{ novo_sal = lista_func[c].salario+valor;
lista_func[c].alterar_sal(novo_sal); }
}

9
27/09/2016

Relaes entre Objetos


Agregao
Programa Principal
CEmpresa empresa;
...
empresa.inserir_func(Jose,200);
empresa.inserir_func(Ana,300);
empresa.inserir_func(Luis,1050);
empresa.inserir_func(Eduarda,3000);
empresa.aumentarSal(200);

Relao entre classes


Herana:
Capacidade de uma classe se especializar
Garante o reuso
Pessoa

Funcionrio Aluno

Professor FuncionrioAdm AlunoGraduao AlunoPsGraduao

10
27/09/2016

Relao entre classes


Herana
Pessoa
Nome: String
Endereco: CEndereco
idade: inteiro

Funcionrio Aluno
Salario: valor Disciplinas: lista CDisc
CartTrab: string Inicio: CPeriodo
Admissao: data PrevisaoFim: CPeriodo
AlterarSal(float valor):void; AlterarNota(float nota):void;

Relao entre classes: Herana


class CPessoa {
String nome;
CEnd endereco;
int idade;
}

class CFuncionario extends CPessoa { class CAluno extends CPessoa {


CValor salario; CDisc Disciplinas[];
String cartrab; CPeriodo CDisc;
CData Admissao; CPeriodo PrevisaoFim;
void AlterarSal(float valor); void AlterarNota(float nota);
} }

11
27/09/2016

Relao entre classes


Tipos de Herana
Simples
somente uma super classe
Mltipla
mais do que uma superclasse
Mista
simples de tipo
mltipla de funcionalidade

Relao entre classes


Herana Simples

Pessoa
Nome: String
Endereco: CEndereco
idade: inteiro

Funcionrio Aluno
Salario: valor Disciplinas: lista CDisc
CartTrab: string Inicio: CPeriodo
Admissao: data PrevisaoFim: CPeriodo
AlterarSal(float valor):void; AlterarNota(float nota):void;

12
27/09/2016

Relao entre classes


Herana Mltipla
Link
Imagem
Protocolo : Cprotocolo;
Host : CHost; Nome: String;
Diretorio : CDir; Tamanho : integer;
Arquivo : CArq; formato : CformatoImg;
ChamarURL():CArq; Mostrar():void;

LinkImagem
Borda : boolean;
Estilo : CEstilo;
MostrarNomeLink();

Problemas da Herana Mltipla

Superclasses
com atributos e mtodos com
o mesmo nome: Qual deles ser herdado ?
Ex: Carro + Lancha = CarroAnfbio, Carro e Lancha
tem o atributo motor.
Alguns
atributos ou mtodos herdados
podem no ser usados.
Ex: Caminho+Brinquedo = CaminhodeBrinquedo,
CaminhodeBrinquedo mais briquedo que caminho.

13
27/09/2016

Relao entre classes


Herana Mista

Herana Mista = Herana Simples +


Complemento
Uma classe herda atributos e mtodos de
uma superclasse e complementa com
mtodos e atributos de outra classe.

Relao entre classes


Herana Mista
Pessoa Instrutor
nome=String; Disciplina=CDisc;
endereco=CEnd; CargaHorria= float;
idade=int;

AlunoInstrutor
Disciplinas[]= CDisc;
CDisc= CPeriodo;
PrevisaoFim= CPeriodo;

void AlterarNota(float nota);

14
27/09/2016

Relao entre classes


Herana Mista

class CPessoa {
class CInstrutor{
String nome;
CDisc Disciplina;
CEnd endereco;
float CargaHorria;
int idade;
}
}

class CAlunoInstrutor extends CPessoa implements


CInstrutor{
CDisc Disciplinas[];
CPeriodo CDisc;
CPeriodo PrevisaoFim;
void AlterarNota(float nota);
}

A tecnologia OO
Cinco palavras bsicas

Linguagem OO Linguagem Procedural


Classe Tipo
Objeto Varivel
Mtodos Procedimento/Funo
Herana Estruturas
Polimorfismo

15
27/09/2016

A tecnologia OO
Modelagem

Definio de classes Criao de objetos


Definio de Troca de mensagens
propriedades e Mudana da classe de
mtodos um objeto
Relacionamento entre Concorrncia/Coopera
classes o entre objetos

Cenrio Esttico
(tempo de compilao)

Operaes sobre Classes


Definio da estrutura e comportamento
Definio dos mtodos
Definio das relaes entre classes

16
27/09/2016

Cenrio Dinmico
(tempo de execuo)

Operaes sobre Objetos


Criao
Destruio
Atribuio, comparao
Transformao
Aplicao de operaes

Benefcios da
Orientao a Objetos
Reusabilidade
Estabilidade
Confiabilidade
Integridade
Melhorcomunicao com o usurio
Modelagem mais realstica
Manuteno mais fcil

17