SlideShare uma empresa Scribd logo
Uma breve introdução a
Orientação a Objetos,
UML e Java
Agenda
Introdução a Orientação a Objetos
● Definição;
● Tudo é Objeto. Será?
● Resolvendo um problema (quase) real.
● Classe
● Herança
● Polimorfismo
● Encapsulamento
Ao final...
Você será capaz de:
● Entender o básico de Orientação a Objetos;
● Identificar e criar um Diagrama de Classe;
● Identificar uma composição de objetos;
● Entender a importância da herança entre
objetos e do polimorfismo.
Quem sou?
Hoje
● Senior Game Developer na Gazeus Games;
○ Maior empresa brasileira de jogos sociais.
No passado...
● VIVO, Ponto-Frio, Embratel, SEFAZ (Cupom Mania) e
TECPAR (Instituto de Tecnologia do Paraná);
● Consultoria para pequenas empresas de desenvolvimento de
software;
● Há 15 anos desenvolvendo softwares (profissionalmente) de
um total de 22 brincando com computadores (tk90!).
Introdução a Orientaçãoo a Objetos
Introdução a OO
Segundo a Wikipédia:
“A orientação a objetos é um paradigma de
análise, projeto e programação de sistemas
de software baseado na composição e
interação entre diversas unidades de
software chamadas de objetos.”
Introdução a OO
Existem quase 30 paradigmas de programação
e os principais (ou mais comuns) são:
● Imperativa (e.g. Fortran, BASIC e C)
● Funcional (e.g. Haskell, Scala e SQL)
● Declarativa (e.g. HTML e SQL)
● Orientada a Objetos (e.g. Java e C++)
Introdução a OO
Tudo é Objeto!
● Identidade;
○ O que o distingue de outros objetos?
● Possui características;
○ Dados armazenados “dentro” do objeto;
● Comportamento
○ Conjunto de ações que descrevem como o objeto
pode ser usado.
Desafio: vocês conseguem pensar em algo que não se enquadre nesta regra?
Introdução a OO
Minha caneta azul possui:
● Identidade: o que a difere das outras canetas
azuis existentes no mundo?
Introdução a OO
Minha caneta azul possui:
● Identidade: o que a difere das outras canetas
azuis existentes no mundo?
○ Esta caneta azul é minha e de mais ninguém.
Introdução a OO
Minha caneta azul possui:
● Identidade: o que a difere das outras canetas
azuis existentes no mundo?
○ Esta caneta azul é minha e de mais ninguém.
● Características: quais os dados desta caneta?
Introdução a OO
Minha caneta azul possui:
● Identidade: o que a difere das outras canetas
azuis existentes no mundo?
○ Esta caneta azul é minha e de mais ninguém.
● Características: quais os dados desta caneta?
○ Tinta: azul, preço: R$500 e recarregável: sim.
Introdução a OO
Minha caneta azul possui:
● Identidade: o que a difere das outras canetas
azuis existentes no mundo?
○ Esta caneta azul é minha e de mais ninguém.
● Características: quais os dados desta caneta?
○ Tinta: azul, preço: R$500 e recarregável: sim.
● Comportamento: quais ações posso realizar
com a caneta?
Introdução a OO
Minha caneta azul possui:
● Identidade: o que a difere das outras canetas
azuis existentes no mundo?
○ Esta caneta azul é minha e de mais ninguém.
● Características: quais os dados desta caneta?
○ Tinta: azul, preço: R$500 e recarregável: sim.
● Comportamento: quais ações posso realizar
com a caneta?
○ Escrever, tampar, destampar, recarregar, ...
Introdução a OO
Um fusca fabricado em 1977, preto e de placa
ABC-1234 como um Objeto:
● Identidade?
● Características?
● Comportamento?
Introdução a OO
Um fusca fabricado em 1977, preto e de placa
ABC-1234 como um Objeto:
● Identidade?
○ ABC-1234
● Características?
○ Cor: preto, ano de fabricação: 1977, fabricante:
Volkswagen
● Comportamento?
○ Ligar, desligar, acelerar, frear, ...
Introdução a OO
Definir um programa usando o conceito de
objetos vai forçá-lo a ver o problema a ser
resolvido baseado no que o objeto (ou coleção
de objetos) faz e/ou é capaz de fazer.
Introdução a OO
Definir um programa usando o conceito de
objetos vai forçá-lo a ver o problema a ser
resolvido baseado no que o objeto (ou coleção
de objetos) faz e/ou é capaz de fazer.
Modelar um programa como um conjunto de
procedimentos isolados?
Modelar um programa usando objetos com
nomes e termos reais!
Introdução a OO
Definir um programa usando o conceito de
objetos vai forçá-lo a ver o problema a ser
resolvido baseado no que o objeto (ou coleção
de objetos) faz e/ou é capaz de fazer.
Problema: empresa familiar produz artesanato,
possui website mas não realiza vendas online.
Introdução a OO
Definir um programa usando o conceito de
objetos vai forçá-lo a ver o problema a ser
resolvido baseado no que o objeto (ou coleção
de objetos) faz e/ou é capaz de fazer.
Problema: empresa familiar produz artesanato,
possui website mas não realiza vendas online e
em 1 mês irá à falência se não aumentar suas
vendas.
SOFTWARE DEVELOPMENT INC.
Introdução a Orientaçãoo a Objetos
Introdução a OO
Você é funcionário da ACME Software.
Um time de desenvolvedores (incluindo você) irá
criar um e-commerce simples.
Você está encarregado de começar a
documentar e criar os primeiros códigos.
Introdução a OO
São requisitos funcionais do sistema:
● Permitir que a empresa faça o cadastro de
produtos a serem vendidos;
● Permitir que o usuário realize a compra de um
único produto por vez.
Introdução a OO
São requisitos funcionais do sistema:
● Permitir que a empresa faça o cadastro de
produtos a serem vendidos;
Vela
Cor: vermelho
Peso: 500g
Preço: R$10
Boneca
Peso: 200g
Tecido: algodão
Preço: R$20
Introdução a OO
São requisitos funcionais do sistema:
● Permitir que o usuário realize a compra de um
único produto por vez.
Como será concluída a venda?
● Da forma mais simples possível.
Quais informações compõem uma venda?
Introdução a OO
São requisitos funcionais do sistema:
● Permitir que o usuário realize a compra de um
único produto por vez.
Joaquim José da Silva Xavier
Endereço de entrega
E-mail
Número do cartão de crédito
Nome do produto
Valor da venda
Introdução a OO
Vela e Boneca são Produtos:
● Compartilham de características semelhantes;
Biologia: gatos, cachorros, golfinhos e humanos
são mamíferos;
Introdução a OO
A compra por um cliente é um Registro de
Venda:
● Contém informações de entrega, cobrança e
produto vendido.
Introdução a OO
Produto Registro de Venda
Vela
Cor: vermelho
Peso: 500g
Preço: R$10
Boneca
Peso: 200g
Tecido: algodão
Preço: R$20
Joaquim José da Silva Xavier
Endereço de entrega
E-mail
Número do cartão de crédito
Nome do produto
Valor da venda
Introdução a Orientaçãoo a Objetos
O que define um Objeto?
● Identidade;
● Características;
● Comportamento.
Introdução a OO
Produto
Vela
Cor: vermelho
Peso: 500g
Preço: R$10
Boneca
Peso: 200g
Tecido: algodão
Preço: R$20
O que define um Objeto?
● Identidade;
○ Nome ou código do produto.
● Características;
○ Cor, peso, preço e tecido.
● Comportamento.
○ Vamos ver isso depois...
Introdução a OO
Produto
Vela
Cor: vermelho
Peso: 500g
Preço: R$10
Boneca
Peso: 200g
Tecido: algodão
Preço: R$20
Introdução a OO
Produto
+ nome
+ peso
+ preco
+ cor
+ tecido
O que define um Objeto?
● Identidade;
○ Nome ou código do produto.
● Características;
○ Cor, peso, preço e tecido.
● Comportamento.
○ Vamos ver isso depois...
Introdução a OO
Produto
+ nome : String
+ peso : Integer
+ preco : Double
+ cor : String
+ tecido : String
O que define um Objeto?
● Identidade;
○ Nome ou código do produto.
● Características;
○ Cor, peso, preço e tecido.
● Comportamento.
○ Vamos ver isso depois...
Introdução a OO
Produto
+ nome : String
+ peso : Integer
+ preco : Double
+ cor : String
+ tecido : String
Parabéns!
Você acaba
de criar seu
primeiro
diagrama
UML!
Diagrama de Classe
UML?
Introdução a OO
RegistroVenda
O que define um Objeto?
● Identidade;
● Características;
● Comportamento
Introdução a OO
RegistroVenda
+ codigoVenda
O que define um Objeto?
● Identidade;
○ Código da venda.
● Características;
● Comportamento.
Introdução a OO
RegistroVenda
+ codigoVenda
+ nomeCliente
+ emailCliente
+ enderecoEntrega
+ numeroCartaoCredito
O que define um Objeto?
● Identidade;
○ Código da venda.
● Características;
○ Dados do cliente.
● Comportamento.
O que define um Objeto?
● Identidade;
○ Código da venda.
● Características;
○ Dados do cliente e da venda.
● Comportamento;
○ ...
Introdução a OO
RegistroVenda
+ codigoVenda
+ nomeCliente
+ emailCliente
+ enderecoEntrega
+ numeroCartaoCredito
+ nomeProduto
+ valorVenda
O que define um Objeto?
● Identidade;
○ Código da venda.
● Características;
○ Dados do cliente e da venda.
● Comportamento;
○ Vamos ver isso depois...
Introdução a OO
RegistroVenda
+ codigoVenda
+ nomeCliente
+ emailCliente
+ enderecoEntrega
+ numeroCartaoCredito
+ nomeProduto
+ valorVenda
Introdução a OO
RegistroVenda
+ codigoVenda : Integer
+ nomeCliente : String
+ emailCliente : String
+ enderecoEntrega : String
+ numeroCartaoCredito : Integer
+ nomeProduto : String
+ valorVenda : Double
Produto
+ nome : String
+ peso : Integer
+ preco : Double
+ cor : String
+ tecido : String
Diagrama de Classe
Introdução a OO
Diagrama de Classe
RegistroVenda
+ codigoVenda : Integer
+ nomeCliente : String
+ emailCliente : String
+ enderecoEntrega : String
+ numeroCartaoCredito : Integer
+ nomeProduto : String
+ valorVenda : Double
Produto
+ nome : String
+ peso : Integer
+ preco : Double
+ cor : String
+ tecido : StringSerá possível melhorar
este diagrama?
Introdução a OO
Vela
Cor: vermelho
Peso: 500g
Preço: R$10
Boneca
Peso: 200g
Tecido: algodão
Preço: R$20
Introdução a OO
Vela
Cor: vermelho
Peso: 500g
Preço: R$10
Boneca
Peso: 200g
Tecido: algodão
Preço: R$20
Produto
+ nome : String
+ peso : Integer
+ preco : Double
Introdução a OO
Vela
Cor: vermelho
Peso: 500g
Preço: R$10
Boneca
Peso: 200g
Tecido: algodão
Preço: R$20
Produto
+ nome : String
+ peso : Integer
+ preco : Double
Vela
+ cor : String
Introdução a OO
Vela
Cor: vermelho
Peso: 500g
Preço: R$10
Boneca
Peso: 200g
Tecido: algodão
Preço: R$20
Produto
+ nome : String
+ peso : Integer
+ preco : Double
Vela
+ cor : String
Boneca
+ tecido : String
Introdução a OO
Vela
Cor: vermelho
Peso: 500g
Preço: R$10
Boneca
Peso: 200g
Tecido: algodão
Preço: R$20
Produto
+ nome : String
+ peso : Integer
+ preco : Double
Vela
+ cor : String
Boneca
+ tecido : String
Introdução a OO
Produto
+ nome : String
+ peso : Integer
+ preco : Double
Vela
+ cor : String
Boneca
+ tecido : String
Em Orientação a Objetos, herança é um
mecanismo que permite que você crie uma nova
classe com base em uma já existente, aproveitando
suas propriedades e comportamentos.
Introdução a OO
Produto
+ nome : String
+ peso : Integer
+ preco : Double
Vela
+ nome : String
+ peso : Integer
+ preco : Double
+ cor : String
Boneca
+ nome : String
+ peso : Integer
+ preco : Double
+ tecido : String
Em Orientação a Objetos, herança é um
mecanismo que permite que você crie uma nova
classe com base em uma já existente, aproveitando
suas propriedades e comportamentos.
Introdução a OO
RegistroVenda
+ codigoVenda : Integer
+ nomeCliente : String
+ emailCliente : String
+ enderecoEntrega : String
+ numeroCartaoCredito : Integer
+ nomeProduto : String
+ valorVenda : Double
Continuando com
nosso processo de
melhoria...
Introdução a OO
Cliente
+ cpf : Integer
+ nomeCliente : String
+ emailCliente : String
RegistroVenda
+ codigoVenda : Integer
+ nomeCliente : String
+ emailCliente : String
+ enderecoEntrega : String
+ numeroCartaoCredito : Integer
+ nomeProduto : String
+ valorVenda : Double
Introdução a OO
Cliente
+ cpf : Integer
+ nomeCliente : String
+ emailCliente : String
RegistroVenda
+ codigoVenda : Integer
+ cliente : Cliente
+ enderecoEntrega : String
+ numeroCartaoCredito : Integer
+ nomeProduto : String
+ valorVenda : Double
Introdução a OO
Cliente
+ cpf : Integer
+ nomeCliente : String
+ emailCliente : String
RegistroVenda
+ codigoVenda : Integer
+ cliente : Cliente
+ enderecoEntrega : String
+ numeroCartaoCredito : Integer
+ nomeProduto : String
+ valorVenda : Double
Endereco
+ logradouro : String
+ numero : String
+ complemento : String
+ cidade : String
+ uf : String
+ cep : Integer
Introdução a OO
Cliente
+ cpf : Integer
+ nomeCliente : String
+ emailCliente : String
RegistroVenda
+ codigoVenda : Integer
+ cliente : Cliente
+ enderecoEntrega : Endereco
+ enderecoCobranca : Endereco
+ numeroCartaoCredito : Integer
+ nomeProduto : String
+ valorVenda : Double
Endereco
+ logradouro : String
+ numero : String
+ complemento : String
+ cidade : String
+ uf : String
+ cep : Integer
Introdução a OO
Cliente
+ cpf : Integer
+ nomeCliente : String
+ emailCliente : String
RegistroVenda
+ codigoVenda : Integer
+ cliente : Cliente
+ enderecoEntrega : Endereco
+ enderecoCobranca : Endereco
+ numeroCartaoCredito : Integer
+ nomeProduto : String
+ valorVenda : Double
Endereco
+ logradouro : String
+ numero : String
+ complemento : String
+ cidade : String
+ uf : String
+ cep : Integer
Diagrama de Classe
Introdução a OO
Cliente
+ cpf : Integer
+ nomeCliente : String
+ emailCliente : String
RegistroVenda
+ codigoVenda : Integer
+ cliente : Cliente
+ enderecoEntrega : Endereco
+ enderecoCobranca : Endereco
+ numeroCartaoCredito : Integer
+ nomeProduto : String
+ valorVenda : Double
Endereco
+ logradouro : String
+ numero : String
+ complemento : String
+ cidade : String
+ uf : String
+ cep : Integer
Produto
+ nome : String
+ peso : Integer
+ preco : Double
Vela
+ cor : String
Boneca
+ tecido : String
Diagrama de Classe
Introdução a OO
Cliente
+ cpf : Integer
+ nomeCliente : String
+ emailCliente : String
RegistroVenda
+ codigoVenda : Integer
+ cliente : Cliente
+ enderecoEntrega : Endereco
+ enderecoCobranca : Endereco
+ numeroCartaoCredito : Integer
+ nomeProduto : String
+ valorVenda : Double
Endereco
+ logradouro : String
+ numero : String
+ complemento : String
+ cidade : String
+ uf : String
+ cep : Integer
Produto
+ nome : String
+ peso : Integer
+ preco : Double
Vela
+ cor : String
Boneca
+ tecido : String
Introdução a OO
Relembrando o que é um Objeto...
● Identidade;
● Possui características;
● Comportamento
○ Conjunto de ações que descrevem como o objeto
pode ser usado.
Comportamento
● Conjunto de ações que descrevem como o
objeto pode ser usado.
Introdução a OO
Humano
+ nome : String
+ dataNascimento : Date
+ peso : Integer
+ produzirSom()
Comportamento
● Conjunto de ações que descrevem como o
objeto pode ser usado.
Introdução a OO
Humano
+ nome : String
+ dataNascimento : Date
+ peso : Integer
+ produzirSom()
public class Humano {
public String nome;
public Date dataNascimento;
public Integer peso;
public void produzirSom() {
System.out.println("Olá pessoal");
}
}
Seria impresso na tela...
Olá pessoal!
Introdução a OO
Humano
+ nome : String
+ dataNascimento : Date
+ peso : Integer
+ produzirSom()
public class Humano {
public String nome;
public Date dataNascimento;
public Integer peso;
public void produzirSom() {
System.out.println("Olá pessoal!");
}
}
Seria impresso na tela...
Olá pessoal!
Introdução a OO
Humano
+ nome : String
+ dataNascimento : Date
+ peso : Integer
+ produzirSom()
public class Humano {
public String nome;
public Date dataNascimento;
public Integer peso;
public void produzirSom() {
System.out.println("Olá pessoal!");
}
}
Parabéns!
Você acaba de
entender seu
primeiro código
Java!
Introdução a OO
Comportamento
● Conjunto de ações que descrevem como o
objeto pode ser usado.
Mamifero
+ nome : String
+ dataNascimento : Date
+ peso
+ produzirSom()
Cão Humano Gato
Introdução a OO
Comportamento
● Conjunto de ações que descrevem como o
objeto pode ser usado.
Mamifero
+ nome : String
+ dataNascimento : Date
+ peso
+ produzirSom()
Cão
+ ...
Humano
+ ...
Gato
+ ...
Introdução a OO
A herança permite que novas classes
aproveitem atributos e comportamentos.
Mamifero
+ nome : String
+ dataNascimento : Date
+ peso
+ produzirSom()
Cão
+ ...
Humano
+ ...
Gato
+ ...
Introdução a OO
Mamifero
+ nome : String
+ dataNascimento : Date
+ peso
+ produzirSom()
Cão
+ produzirSom()
Humano
+ produzirSom()
Gato
+ produzirSom()
Introdução a OO
Cão: Olá pessoal!
Humano: Olá pessoal!
Gato: Olá pessoal!
Mamifero
+ nome : String
+ dataNascimento : Date
+ peso
+ produzirSom()
Cão
+ produzirSom()
Humano
+ produzirSom()
Gato
+ produzirSom()
Cão: Olá pessoal!
Humano: Olá pessoal!
Gato: Olá pessoal!
WHAT ...?
Introdução a OO
Introdução a OO
Solução: declarar na classe base e implementar
o método apenas nas classes herdeiras.
Palavra-chave: abstract.
Mamifero
+ nome : String
+ dataNascimento : Date
+ peso
+ produzirSom()
Cão
+ produzirSom()
Humano
+ produzirSom()
Gato
+ produzirSom()
Introdução a OO
public class Mamifero {
public String nome;
public Date dataNascimento;
public Integer peso;
public abstract void produzirSom();
}
public class Cao extends Mamifero {
public void produzirSom() {
System.out.println("Au au!");
}
}
public class Humano extends Mamifero {
public void produzirSom() {
System.out.println("Olá pessoal!");
}
}
public class Gato extends Mamifero {
public void produzirSom() {
System.out.println("Miau!");
}
}
Introdução a OO
public class Mamifero {
public String nome;
public Date dataNascimento;
public Integer peso;
public abstract void produzirSom();
}
public class Cao extends Mamifero {
public void produzirSom() {
System.out.println("Au au!");
}
}
public class Humano extends Mamifero {
public void produzirSom() {
System.out.println("Olá pessoal!");
}
}
public class Gato extends Mamifero {
public void produzirSom() {
System.out.println("Miau!");
}
}
Cão: Au au!
Humano: Olá pessoal!
Gato: Miau!
Referência Bibliográfica
● Sams Teach Yourself Object Oriented Programming in 21 Days - 2002 - Sams
Publishing - Tony Sintes
● Head First Object-Oriented Analysis & Design, O'Reilly, McLaughlin et. al., 2007
● ROY, Peter Van. Programming Paradigms for Dummies: What Every Programmer
Should Know. Disponível em <http://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf>.
Acesso em: 10 maio 2013.
● COHEN, Marcelo. Introdução à Programação Orientada a Objetos. Disponível em
<http://www.inf.pucrs.br/flash/lapro2/lapro2_1.pdf>. Acesso em: 10 maio 2013.
● WIKIPEDIA, Orientação a Objetos. Disponível em <http://pt.wikipedia.
org/wiki/Orientação_a_objetos>. Acesso em: 10 maio 2013.
● COSTA, André Luiz Monteiro da. Orientação a Objetos na Prática. Disponível em
<http://www.slideshare.net/tiinfnet/orientao-a-objetos-na-prtica>. Acesso em: 10
maio 2013.

