SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

Semelhante a Artesanato de software

Design OO
Design OODesign 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
Helder Lopes
 
DDD > Experiências
DDD > ExperiênciasDDD > Experiências
DDD > Experiências
Giovanni Bassi
 
01_EntradaESaida-1283dcca0a544b38a2df92fceb9d98e2.pdf
01_EntradaESaida-1283dcca0a544b38a2df92fceb9d98e2.pdf01_EntradaESaida-1283dcca0a544b38a2df92fceb9d98e2.pdf
01_EntradaESaida-1283dcca0a544b38a2df92fceb9d98e2.pdf
trabalhocasa3
 
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
Bruno Cicanci
 
Java 05 Oo Basica
Java 05 Oo BasicaJava 05 Oo Basica
Java 05 Oo Basica
Regis Magalhães
 
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
aldoirjava
 
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
Eduardo Bregaida
 
ORM: Sendo produtivo com NHibernate
ORM: Sendo produtivo com NHibernateORM: Sendo produtivo com NHibernate
ORM: Sendo produtivo com NHibernate
Juliano 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 dados
Henrique 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 1
ariovaldodias
 
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
ariovaldodias
 
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
Sérgio Souza Costa
 
TDD e Clean Code
TDD e Clean CodeTDD e Clean Code
TDD e Clean Code
Jorge Oleques
 
Palestra Mocks - AgileBrazil 2010
Palestra Mocks - AgileBrazil 2010Palestra Mocks - AgileBrazil 2010
Palestra Mocks - AgileBrazil 2010
rafaelferreira
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
Engenharia de Software Ágil
 
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
Maurício Aniche
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
Willians Miyabara
 
Recursividade
RecursividadeRecursividade
Recursividade
Pablo Silva
 
If bom é if morto
If bom é if mortoIf bom é if morto
If bom é if morto
Jackson Veroneze
 

Semelhante 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
 

Último

DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 

Último (8)

DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 

Artesanato de software