Anda di halaman 1dari 68

Orientao a

objetos -
introduo
Algumas keywords
questes!
1.
Por que programar
Orientado a Objetos?
2.
mais fcil?
3.
sempre a melhor
escolha?
4.
J leram sobre?
Vantagens
Prtica de programao
Segurana
Visibilidade por escopo
Reutilizao de cdigo
Fcil manuteno
A
Classe
Abstrao do que h em comum (em termos de
caractersticas e comportamentos) a um
conjunto de objetos. Classe
atributos

mtodos
Classes Mamfero

data de nascimento
peso
energia

comer
mover
mamar
Classes Empresa

Nome
CNPJ
funcionarios[]

Contratar
Demitir

Classes Empresa

Nome
Funcionario

Nome
CNPJ CPF
funcionarios[] Salario

Contratar Trabalhar
Demitir Fofocar
Bater ponto
Objeto?
Objeto (1/2)
Combina a estrutura de dados (atributos) e o
comportamento dos dados (operaes/mtodos)
em uma nica entidade.
Um objeto pode ser definido como um conceito,
uma abstrao, algo com limites ntidos e
significado em relao ao mundo
Objeto (2/2)
Objetos servem como uma base real para a
elaborao de um sistema consistente com a
realidade modelada.
Ex.: Um Livro, um Telefone, uma Faculdade, um
Produto, um Aluno, um Professor.
Classe e objeto (1/2)
Classe o que projetamos
Objeto o que criamos a partir da classe
As classes esto para os objetos assim
como as plantas arquitetnicas esto para
as casas
Classe e objeto (2/2)

? ?
Carro

marca
modelo
ano
potncia
...

acelerar
trocarMarcha
a implementao de um
servio prestado pelo
objeto para outros objetos
ou a si mesmo
ContaBancaria

A Classe agencia
conta
saldo
limite
Analisando o simples
depositar
diagrama, vamos sacar
desenvolver uma classe verificar
saldo
que representa nossa
conta bancria
Conta Place your screenshot here

bancaria
Criando a classe
Conta
bancaria Place your screenshot here

Criando os
atributos
Note que os atributos so
declarados no corpo da
classe, ao contrrio das
variveis locais que eram
declaradas dentro no
mtodo main
Observe tambm que essa
foi nossa primeira classe
que no executvel!
Como eu crio uma
conta?
Criando uma conta bancria
A ContaBancaria um tipo de dado que ns
criamos.
um tipo por referncia, assim como o
Scanner, BufferedReader e o String
No uma classe executvel.
Para executar precisamos de uma classe no
projeto que tenho o mtodo main
A classe
executvel
Classe
principal Place your screenshot here

A classe que utiliza


a nossa
ContaBancaria
Tente!
Como fao para imprimir o valor
total que pode ser sacado da
conta?
Classe
principal
Place your screenshot here

Imprimindo o total
disponvel
Crie!
Um loop em que o usurio tenha
um menu para manipular sua
conta, que dever incluir:
Depositar, sacar, verificar saldo e
verificar valor disponvel
Mais exerccios!
Cachorro

Cachorro raa
nome
porte
pedigree
Desenvolva uma classe peso
Place your screenshot here
data de
Principal que crie um nascimento

Cachorro e em seguida
energia

possibilite imprimir os
valores de seus atributos
CLIENTE Cliente
Nome
Cpf
Desenvolva uma classe Data de nasc.
Qtd de
Principal que crie um dinheiro
Place your screenshot here

Cliente e teste se ele tem


dinheiro suficiente para
fazer uma compra de um
valor X
Produto Produto

Desenvolva uma classe Cdigo


Nome
Principal que crie um Produto e Valor de compra
Valor de venda
em um loop de menu permita: Qtd em estoque
Place your screenshot here
Estoque mnimo
Verificar valor de compra e
venda, apresentar total
investido em estoque e lucro
que se ter ao vender todo
estoque
Funcionrio Funcionario

Desenvolva uma classe Nome

Principal que crie um Cpf