Mais conteúdo relacionado

Destaque

Programação orientada a_objetos
Programação orientada a_objetosProgramação orientada a_objetos
Programação orientada a_objetos
Claudio Araujo
 
Religiões asiáticas
Religiões asiáticasReligiões asiáticas
Religiões asiáticas
flaviocosac
 
Análise e Projeto de Sistemas com UML e Java
Análise e Projeto de Sistemas com UML e JavaAnálise e Projeto de Sistemas com UML e Java
Análise e Projeto de Sistemas com UML e Java
armeniocardoso
 
Apostila java completo
Apostila java completoApostila java completo
Apostila java completo
Sliedesharessbarbosa
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
Moacir Jóse Ferreira Junior Ferreira
 
Asia apresentação
Asia   apresentaçãoAsia   apresentação
Asia apresentação
robertobraz
 
Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)
Luis Borges Gouveia
 
Parte 2 linguística geral saussure - apresentação
Parte 2   linguística geral saussure - apresentaçãoParte 2   linguística geral saussure - apresentação
Parte 2 linguística geral saussure - apresentação
Mariana Correia
 
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
Microsoft
 
Logica Programação. ...
Logica Programação. ...Logica Programação. ...
Logica Programação. ...
Miller Magalhaes
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
Marcio Marinho
 
