Anda di halaman 1dari 34

Programao Orientada a Objetos

PROF. THIAGO DRUMMOND R. G. MOREIRA

O Mundo composto de Objetos !

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
Motor Cor Potncia Rodas substantivos

Comportamentos
Avanar Retroceder Parar Abastecer verbos

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
Atributo1:tipo=valor Atributo2:tipo=valor

Carro
Chassi: string Cor: integer Motor: Cmotor Ligar():void TemGasolina():boolean Virar(direo):void

operao1(argumentos): tipo-retorno operao2(argumentos): tipo-retorno

Definio de classe em Java


class Carro { String Chassi; int Cor; Cmotos Motor; void Ligar() { comandos }

Propriedades

Mtodos

boolean TemGasolina() {comandos} void Virar(direo) {comandos} }

Classe = Molde de Objetos


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

Objeto Carro: Instncia 2 Objeto Carro: Instncia 3

Instncias
class Aplicao { Carro carros[];

Tempo de Execuo Objeto Carro: Instncia 1

public static void main(String arg[]) { Carro car1, car2, car3; car1 = new Carro(); car2 = new Carro(); Instanciando Objetos car3 = new Carro(); if (car1.TemGasolina()) { car1.ligar();} if (car2.TemGasolina()) { car2.ligar();} } }

Objeto Carro: Instncia 2

Objeto Carro: Instncia 3

Encapsulamento

Propriedades e Mtodos Privados

Objeto 1

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

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)

Relaes entre Classes


Associao: Conexo fsica ou conceitual entre classes

Bomba

Controlador

Relaes entre Classes Associao


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

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

Relaes entre Classes


Agregao: Denota relao de parte/de

Empresa

Funcionrios

Relaes entre Objetos Agregao


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

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

Relao entre classes Herana


Pessoa
Nome: String Endereco: CEndereco idade: inteiro

Funcionrio
Salario: valor CartTrab: string Admissao: data AlterarSal(float valor):void;

Aluno
Disciplinas: lista CDisc Inicio: CPeriodo PrevisaoFim: CPeriodo AlterarNota(float nota):void;

Relao entre classes: Herana


class CPessoa { String nome; CEnd endereco; int idade; } class CFuncionario extends CPessoa { CValor salario; String cartrab; CData Admissao; void AlterarSal(float valor); } class CAluno extends CPessoa { CDisc Disciplinas[]; CPeriodo CDisc; CPeriodo PrevisaoFim; void AlterarNota(float nota); }

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
Salario: valor CartTrab: string Admissao: data AlterarSal(float valor):void;

Aluno
Disciplinas: lista CDisc Inicio: CPeriodo PrevisaoFim: CPeriodo AlterarNota(float nota):void;

Relao entre classes Herana Mltipla


Link
Protocolo : Cprotocolo; Host : CHost; Diretorio : CDir; Arquivo : CArq; ChamarURL():CArq;

Imagem
Nome: String; Tamanho : integer; formato : CformatoImg; 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.

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
nome=String; endereco=CEnd; idade=int;

Instrutor
Disciplina=CDisc; CargaHorria= float;

AlunoInstrutor
Disciplinas[]= CDisc; CDisc= CPeriodo; PrevisaoFim= CPeriodo; void AlterarNota(float nota);

Relao entre classes Herana Mista


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

class CAlunoInstrutor extends CPessoa implements CInstrutor{ CDisc Disciplinas[]; CPeriodo CDisc; CPeriodo PrevisaoFim; void AlterarNota(float nota); }

A tecnologia OO Cinco palavras bsicas


Linguagem OO Classe Objeto Mtodos Herana Polimorfismo Linguagem Procedural Tipo Varivel Procedimento/Funo Estruturas

A tecnologia OO Modelagem

Definio de classes Definio de propriedades e mtodos Relacionamento entre classes

Criao de objetos Troca de mensagens Mudana da classe de um objeto Concorrncia/Coopera o entre objetos

Cenrio Esttico (tempo de compilao)


Operaes sobre Classes
Definio da estrutura e comportamento Definio dos mtodos Definio das relaes entre classes

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 Melhor comunicao com o usurio Modelagem mais realstica Manuteno mais fcil

Anda mungkin juga menyukai