SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
Artesanato de
  Software
   Edson Yanaga
   @edsonyanaga
Software é uma arte
Ou não é?
É linha de produção?
Deus?
O que você sabe/
aprendeu sobre
      OO?
Herança
Herança


Polimorfismo
Herança


 Polimorfismo


Encapsulamento
Encapsulamento


 Polimorfismo


   Herança
Encapsulamento
    Polimorfismo


      Herança
Encapsulamento
    Polimorfismo


        Herança
public class Pessoa {

	   private String nome;
	
	   private String cpf;
	
	   private String telefone;
	
	   private Date nascimento;

}
public class Pessoa {

	   private String nome;
	
	   private Cpf cpf;
	
	   private Telefone telefone;
	
	   private Date nascimento;

}
public class Conta {

	 private BigDecimal saldo = new BigDecimal("0.00");

	 public BigDecimal getSaldo() {
	 	 return saldo;
	 }

	 public void setSaldo(BigDecimal saldo) {
	 	 this.saldo = saldo;
	 }

}
public class ContaService {

	   public void somar(Conta conta, BigDecimal valor) {
	   	 if (conta == null) {
	   	 	 throw new IllegalArgumentException("Conta não pode ser nula!");
	   	 }
	   	 if (valor == null) {
	   	 	 throw new IllegalArgumentException("Valor não pode ser nulo!");
	   	 }
	   	 BigDecimal saldo = conta.getSaldo();
	   	 if (saldo == null) {
	   	 	 saldo = new BigDecimal("0.00");
	   	 }
	   	 saldo = saldo.add(valor);
	   	 conta.setSaldo(saldo);
	   }
	
}
public class Conta {

	 private BigDecimal saldo = new BigDecimal("0.00");

	   public BigDecimal getSaldo() {
	   	 return saldo;
	   }
	
	   public Conta somar(BigDecimal valor) {
	   	 checkNotNull(valor);
	   	 saldo = saldo.add(valor);
	   	 return this;
	   }

}
public class ContaService {

	   public void somarValorNaConta(Conta conta, BigDecimal valor) {
	   	 checkNotNull(conta);
	   	 conta.somar(valor);
	   }
	
}
Software melhor,
 mundo melhor
Edson Yanaga
 edson@yanaga.com.br
    @edsonyanaga
  www.yanaga.com.br

Más contenido relacionado

Similar a Artesanato de software

Programação orientada a objetos em delphi
Programação orientada a objetos em delphiProgramação orientada a objetos em delphi
Programação orientada a objetos em delphiHelder Lopes
 
01_EntradaESaida-1283dcca0a544b38a2df92fceb9d98e2.pdf
01_EntradaESaida-1283dcca0a544b38a2df92fceb9d98e2.pdf01_EntradaESaida-1283dcca0a544b38a2df92fceb9d98e2.pdf
01_EntradaESaida-1283dcca0a544b38a2df92fceb9d98e2.pdftrabalhocasa3
 
Design Patterns na Programação de Jogo
Design Patterns na Programação de JogoDesign Patterns na Programação de Jogo
Design Patterns na Programação de JogoBruno Cicanci
 
Videoulas de algoritmos e lógica de programação
Videoulas de algoritmos e lógica de programaçãoVideoulas de algoritmos e lógica de programação
Videoulas de algoritmos e lógica de programaçãoaldoirjava
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaEduardo Bregaida
 
ORM: Sendo produtivo com NHibernate
ORM: Sendo produtivo com NHibernateORM: Sendo produtivo com NHibernate
ORM: Sendo produtivo com NHibernateJuliano Oliveira
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dadosHenrique Fernandes
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1ariovaldodias
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1ariovaldodias
 
Java - Introdução a Coleções e Generics
Java - Introdução a Coleções e GenericsJava - Introdução a Coleções e Generics
Java - Introdução a Coleções e GenericsSérgio Souza Costa
 
Palestra Mocks - AgileBrazil 2010
Palestra Mocks - AgileBrazil 2010Palestra Mocks - AgileBrazil 2010
Palestra Mocks - AgileBrazil 2010rafaelferreira
 
Conexão Java 2012 - Orientação a Objetos das Galáxias
Conexão Java 2012 - Orientação a Objetos das GaláxiasConexão Java 2012 - Orientação a Objetos das Galáxias
Conexão Java 2012 - Orientação a Objetos das GaláxiasMaurício Aniche
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlgWillians Miyabara
 

Similar a Artesanato de software (20)

Design OO
Design OODesign OO
Design OO
 
Programação orientada a objetos em delphi
Programação orientada a objetos em delphiProgramação orientada a objetos em delphi
Programação orientada a objetos em delphi
 
DDD > Experiências
DDD > ExperiênciasDDD > Experiências
DDD > Experiências
 
01_EntradaESaida-1283dcca0a544b38a2df92fceb9d98e2.pdf
01_EntradaESaida-1283dcca0a544b38a2df92fceb9d98e2.pdf01_EntradaESaida-1283dcca0a544b38a2df92fceb9d98e2.pdf
01_EntradaESaida-1283dcca0a544b38a2df92fceb9d98e2.pdf
 
Design Patterns na Programação de Jogo
Design Patterns na Programação de JogoDesign Patterns na Programação de Jogo
Design Patterns na Programação de Jogo
 
Java 05 Oo Basica
Java 05 Oo BasicaJava 05 Oo Basica
Java 05 Oo Basica
 
Videoulas de algoritmos e lógica de programação
Videoulas de algoritmos e lógica de programaçãoVideoulas de algoritmos e lógica de programação
Videoulas de algoritmos e lógica de programação
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completa
 
ORM: Sendo produtivo com NHibernate
ORM: Sendo produtivo com NHibernateORM: Sendo produtivo com NHibernate
ORM: Sendo produtivo com NHibernate
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dados
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1
 
Java - Introdução a Coleções e Generics
Java - Introdução a Coleções e GenericsJava - Introdução a Coleções e Generics
Java - Introdução a Coleções e Generics
 
TDD e Clean Code
TDD e Clean CodeTDD e Clean Code
TDD e Clean Code
 
Palestra Mocks - AgileBrazil 2010
Palestra Mocks - AgileBrazil 2010Palestra Mocks - AgileBrazil 2010
Palestra Mocks - AgileBrazil 2010
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
Conexão Java 2012 - Orientação a Objetos das Galáxias
Conexão Java 2012 - Orientação a Objetos das GaláxiasConexão Java 2012 - Orientação a Objetos das Galáxias
Conexão Java 2012 - Orientação a Objetos das Galáxias
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
 
Recursividade
RecursividadeRecursividade
Recursividade
 
If bom é if morto
If bom é if mortoIf bom é if morto
If bom é if morto
 

Artesanato de software