Ásia - Aspectos físicos, Econômicos, Culturais e Sociais
Ásia - Aspectos físicos, Econômicos, Culturais e SociaisÁsia - Aspectos físicos, Econômicos, Culturais e Sociais
Ásia - Aspectos físicos, Econômicos, Culturais e Sociais
Bruno Araújo Oliveira
 
Ásia
ÁsiaÁsia

Destaque (13)

Programação orientada a_objetos
Programação orientada a_objetosProgramação orientada a_objetos
Programação orientada a_objetos
 
Religiões asiáticas
Religiões asiáticasReligiões asiáticas
Religiões asiáticas
 
Análise e Projeto de Sistemas com UML e Java
Análise e Projeto de Sistemas com UML e JavaAnálise e Projeto de Sistemas com UML e Java
Análise e Projeto de Sistemas com UML e Java
 
Apostila java completo
Apostila java completoApostila java completo
Apostila java completo
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 
Asia apresentação
Asia   apresentaçãoAsia   apresentação
Asia apresentação
 
Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)Introdução ao JAVA (linguagem de programação WEB)
Introdução ao JAVA (linguagem de programação WEB)
 
Parte 2 linguística geral saussure - apresentação
Parte 2   linguística geral saussure - apresentaçãoParte 2   linguística geral saussure - apresentação
Parte 2 linguística geral saussure - apresentação
 
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
 