Data de nasc.
Funcionrio, e em um loop se Salario
Data de admisso
tenha um simulador, com Cargo
Place your screenshot here
Energia
possveis aes do funcionrio, credibilidade
tais como: trabalhar, tomar
caf, fofocar, solicitar aumento,
dormir, etc
Estas aes devem manipular
os atributos da classe
Vamos
Misturar
Cliente com conta bancria e
cachorro
Altere o projeto "Cliente", para que ele possua
uma "Conta Bancria" e um "Cachorro".
Classe MiniMercado
Crie uma classe MiniMercado, que ter como
atributo um Funcionario, muitos produtos e
muitos Clientes.
Classe Principal
Crie uma classe Principal, que dever criar um
Mercado e efetuar algumas transaes no
mesmo, tais como:
Controlar a entrada de um produto j cadastrado
Dar baixa em estoque
Diminuir o dinheiro do cliente aps a compra
Classe Principal
Tudo implementado no MiniMercado?
Importante!
Em uma boa orientao a objetos, as
responsabilidades e validaes que dizem
respeito a uma classe X, esto na classe X.
E como faremos
isso?
Mtodos!
Mtodos ou operaes!
Conceito: a implementao de um servio
prestado pelo objeto para os outros objetos, ou
a si mesmo.
Revendo
nossa classe
funcionrio
Funcionrio Funcionario

Desenvolva uma classe Nome

Principal que crie um Cpf


Data de nasc.
Funcionrio, e em um loop se Salario
Data de admisso
tenha um simulador, com Cargo
Place your screenshot here
Energia
possveis aes do funcionrio, credibilidade
tais como: trabalhar, tomar
caf, fofocar, solicitar aumento,
dormir, etc
Estas aes devem manipular
os atributos da classe
Funcionrio Funcionario

Desenvolva uma classe Nome

Principal que crie um Cpf


Data de nasc.
Funcionrio, e em um loop se Salario
Data de admisso
tenha um simulador, com Cargo
Place your screenshot here
Energia
possveis aes do funcionrio, credibilidade
tais como: trabalhar, tomar
caf, fofocar, solicitar aumento,
dormir, etc
Estas aes devem manipular
os atributos da classe
Funcionrio Funcionario

Nome
Desenvolva uma classe Cpf
Principal que crie um Data de nasc.
Salario
Funcionrio, e em um loop se Data de admisso
Cargo
tenha um simulador, com Place your screenshot here
Energia

possveis aes do funcionrio,


credibilidade

tais como: trabalhar, tomar Trabalhar()


tomarCafe()
caf, fofocar, solicitar aumento, fofocar()
SolicitarAumento()
etc dormir()

Estas aes devem manipular


os atributos da classe
Como fao?
Corpo dos mtodos
Onde est "void" a especificao do
tipo de retorno do mtodo, onde void
significa que o mtodo no tem
retorno

Place your screenshot here


"trabalhar" o nome do mtodo.

Entre os parnteses onde pode ser


especificado os parmetros para a
execuo dos mtodos

Entre as chaves vamos implementar a


lgica do mtodo, que ir manipular os
atributos.
Como fao?
A implementao

Note a importncia da documentao


do mtodo para esclarecer o seu
funcionamento.
Place your screenshot here

O mtodo trabalhar manipula os


atributos da classe, e no mais devem
ser manipulados diretamente quando
a ao trabalhar requerida
Podemos
deixar mais
dinmico...
A classe
RANDOM
Classe Random
Muitos jogos utilizam valores randmicos para
definir probabilidades de eventos ocorrerem
// Instncia da classe
Random valor = new Random();
Como randomizo
um nmero entre
0e9
Mtodo nextInt
O mtodo nextInt recebe como argumento um
valor limite para a gerao do nmero randomico,
que tem como base o valor 0.
// Randomizando um nmero entre 0 e 9
Random valor = new Random();
int num = valor.nextInt(10);
Experimente!
E se eu quiser
randomizar entre
10 e 99?
Mtodo nextInt
Basta somar um nmero no valor inicial.
// Randomizando um nmero entre 10 e 99
Random valor = new Random();
int num = 10+valor.nextInt(90);

Experimente!
Atividade
Implemente!
Mtodo tomarCafe, que pode recuperar de 0 a
15 de energia.
Mtodo solicitarAumento, onde enquanto maior
for a credibilidade do Funcionrio, maior a
chance de obter sucesso na solicitao. O
aumento obtido dever ser entre 5 e 15%.
A implementao Place your screenshot here

Observe que agora a cada


execuo do mtodo "tomarCafe",
a recuperao da energia ser um
valor entre 0 e 15
A implementao

Place your screenshot here


Tambm existem
outros mtodos para
randomizar outros
tipos de dados.
Investigue!
Veiculo

Veculo Modelo
Marca
Ano
Potencia
Desenvolva uma classe estado(lig/des)
Num. de marchas
Principal que crie um Veculo, e Marcha atual
Tam. do tanque
em um loop se tenha um Nvel
Place do combustvel
your screenshot here

simulador, com possveis aes Ligar()


Acelerar()
do veculo, conforme os Parar()
aumentarMarcha()
mtodos sugeridos diminuirMarcha()
Buziar()
verificarDados()