Logica Programação. ...
Logica Programação. ...Logica Programação. ...
Logica Programação. ...
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Ásia - Aspectos físicos, Econômicos, Culturais e Sociais
Ásia - Aspectos físicos, Econômicos, Culturais e SociaisÁsia - Aspectos físicos, Econômicos, Culturais e Sociais
Ásia - Aspectos físicos, Econômicos, Culturais e Sociais
 
Ásia
ÁsiaÁsia
Ásia
 

Semelhante a Introdução a Orientaçãoo a Objetos

Conceito, Linha Criativa e Execução
Conceito, Linha Criativa e ExecuçãoConceito, Linha Criativa e Execução
Conceito, Linha Criativa e Execução
Luiz Otavio Medeiros
 
Pesquisa e Experimentação Prática em Design
Pesquisa e Experimentação Prática em DesignPesquisa e Experimentação Prática em Design
Pesquisa e Experimentação Prática em Design
Carolina Palhano
 
TDC2016SP - Trilha UX Design
TDC2016SP - Trilha UX DesignTDC2016SP - Trilha UX Design
TDC2016SP - Trilha UX Design
tdc-globalcode
 
Oficina de Carreira e Currículos da Contratado.me na SEQEP 2017
Oficina de Carreira e Currículos da Contratado.me na SEQEP 2017Oficina de Carreira e Currículos da Contratado.me na SEQEP 2017
Oficina de Carreira e Currículos da Contratado.me na SEQEP 2017
Mateus Alves de Pinho
 
Oficina de Carreira e Currículos da Contratado.me na SEQEP 2017
Oficina de Carreira e Currículos da Contratado.me na SEQEP 2017Oficina de Carreira e Currículos da Contratado.me na SEQEP 2017
Oficina de Carreira e Currículos da Contratado.me na SEQEP 2017
Contratado.me
 
Conceito, Linha Criativa e Execução
Conceito, Linha Criativa e ExecuçãoConceito, Linha Criativa e Execução
Conceito, Linha Criativa e Execução
Doisnovemeia Publicidade
 
Palestra Eureca - SGE Unicamp 2014
Palestra Eureca - SGE Unicamp 2014Palestra Eureca - SGE Unicamp 2014
Palestra Eureca - SGE Unicamp 2014
Eureca!
 
Uma revolução liderada pela criatividade
Uma revolução liderada pela criatividadeUma revolução liderada pela criatividade
Uma revolução liderada pela criatividade
Hanck
 
Palestra: Sites 8x mais persuasivas 2016 - Slides
Palestra: Sites 8x mais persuasivas 2016 - SlidesPalestra: Sites 8x mais persuasivas 2016 - Slides
Palestra: Sites 8x mais persuasivas 2016 - Slides
Leonardo Passos
 
Como construir produtos que resolvem problemas reais.pdf
Como construir produtos que resolvem problemas reais.pdfComo construir produtos que resolvem problemas reais.pdf
Como construir produtos que resolvem problemas reais.pdf
Júlia Sousa
 
Palestra caro é o que não vale - ExpoVendaMais 2006
Palestra caro é o que não vale - ExpoVendaMais 2006Palestra caro é o que não vale - ExpoVendaMais 2006
Palestra caro é o que não vale - ExpoVendaMais 2006
INSTITUTO MVC
 
Como planejar suas vendas em 2017 com o Google
Como planejar suas vendas em 2017 com o GoogleComo planejar suas vendas em 2017 com o Google
Como planejar suas vendas em 2017 com o Google
Mendelson Thomé
 
Palestra Marketing Pessoal
Palestra Marketing PessoalPalestra Marketing Pessoal
Palestra Marketing Pessoal
Alexandre Conte
 
Marketing Pessoal versão 2012
Marketing Pessoal versão 2012Marketing Pessoal versão 2012
Marketing Pessoal versão 2012
Milton Henrique do Couto Neto
 
Jornada Projetos Culturais - AULA 3 | Marketing | Kluk Neto - Setembro de 201...
Jornada Projetos Culturais - AULA 3 | Marketing | Kluk Neto - Setembro de 201...Jornada Projetos Culturais - AULA 3 | Marketing | Kluk Neto - Setembro de 201...
Jornada Projetos Culturais - AULA 3 | Marketing | Kluk Neto - Setembro de 201...
Cultura e Mercado
 
Fast track - Fundamentos do Marketing Digital - Aldeia Coworking
Fast track - Fundamentos do Marketing Digital - Aldeia CoworkingFast track - Fundamentos do Marketing Digital - Aldeia Coworking
Fast track - Fundamentos do Marketing Digital - Aldeia Coworking
Aldeia Coworking
 
Espaço otaku
Espaço otakuEspaço otaku
Espaço otaku
kelly20oliveira
 
Slides De Vendedor Para Gerente De Clientes261108
Slides De Vendedor Para Gerente De Clientes261108Slides De Vendedor Para Gerente De Clientes261108
Slides De Vendedor Para Gerente De Clientes261108
Ricardo Jordão Magalhaes
 
Habilidades sociais no mundo do trabalho (Aula 01)
Habilidades sociais no mundo do trabalho (Aula 01)Habilidades sociais no mundo do trabalho (Aula 01)
Habilidades sociais no mundo do trabalho (Aula 01)
Henrique
 
Freelancer Lifestyle no WDS 2015
Freelancer Lifestyle no WDS 2015Freelancer Lifestyle no WDS 2015
Freelancer Lifestyle no WDS 2015
Henrique Bastos
 

Semelhante a Introdução a Orientaçãoo a Objetos (20)

Conceito, Linha Criativa e Execução
Conceito, Linha Criativa e ExecuçãoConceito, Linha Criativa e Execução
Conceito, Linha Criativa e Execução
 
Pesquisa e Experimentação Prática em Design
Pesquisa e Experimentação Prática em DesignPesquisa e Experimentação Prática em Design
Pesquisa e Experimentação Prática em Design
 
TDC2016SP - Trilha UX Design
TDC2016SP - Trilha UX DesignTDC2016SP - Trilha UX Design
TDC2016SP - Trilha UX Design
 
Oficina de Carreira e Currículos da Contratado.me na SEQEP 2017
Oficina de Carreira e Currículos da Contratado.me na SEQEP 2017Oficina de Carreira e Currículos da Contratado.me na SEQEP 2017
Oficina de Carreira e Currículos da Contratado.me na SEQEP 2017
 
Oficina de Carreira e Currículos da Contratado.me na SEQEP 2017
Oficina de Carreira e Currículos da Contratado.me na SEQEP 2017Oficina de Carreira e Currículos da Contratado.me na SEQEP 2017
Oficina de Carreira e Currículos da Contratado.me na SEQEP 2017
 
Conceito, Linha Criativa e Execução
Conceito, Linha Criativa e ExecuçãoConceito, Linha Criativa e Execução
Conceito, Linha Criativa e Execução
 
Palestra Eureca - SGE Unicamp 2014
Palestra Eureca - SGE Unicamp 2014Palestra Eureca - SGE Unicamp 2014
Palestra Eureca - SGE Unicamp 2014
 
Uma revolução liderada pela criatividade
Uma revolução liderada pela criatividadeUma revolução liderada pela criatividade
Uma revolução liderada pela criatividade
 
Palestra: Sites 8x mais persuasivas 2016 - Slides
Palestra: Sites 8x mais persuasivas 2016 - SlidesPalestra: Sites 8x mais persuasivas 2016 - Slides
Palestra: Sites 8x mais persuasivas 2016 - Slides
 
Como construir produtos que resolvem problemas reais.pdf
Como construir produtos que resolvem problemas reais.pdfComo construir produtos que resolvem problemas reais.pdf
Como construir produtos que resolvem problemas reais.pdf
 
Palestra caro é o que não vale - ExpoVendaMais 2006
Palestra caro é o que não vale - ExpoVendaMais 2006Palestra caro é o que não vale - ExpoVendaMais 2006
Palestra caro é o que não vale - ExpoVendaMais 2006
 
Como planejar suas vendas em 2017 com o Google
Como planejar suas vendas em 2017 com o GoogleComo planejar suas vendas em 2017 com o Google
Como planejar suas vendas em 2017 com o Google
 
Palestra Marketing Pessoal
Palestra Marketing PessoalPalestra Marketing Pessoal
Palestra Marketing Pessoal
 
Marketing Pessoal versão 2012
Marketing Pessoal versão 2012Marketing Pessoal versão 2012
Marketing Pessoal versão 2012
 
Jornada Projetos Culturais - AULA 3 | Marketing | Kluk Neto - Setembro de 201...
Jornada Projetos Culturais - AULA 3 | Marketing | Kluk Neto - Setembro de 201...Jornada Projetos Culturais - AULA 3 | Marketing | Kluk Neto - Setembro de 201...
Jornada Projetos Culturais - AULA 3 | Marketing | Kluk Neto - Setembro de 201...
 
Fast track - Fundamentos do Marketing Digital - Aldeia Coworking
Fast track - Fundamentos do Marketing Digital - Aldeia CoworkingFast track - Fundamentos do Marketing Digital - Aldeia Coworking
Fast track - Fundamentos do Marketing Digital - Aldeia Coworking
 
Espaço otaku
Espaço otakuEspaço otaku
Espaço otaku
 
Slides De Vendedor Para Gerente De Clientes261108
Slides De Vendedor Para Gerente De Clientes261108Slides De Vendedor Para Gerente De Clientes261108
Slides De Vendedor Para Gerente De Clientes261108
 
Habilidades sociais no mundo do trabalho (Aula 01)
Habilidades sociais no mundo do trabalho (Aula 01)Habilidades sociais no mundo do trabalho (Aula 01)
Habilidades sociais no mundo do trabalho (Aula 01)
 
Freelancer Lifestyle no WDS 2015
Freelancer Lifestyle no WDS 2015Freelancer Lifestyle no WDS 2015
Freelancer Lifestyle no WDS 2015
 

Introdução a Orientaçãoo a Objetos

  • 1. Uma breve introdução a Orientação a Objetos, UML e Java
  • 2. Agenda Introdução a Orientação a Objetos ● Definição; ● Tudo é Objeto. Será? ● Resolvendo um problema (quase) real. ● Classe ● Herança ● Polimorfismo ● Encapsulamento
  • 3. Ao final... Você será capaz de: ● Entender o básico de Orientação a Objetos; ● Identificar e criar um Diagrama de Classe; ● Identificar uma composição de objetos; ● Entender a importância da herança entre objetos e do polimorfismo.
  • 4. Quem sou? Hoje ● Senior Game Developer na Gazeus Games; ○ Maior empresa brasileira de jogos sociais. No passado... ● VIVO, Ponto-Frio, Embratel, SEFAZ (Cupom Mania) e TECPAR (Instituto de Tecnologia do Paraná); ● Consultoria para pequenas empresas de desenvolvimento de software; ● Há 15 anos desenvolvendo softwares (profissionalmente) de um total de 22 brincando com computadores (tk90!).
  • 6. Introdução a OO Segundo a Wikipédia: “A orientação a objetos é um paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos.”
  • 7. Introdução a OO Existem quase 30 paradigmas de programação e os principais (ou mais comuns) são: ● Imperativa (e.g. Fortran, BASIC e C) ● Funcional (e.g. Haskell, Scala e SQL) ● Declarativa (e.g. HTML e SQL) ● Orientada a Objetos (e.g. Java e C++)
  • 8. Introdução a OO Tudo é Objeto! ● Identidade; ○ O que o distingue de outros objetos? ● Possui características; ○ Dados armazenados “dentro” do objeto; ● Comportamento ○ Conjunto de ações que descrevem como o objeto pode ser usado. Desafio: vocês conseguem pensar em algo que não se enquadre nesta regra?
  • 9. Introdução a OO Minha caneta azul possui: ● Identidade: o que a difere das outras canetas azuis existentes no mundo?
  • 10. Introdução a OO Minha caneta azul possui: ● Identidade: o que a difere das outras canetas azuis existentes no mundo? ○ Esta caneta azul é minha e de mais ninguém.
  • 11. Introdução a OO Minha caneta azul possui: ● Identidade: o que a difere das outras canetas azuis existentes no mundo? ○ Esta caneta azul é minha e de mais ninguém. ● Características: quais os dados desta caneta?
  • 12. Introdução a OO Minha caneta azul possui: ● Identidade: o que a difere das outras canetas azuis existentes no mundo? ○ Esta caneta azul é minha e de mais ninguém. ● Características: quais os dados desta caneta? ○ Tinta: azul, preço: R$500 e recarregável: sim.
  • 13. Introdução a OO Minha caneta azul possui: ● Identidade: o que a difere das outras canetas azuis existentes no mundo? ○ Esta caneta azul é minha e de mais ninguém. ● Características: quais os dados desta caneta? ○ Tinta: azul, preço: R$500 e recarregável: sim. ● Comportamento: quais ações posso realizar com a caneta?
  • 14. Introdução a OO Minha caneta azul possui: ● Identidade: o que a difere das outras canetas azuis existentes no mundo? ○ Esta caneta azul é minha e de mais ninguém. ● Características: quais os dados desta caneta? ○ Tinta: azul, preço: R$500 e recarregável: sim. ● Comportamento: quais ações posso realizar com a caneta? ○ Escrever, tampar, destampar, recarregar, ...
  • 15. Introdução a OO Um fusca fabricado em 1977, preto e de placa ABC-1234 como um Objeto: ● Identidade? ● Características? ● Comportamento?
  • 16. Introdução a OO Um fusca fabricado em 1977, preto e de placa ABC-1234 como um Objeto: ● Identidade? ○ ABC-1234 ● Características? ○ Cor: preto, ano de fabricação: 1977, fabricante: Volkswagen ● Comportamento? ○ Ligar, desligar, acelerar, frear, ...
  • 17. Introdução a OO Definir um programa usando o conceito de objetos vai forçá-lo a ver o problema a ser resolvido baseado no que o objeto (ou coleção de objetos) faz e/ou é capaz de fazer.
  • 18. Introdução a OO Definir um programa usando o conceito de objetos vai forçá-lo a ver o problema a ser resolvido baseado no que o objeto (ou coleção de objetos) faz e/ou é capaz de fazer. Modelar um programa como um conjunto de procedimentos isolados? Modelar um programa usando objetos com nomes e termos reais!
  • 19. Introdução a OO Definir um programa usando o conceito de objetos vai forçá-lo a ver o problema a ser resolvido baseado no que o objeto (ou coleção de objetos) faz e/ou é capaz de fazer. Problema: empresa familiar produz artesanato, possui website mas não realiza vendas online.
  • 20. Introdução a OO Definir um programa usando o conceito de objetos vai forçá-lo a ver o problema a ser resolvido baseado no que o objeto (ou coleção de objetos) faz e/ou é capaz de fazer. Problema: empresa familiar produz artesanato, possui website mas não realiza vendas online e em 1 mês irá à falência se não aumentar suas vendas.
  • 23. Introdução a OO Você é funcionário da ACME Software. Um time de desenvolvedores (incluindo você) irá criar um e-commerce simples. Você está encarregado de começar a documentar e criar os primeiros códigos.
  • 24. Introdução a OO São requisitos funcionais do sistema: ● Permitir que a empresa faça o cadastro de produtos a serem vendidos; ● Permitir que o usuário realize a compra de um único produto por vez.
  • 25. Introdução a OO São requisitos funcionais do sistema: ● Permitir que a empresa faça o cadastro de produtos a serem vendidos; Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20
  • 26. Introdução a OO São requisitos funcionais do sistema: ● Permitir que o usuário realize a compra de um único produto por vez. Como será concluída a venda? ● Da forma mais simples possível. Quais informações compõem uma venda?
  • 27. Introdução a OO São requisitos funcionais do sistema: ● Permitir que o usuário realize a compra de um único produto por vez. Joaquim José da Silva Xavier Endereço de entrega E-mail Número do cartão de crédito Nome do produto Valor da venda
  • 28. Introdução a OO Vela e Boneca são Produtos: ● Compartilham de características semelhantes; Biologia: gatos, cachorros, golfinhos e humanos são mamíferos;
  • 29. Introdução a OO A compra por um cliente é um Registro de Venda: ● Contém informações de entrega, cobrança e produto vendido.
  • 30. Introdução a OO Produto Registro de Venda Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20 Joaquim José da Silva Xavier Endereço de entrega E-mail Número do cartão de crédito Nome do produto Valor da venda
  • 32. O que define um Objeto? ● Identidade; ● Características; ● Comportamento. Introdução a OO Produto Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20
  • 33. O que define um Objeto? ● Identidade; ○ Nome ou código do produto. ● Características; ○ Cor, peso, preço e tecido. ● Comportamento. ○ Vamos ver isso depois... Introdução a OO Produto Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20
  • 34. Introdução a OO Produto + nome + peso + preco + cor + tecido O que define um Objeto? ● Identidade; ○ Nome ou código do produto. ● Características; ○ Cor, peso, preço e tecido. ● Comportamento. ○ Vamos ver isso depois...
  • 35. Introdução a OO Produto + nome : String + peso : Integer + preco : Double + cor : String + tecido : String O que define um Objeto? ● Identidade; ○ Nome ou código do produto. ● Características; ○ Cor, peso, preço e tecido. ● Comportamento. ○ Vamos ver isso depois...
  • 36. Introdução a OO Produto + nome : String + peso : Integer + preco : Double + cor : String + tecido : String Parabéns! Você acaba de criar seu primeiro diagrama UML! Diagrama de Classe
  • 37. UML?
  • 38. Introdução a OO RegistroVenda O que define um Objeto? ● Identidade; ● Características; ● Comportamento
  • 39. Introdução a OO RegistroVenda + codigoVenda O que define um Objeto? ● Identidade; ○ Código da venda. ● Características; ● Comportamento.
  • 40. Introdução a OO RegistroVenda + codigoVenda + nomeCliente + emailCliente + enderecoEntrega + numeroCartaoCredito O que define um Objeto? ● Identidade; ○ Código da venda. ● Características; ○ Dados do cliente. ● Comportamento.
  • 41. O que define um Objeto? ● Identidade; ○ Código da venda. ● Características; ○ Dados do cliente e da venda. ● Comportamento; ○ ... Introdução a OO RegistroVenda + codigoVenda + nomeCliente + emailCliente + enderecoEntrega + numeroCartaoCredito + nomeProduto + valorVenda
  • 42. O que define um Objeto? ● Identidade; ○ Código da venda. ● Características; ○ Dados do cliente e da venda. ● Comportamento; ○ Vamos ver isso depois... Introdução a OO RegistroVenda + codigoVenda + nomeCliente + emailCliente + enderecoEntrega + numeroCartaoCredito + nomeProduto + valorVenda
  • 43. Introdução a OO RegistroVenda + codigoVenda : Integer + nomeCliente : String + emailCliente : String + enderecoEntrega : String + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double Produto + nome : String + peso : Integer + preco : Double + cor : String + tecido : String Diagrama de Classe
  • 44. Introdução a OO Diagrama de Classe RegistroVenda + codigoVenda : Integer + nomeCliente : String + emailCliente : String + enderecoEntrega : String + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double Produto + nome : String + peso : Integer + preco : Double + cor : String + tecido : StringSerá possível melhorar este diagrama?
  • 45. Introdução a OO Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20
  • 46. Introdução a OO Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20 Produto + nome : String + peso : Integer + preco : Double
  • 47. Introdução a OO Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20 Produto + nome : String + peso : Integer + preco : Double Vela + cor : String
  • 48. Introdução a OO Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20 Produto + nome : String + peso : Integer + preco : Double Vela + cor : String Boneca + tecido : String
  • 49. Introdução a OO Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20 Produto + nome : String + peso : Integer + preco : Double Vela + cor : String Boneca + tecido : String
  • 50. Introdução a OO Produto + nome : String + peso : Integer + preco : Double Vela + cor : String Boneca + tecido : String Em Orientação a Objetos, herança é um mecanismo que permite que você crie uma nova classe com base em uma já existente, aproveitando suas propriedades e comportamentos.
  • 51. Introdução a OO Produto + nome : String + peso : Integer + preco : Double Vela + nome : String + peso : Integer + preco : Double + cor : String Boneca + nome : String + peso : Integer + preco : Double + tecido : String Em Orientação a Objetos, herança é um mecanismo que permite que você crie uma nova classe com base em uma já existente, aproveitando suas propriedades e comportamentos.
  • 52. Introdução a OO RegistroVenda + codigoVenda : Integer + nomeCliente : String + emailCliente : String + enderecoEntrega : String + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double Continuando com nosso processo de melhoria...
  • 53. Introdução a OO Cliente + cpf : Integer + nomeCliente : String + emailCliente : String RegistroVenda + codigoVenda : Integer + nomeCliente : String + emailCliente : String + enderecoEntrega : String + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double
  • 54. Introdução a OO Cliente + cpf : Integer + nomeCliente : String + emailCliente : String RegistroVenda + codigoVenda : Integer + cliente : Cliente + enderecoEntrega : String + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double
  • 55. Introdução a OO Cliente + cpf : Integer + nomeCliente : String + emailCliente : String RegistroVenda + codigoVenda : Integer + cliente : Cliente + enderecoEntrega : String + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double Endereco + logradouro : String + numero : String + complemento : String + cidade : String + uf : String + cep : Integer
  • 56. Introdução a OO Cliente + cpf : Integer + nomeCliente : String + emailCliente : String RegistroVenda + codigoVenda : Integer + cliente : Cliente + enderecoEntrega : Endereco + enderecoCobranca : Endereco + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double Endereco + logradouro : String + numero : String + complemento : String + cidade : String + uf : String + cep : Integer
  • 57. Introdução a OO Cliente + cpf : Integer + nomeCliente : String + emailCliente : String RegistroVenda + codigoVenda : Integer + cliente : Cliente + enderecoEntrega : Endereco + enderecoCobranca : Endereco + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double Endereco + logradouro : String + numero : String + complemento : String + cidade : String + uf : String + cep : Integer
  • 58. Diagrama de Classe Introdução a OO Cliente + cpf : Integer + nomeCliente : String + emailCliente : String RegistroVenda + codigoVenda : Integer + cliente : Cliente + enderecoEntrega : Endereco + enderecoCobranca : Endereco + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double Endereco + logradouro : String + numero : String + complemento : String + cidade : String + uf : String + cep : Integer Produto + nome : String + peso : Integer + preco : Double Vela + cor : String Boneca + tecido : String
  • 59. Diagrama de Classe Introdução a OO Cliente + cpf : Integer + nomeCliente : String + emailCliente : String RegistroVenda + codigoVenda : Integer + cliente : Cliente + enderecoEntrega : Endereco + enderecoCobranca : Endereco + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double Endereco + logradouro : String + numero : String + complemento : String + cidade : String + uf : String + cep : Integer Produto + nome : String + peso : Integer + preco : Double Vela + cor : String Boneca + tecido : String
  • 60. Introdução a OO Relembrando o que é um Objeto... ● Identidade; ● Possui características; ● Comportamento ○ Conjunto de ações que descrevem como o objeto pode ser usado.
  • 61. Comportamento ● Conjunto de ações que descrevem como o objeto pode ser usado. Introdução a OO Humano + nome : String + dataNascimento : Date + peso : Integer + produzirSom()
  • 62. Comportamento ● Conjunto de ações que descrevem como o objeto pode ser usado. Introdução a OO Humano + nome : String + dataNascimento : Date + peso : Integer + produzirSom() public class Humano { public String nome; public Date dataNascimento; public Integer peso; public void produzirSom() { System.out.println("Olá pessoal"); } }
  • 63. Seria impresso na tela... Olá pessoal! Introdução a OO Humano + nome : String + dataNascimento : Date + peso : Integer + produzirSom() public class Humano { public String nome; public Date dataNascimento; public Integer peso; public void produzirSom() { System.out.println("Olá pessoal!"); } }
  • 64. Seria impresso na tela... Olá pessoal! Introdução a OO Humano + nome : String + dataNascimento : Date + peso : Integer + produzirSom() public class Humano { public String nome; public Date dataNascimento; public Integer peso; public void produzirSom() { System.out.println("Olá pessoal!"); } } Parabéns! Você acaba de entender seu primeiro código Java!
  • 65. Introdução a OO Comportamento ● Conjunto de ações que descrevem como o objeto pode ser usado. Mamifero + nome : String + dataNascimento : Date + peso + produzirSom() Cão Humano Gato
  • 66. Introdução a OO Comportamento ● Conjunto de ações que descrevem como o objeto pode ser usado. Mamifero + nome : String + dataNascimento : Date + peso + produzirSom() Cão + ... Humano + ... Gato + ...
  • 67. Introdução a OO A herança permite que novas classes aproveitem atributos e comportamentos. Mamifero + nome : String + dataNascimento : Date + peso + produzirSom() Cão + ... Humano + ... Gato + ...
  • 68. Introdução a OO Mamifero + nome : String + dataNascimento : Date + peso + produzirSom() Cão + produzirSom() Humano + produzirSom() Gato + produzirSom()
  • 69. Introdução a OO Cão: Olá pessoal! Humano: Olá pessoal! Gato: Olá pessoal! Mamifero + nome : String + dataNascimento : Date + peso + produzirSom() Cão + produzirSom() Humano + produzirSom() Gato + produzirSom()
  • 70. Cão: Olá pessoal! Humano: Olá pessoal! Gato: Olá pessoal! WHAT ...? Introdução a OO
  • 71. Introdução a OO Solução: declarar na classe base e implementar o método apenas nas classes herdeiras. Palavra-chave: abstract. Mamifero + nome : String + dataNascimento : Date + peso + produzirSom() Cão + produzirSom() Humano + produzirSom() Gato + produzirSom()
  • 72. Introdução a OO public class Mamifero { public String nome; public Date dataNascimento; public Integer peso; public abstract void produzirSom(); } public class Cao extends Mamifero { public void produzirSom() { System.out.println("Au au!"); } } public class Humano extends Mamifero { public void produzirSom() { System.out.println("Olá pessoal!"); } } public class Gato extends Mamifero { public void produzirSom() { System.out.println("Miau!"); } }
  • 73. Introdução a OO public class Mamifero { public String nome; public Date dataNascimento; public Integer peso; public abstract void produzirSom(); } public class Cao extends Mamifero { public void produzirSom() { System.out.println("Au au!"); } } public class Humano extends Mamifero { public void produzirSom() { System.out.println("Olá pessoal!"); } } public class Gato extends Mamifero { public void produzirSom() { System.out.println("Miau!"); } } Cão: Au au! Humano: Olá pessoal! Gato: Miau!
  • 74. Referência Bibliográfica ● Sams Teach Yourself Object Oriented Programming in 21 Days - 2002 - Sams Publishing - Tony Sintes ● Head First Object-Oriented Analysis & Design, O'Reilly, McLaughlin et. al., 2007 ● ROY, Peter Van. Programming Paradigms for Dummies: What Every Programmer Should Know. Disponível em <http://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf>. Acesso em: 10 maio 2013. ● COHEN, Marcelo. Introdução à Programação Orientada a Objetos. Disponível em <http://www.inf.pucrs.br/flash/lapro2/lapro2_1.pdf>. Acesso em: 10 maio 2013. ● WIKIPEDIA, Orientação a Objetos. Disponível em <http://pt.wikipedia. org/wiki/Orientação_a_objetos>. Acesso em: 10 maio 2013. ● COSTA, André Luiz Monteiro da. Orientação a Objetos na Prática. Disponível em <http://www.slideshare.net/tiinfnet/orientao-a-objetos-na-prtica>. Acesso em: 10 maio 2013.