SlideShare uma empresa Scribd logo
Introdução à Análise Orientada a Objetos Prof. Ariovaldo Dias de Oliveira Parte 2
Solução da Atividade 1 class Funcionário {  String nome; String departamento; private  double salário; String admissão; String rg; boolean ativo; Segue... Atributos
Funcionário (String nome, String departamento, double  salário, String admissão, String rg) { this.nome = nome; this.departamento = departamento; this.salário = salário; this.admissão = admissão; this.rg = rg; ativo = true; } Construtor   Segue... O construtor da classe é um bloco declarado com o mesmo nome da classe. Quando não se declara nenhum construtor, um  construtor default  é ativado. Ele não recebe nenhum argumento e o corpo dele é vazio. A partir do momento que se declara um construtor, o  construtor default  não é mais fornecido.
  void bonifica(double valor) { salário = salário + valor; } void demite(){ ativo = false; } double getSalário() { return salário; } } Métodos   Segue...
Programa para testar a classe Funcionário class TestaFuncionário { public static void main (String [ ] args) { Funcionário f = new Funcionário ("João", "RH", 123.45, "23/03/2011", "123456-x");    System.out.println("nome..............." + f.nome);   System.out.println("departamento..." +f.departamento);   System.out.println("salário............ " + f.getSalário());   System.out.println("admissão........." +f.admissão);   System.out.println("RG.................." + f.rg);   System.out.println("ativo................" + f.ativo);   f.bonifica(100);   System.out.println("novo salário....." + f.getSalário());   f.demite();   System.out.println("ativo................" + f.ativo); } }
UML da Atividade 1 Funcionário +nome:  String +departamento:  String  -salário:  double +admissão:  String +rg:  String +ativo:  boolean +Funcionário (nome: String, departamento: String,   salário: double, admissão: String, rg: String): +bonifica( valor: double ): +demite ( ): +getSalário ( ): double
Herança A herança é um relacionamento pelo qual uma classe, chamada de subclasse, herda todos comportamentos e estados possíveis de outra classe, chamada de superclasse ou classe base
Exemplo de Herança import java.util.Scanner;  class Funcionário {  String nome; private double salário; double getSalário() { return salário; } void setSalário(double salário) { this.salário =  salário; } } Segue...
class Gerente extends Funcionário { int senha; boolean autentica(int senha) { if (this.senha == senha) { return true; } else { return false; } } } Em todo momento que criarmos um objeto do tipo  Gerente , este objeto também possuirá os atributos e métodos de  Funcionário Segue...
class TestaGerente { public static void main (String [ ] args) { Gerente gestor = new Gerente ( ); gestor.nome = "João"; gestor.setSalário(8000.0); Scanner input = new Scanner(System.in);  System.out.println ("Informe a senha para criar esse gerente: ");   int senha = input.nextInt();    gestor.senha = senha;  System.out.println ("Informe a senha para acessar esse gerente: ");   int senhaAcesso = input.nextInt();    boolean permite = gestor.autentica(senhaAcesso); if (permite) { System.out.println("Permitido"); } else { System.out.println("Negado"); } } }
Para dar aumento ao Gerente, não podemos  comandar  (na subclasse Gerente) a ação  Salário = Salário + valor , pois esta subclasse  não tem acesso ao atributo salário, que é  private  na superclasse Funcionário: class Gerente extends Funcionário { int senha; boolean autentica(int senha) { if (this.senha == senha) { return true; } else { return false; } } void daAumento (double valor) { salário = salário + valor; } } Vai dar erro de compilação!
Para não dar erro, mudamos o atributo de salário (em Funcionário) de  private  para  protected import java.util.Scanner;  class Funcionário {  String nome; protected  double salário; double getSalário() { return salário; } void setSalário(double salário) { this.salário =  salário; } }
Para discussão: O que aconteceria se comandássemos no programa TestaGerente um acesso direto ao atributo salário do gerente, como na codificação abaixo? ..... boolean permite = gestor.autentica(senhaAcesso); if (permite) { System.out.println("Permitido"); } else { System.out.println("Negado"); } System.out.println(gestor.salário);
Funcionário +bonifica (valor: double ): +demite ( ): +getSalário ( ): double Gerente +nome:  String +departamento:  String  # salário:  double +admissão:  String +rg:  String +ativo:  boolean +senha:  int +autentica (senha: int): boolean
Sobrescrita (ou Reescrita) de Método Ocorre quando uma sobclasse define um método idêntico(*)  a um método de sua superclasse Utilizado quando o comportamento da superclasse não corresponde ao desejado para o método da subclasse (*) Métodos idênticos possuem o mesmo nome, tipo de retorno e lista de parâmetros
Exemplo de Sobrescrita class Produto {  int cod; String desc; protected double preço; void setPreço(double preço) { this.preço = preço; } void aumenta (double valor){ preço = preço + valor; } double getPreço() { return preço; } } Segue...
class Importado extends Produto { int codImportação;   void setPreço(double preço) { this.preço = preço * 1.7; } }
class TestaProduto { public static void main (String [ ] args) { Produto prod1= new Produto ( ); prod1.cod = 123; prod1.desc = "Borracha"; prod1.setPreço(2.5); prod1.aumenta(0.5); System.out.println(prod1.desc + " preço = " + prod1.getPreço());   Importado prod2 = new Importado(); prod2.cod = 456; prod2.desc = "Lápis"; prod2.codImportação = 12345; prod2.setPreço(3); prod2.aumenta(1); System.out.println(prod2.desc + " preço = " + prod2.getPreço()); } } Sem o Método  setPreço  na classe  Importado , o valor exibido para o produto 2 seria 4 e não 6.1  Segue...
Sobrecarga Sobrecarregar um método ou um construtor significa prover mais de uma versão desse mesmo Método (ou Construtor). As versões devem, necessariamente, possuir listas de parâmetros diferentes, seja no tipo ou no número desses parâmetros (o tipo do valor de retorno pode ser igual).
Exemplo de Sobrecarga de um Construtor class Produto {  int cod; String desc;   Produto (String desc, int cod) { this.cod = cod; this.desc = desc; } Produto (int cod, String desc) { this.cod = cod; this.desc = desc; } Produto (int cod) { this.cod = cod; desc = "descrição padrão"; } Produto (String desc) { this.cod = 999; this.desc = desc; } Produto () { this.cod = 999; this.desc = "descrição padrão"; } } Segue...
class TestaSobrecarga { public static void main (String [ ] args) { Produto prod1= new Produto ("produto 1", 1111 ); System.out.println(prod1.desc + "  " + prod1.cod); Produto prod2= new Produto ( 2222, "produto 2"); System.out.println(prod2.desc + "  " + prod2.cod); Produto prod3= new Produto (3333 ); System.out.println(prod3.desc + "  " + prod3.cod); Produto prod4= new Produto ("produto 4"); System.out.println(prod4.desc + "  " + prod4.cod); Produto prod5= new Produto ( ); System.out.println(prod5.desc + "  " + prod5.cod); } }
Exemplo de Sobrecarga de um Método class Produto {  int cod; String desc;   Produto (String desc, int cod) { this.cod = cod; this.desc = desc; } String getInfo () { String resposta = "Produto: " + desc + ", código = " + cod; return resposta; } String getInfo (int n) { String resposta; if (n == 1 ) { resposta = "Product name: " + desc + ", code = " + cod; } else { resposta = "Product code: " + cod + ", name = " + desc; } return resposta; } } Segue...
class TestaSobrecarga { public static void main (String [ ] args) { Produto prod= new Produto ("tijolo", 1111 ); String texto; texto = prod.getInfo(); System.out.println(texto); texto = prod.getInfo(1); System.out.println(texto); texto = prod.getInfo(2); System.out.println(texto); } }
Polimorfismo É quando existem várias formas de um método ser ativado.  As  mais usuais  são: Polimorfismo por herança - Quando ocorre a sobreposição de um método de uma subclasse em cima do método da superclasse. Polimorfismo por Sobrecarga - Quando em uma classe, um mesmo método (de mesmo nome) pode ser chamado de várias maneiras diferentes, onde a diferença está na quantidade e no tipo de parâmetros passados.
Faça a modelagem em um diagrama UML.  Criar, em Java, as classes Produto, Alimento e o programa Atividade2 de acordo com o especificado abaixo: Um produto tem os seguintes atributos: código, descrição, setor e preço.  Significado de setor:  1 = alimento, 2 = higiene e 3 = roupas.  Esses atributos não podem ser acessados diretamente pelo programa  Atividade2.   Um Alimento é um produto, com a diferença que ele tem um atributo a mais,  que é o código da vigilância sanitária.   Um produto pode ser criado passando-se todos os atributos, ou omitindo-se o atributo de setor, e nesse caso assume-se setor 3 (roupas).   Atividade 2
Para criar-se um alimento, é necessário passar todos os atributos, exceto o setor, que será assumido como 1.    Os produtos tem um valor de ICMS  de 15%, porém para alimentos deve-se calcular 10% para alimentos nacionais ou 20% para alimentos importados. Os alimentos nacionais são aqueles cujo código de Vigilância começa com “55”.   OBS:  Não há necessidade,nesta atividade, de validar os valores dos atributos. Assumiremos que os atributos para os Construtores serão sempre válidos.  O programa Atividade2 deve criar vários produtos para cobrir todas as possibilidades do enunciado
Faça a modelagem em um diagrama UML.  Criar, em Java, algumas classes relacionadas, aplicando os conceitos de encapsulamento, herança, sobrecarga e reescrita. Atividade 3
Referências Orientação a objetos. Disponível em  <http : //www.softechnetwork.com.br/java/CursoOO.pdf >. Acesso em :11 mar. 2011. Java e Orientação a Objetos. Disponível em  <www. caelum.com.br>  Acesso em 15 fev. 2009. RUMBAUGH, James et al. Modelagem e Projetos baseados e Objetos. Rio de Janeiro: Campus, 1997.

Mais conteúdo relacionado

PDF
Refactoring
PDF
Java orientação a objetos (variaveis de instancia e metodos)
PDF
Java 06
Refactoring
Java orientação a objetos (variaveis de instancia e metodos)
Java 06

Mais procurados (20)

PDF
Java aprendendo linguagem.ppt
PDF
POO - 09 - Entradas e Saídas em Java
PPTX
Curso Java Básico - Aula 03
PPT
Introdução à análise orientada a objetos parte 3
PPTX
Curso Java Básico - Aula02
PDF
POO - 12 - A Classe Object
PDF
POO - 17 - Interfaces
PDF
Curso de Java (Parte 4)
PPTX
Java - Visão geral e Exercícios
PPTX
PDF
POO - 04 - Variávies em Java
PDF
Revisão Sobre Programação Orientada a Objetos com Java
PDF
POO - 05 - Ambiente de Desenvolvimento
KEY
Codifique melhor
PPT
Introdução à análise orientada a objetos parte 1
PPTX
Reflexão e Anotações no mundo Java
PDF
Curso de Java (Parte 3)
PPT
Aula5
PDF
POO - 24 - Classes Básicas do Java - Datas
PDF
POO - 01 - Introdução ao Paradigma Orientado a Objetos
Java aprendendo linguagem.ppt
POO - 09 - Entradas e Saídas em Java
Curso Java Básico - Aula 03
Introdução à análise orientada a objetos parte 3
Curso Java Básico - Aula02
POO - 12 - A Classe Object
POO - 17 - Interfaces
Curso de Java (Parte 4)
Java - Visão geral e Exercícios
POO - 04 - Variávies em Java
Revisão Sobre Programação Orientada a Objetos com Java
POO - 05 - Ambiente de Desenvolvimento
Codifique melhor
Introdução à análise orientada a objetos parte 1
Reflexão e Anotações no mundo Java
Curso de Java (Parte 3)
Aula5
POO - 24 - Classes Básicas do Java - Datas
POO - 01 - Introdução ao Paradigma Orientado a Objetos
Anúncio

Destaque (7)

PPT
Introdução à análise orientada a objetos parte 6
PDF
Excel VBA: Aula 12
PPTX
Análise Orientada a Objetos com UML
PPT
Análise Orientada a Objetos - Objetos E Classes
PPT
Análise Orientada a Objetos - Casos de Uso
PPT
Análise Orientada a Objetos - Diagrama de Sequencia
PDF
Aula Qualidade 3
Introdução à análise orientada a objetos parte 6
Excel VBA: Aula 12
Análise Orientada a Objetos com UML
Análise Orientada a Objetos - Objetos E Classes
Análise Orientada a Objetos - Casos de Uso
Análise Orientada a Objetos - Diagrama de Sequencia
Aula Qualidade 3
Anúncio

Semelhante a Introdução à análise orientada a objetos parte 2 (20)

PPT
introdução a linguagem java-2003
PDF
Aula 3 - Java Prof.ª Cristiane Fidelix
PPT
Introdução à análise orientada a objetos parte 1
PDF
Refatoração de código com Capitão Nascimento versão completa
PDF
Curso java 03 - métodos e parâmetros
PPTX
Programação Orientada por Objectos - Aula 2
PPT
Aula5
PDF
05 poo-ii
PDF
Como conectar programas em linguagem java a bases de dados
PDF
Vraptor
PDF
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
PDF
POO-FundamentosPOO.pdf
PPTX
10 heranca
PPTX
Curso de Java 4 - (Orientação a Objetos).pptx
PPTX
Javascript avançado
DOCX
Tutorial Java: Polimorfismo
PPTX
Desenvolvendo para WEB com JAVA
PPTX
Sistemas Distribuídos - Aula 04 - Revisão de Java
PPTX
PPTX
Beljug2010
introdução a linguagem java-2003
Aula 3 - Java Prof.ª Cristiane Fidelix
Introdução à análise orientada a objetos parte 1
Refatoração de código com Capitão Nascimento versão completa
Curso java 03 - métodos e parâmetros
Programação Orientada por Objectos - Aula 2
Aula5
05 poo-ii
Como conectar programas em linguagem java a bases de dados
Vraptor
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
POO-FundamentosPOO.pdf
10 heranca
Curso de Java 4 - (Orientação a Objetos).pptx
Javascript avançado
Tutorial Java: Polimorfismo
Desenvolvendo para WEB com JAVA
Sistemas Distribuídos - Aula 04 - Revisão de Java
Beljug2010

Último (19)

PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Aula 18 - Manipulacao De Arquivos python
COBITxITIL-Entenda as diferença em uso governança TI
Aula04-Academia Heri- Tecnologia Geral 2025
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Apple Pippin Uma breve introdução. - David Glotz
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Processos na gestão de transportes, TM100 Col18
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14

Introdução à análise orientada a objetos parte 2

  • 1. Introdução à Análise Orientada a Objetos Prof. Ariovaldo Dias de Oliveira Parte 2
  • 2. Solução da Atividade 1 class Funcionário { String nome; String departamento; private double salário; String admissão; String rg; boolean ativo; Segue... Atributos
  • 3. Funcionário (String nome, String departamento, double salário, String admissão, String rg) { this.nome = nome; this.departamento = departamento; this.salário = salário; this.admissão = admissão; this.rg = rg; ativo = true; } Construtor Segue... O construtor da classe é um bloco declarado com o mesmo nome da classe. Quando não se declara nenhum construtor, um construtor default é ativado. Ele não recebe nenhum argumento e o corpo dele é vazio. A partir do momento que se declara um construtor, o construtor default não é mais fornecido.
  • 4. void bonifica(double valor) { salário = salário + valor; } void demite(){ ativo = false; } double getSalário() { return salário; } } Métodos Segue...
  • 5. Programa para testar a classe Funcionário class TestaFuncionário { public static void main (String [ ] args) { Funcionário f = new Funcionário (&quot;João&quot;, &quot;RH&quot;, 123.45, &quot;23/03/2011&quot;, &quot;123456-x&quot;); System.out.println(&quot;nome...............&quot; + f.nome); System.out.println(&quot;departamento...&quot; +f.departamento); System.out.println(&quot;salário............ &quot; + f.getSalário()); System.out.println(&quot;admissão.........&quot; +f.admissão); System.out.println(&quot;RG..................&quot; + f.rg); System.out.println(&quot;ativo................&quot; + f.ativo); f.bonifica(100); System.out.println(&quot;novo salário.....&quot; + f.getSalário()); f.demite(); System.out.println(&quot;ativo................&quot; + f.ativo); } }
  • 6. UML da Atividade 1 Funcionário +nome: String +departamento: String -salário: double +admissão: String +rg: String +ativo: boolean +Funcionário (nome: String, departamento: String, salário: double, admissão: String, rg: String): +bonifica( valor: double ): +demite ( ): +getSalário ( ): double
  • 7. Herança A herança é um relacionamento pelo qual uma classe, chamada de subclasse, herda todos comportamentos e estados possíveis de outra classe, chamada de superclasse ou classe base
  • 8. Exemplo de Herança import java.util.Scanner; class Funcionário { String nome; private double salário; double getSalário() { return salário; } void setSalário(double salário) { this.salário = salário; } } Segue...
  • 9. class Gerente extends Funcionário { int senha; boolean autentica(int senha) { if (this.senha == senha) { return true; } else { return false; } } } Em todo momento que criarmos um objeto do tipo Gerente , este objeto também possuirá os atributos e métodos de Funcionário Segue...
  • 10. class TestaGerente { public static void main (String [ ] args) { Gerente gestor = new Gerente ( ); gestor.nome = &quot;João&quot;; gestor.setSalário(8000.0); Scanner input = new Scanner(System.in); System.out.println (&quot;Informe a senha para criar esse gerente: &quot;); int senha = input.nextInt(); gestor.senha = senha; System.out.println (&quot;Informe a senha para acessar esse gerente: &quot;); int senhaAcesso = input.nextInt(); boolean permite = gestor.autentica(senhaAcesso); if (permite) { System.out.println(&quot;Permitido&quot;); } else { System.out.println(&quot;Negado&quot;); } } }
  • 11. Para dar aumento ao Gerente, não podemos comandar (na subclasse Gerente) a ação Salário = Salário + valor , pois esta subclasse não tem acesso ao atributo salário, que é private na superclasse Funcionário: class Gerente extends Funcionário { int senha; boolean autentica(int senha) { if (this.senha == senha) { return true; } else { return false; } } void daAumento (double valor) { salário = salário + valor; } } Vai dar erro de compilação!
  • 12. Para não dar erro, mudamos o atributo de salário (em Funcionário) de private para protected import java.util.Scanner; class Funcionário { String nome; protected double salário; double getSalário() { return salário; } void setSalário(double salário) { this.salário = salário; } }
  • 13. Para discussão: O que aconteceria se comandássemos no programa TestaGerente um acesso direto ao atributo salário do gerente, como na codificação abaixo? ..... boolean permite = gestor.autentica(senhaAcesso); if (permite) { System.out.println(&quot;Permitido&quot;); } else { System.out.println(&quot;Negado&quot;); } System.out.println(gestor.salário);
  • 14. Funcionário +bonifica (valor: double ): +demite ( ): +getSalário ( ): double Gerente +nome: String +departamento: String # salário: double +admissão: String +rg: String +ativo: boolean +senha: int +autentica (senha: int): boolean
  • 15. Sobrescrita (ou Reescrita) de Método Ocorre quando uma sobclasse define um método idêntico(*) a um método de sua superclasse Utilizado quando o comportamento da superclasse não corresponde ao desejado para o método da subclasse (*) Métodos idênticos possuem o mesmo nome, tipo de retorno e lista de parâmetros
  • 16. Exemplo de Sobrescrita class Produto { int cod; String desc; protected double preço; void setPreço(double preço) { this.preço = preço; } void aumenta (double valor){ preço = preço + valor; } double getPreço() { return preço; } } Segue...
  • 17. class Importado extends Produto { int codImportação; void setPreço(double preço) { this.preço = preço * 1.7; } }
  • 18. class TestaProduto { public static void main (String [ ] args) { Produto prod1= new Produto ( ); prod1.cod = 123; prod1.desc = &quot;Borracha&quot;; prod1.setPreço(2.5); prod1.aumenta(0.5); System.out.println(prod1.desc + &quot; preço = &quot; + prod1.getPreço()); Importado prod2 = new Importado(); prod2.cod = 456; prod2.desc = &quot;Lápis&quot;; prod2.codImportação = 12345; prod2.setPreço(3); prod2.aumenta(1); System.out.println(prod2.desc + &quot; preço = &quot; + prod2.getPreço()); } } Sem o Método setPreço na classe Importado , o valor exibido para o produto 2 seria 4 e não 6.1 Segue...
  • 19. Sobrecarga Sobrecarregar um método ou um construtor significa prover mais de uma versão desse mesmo Método (ou Construtor). As versões devem, necessariamente, possuir listas de parâmetros diferentes, seja no tipo ou no número desses parâmetros (o tipo do valor de retorno pode ser igual).
  • 20. Exemplo de Sobrecarga de um Construtor class Produto { int cod; String desc; Produto (String desc, int cod) { this.cod = cod; this.desc = desc; } Produto (int cod, String desc) { this.cod = cod; this.desc = desc; } Produto (int cod) { this.cod = cod; desc = &quot;descrição padrão&quot;; } Produto (String desc) { this.cod = 999; this.desc = desc; } Produto () { this.cod = 999; this.desc = &quot;descrição padrão&quot;; } } Segue...
  • 21. class TestaSobrecarga { public static void main (String [ ] args) { Produto prod1= new Produto (&quot;produto 1&quot;, 1111 ); System.out.println(prod1.desc + &quot; &quot; + prod1.cod); Produto prod2= new Produto ( 2222, &quot;produto 2&quot;); System.out.println(prod2.desc + &quot; &quot; + prod2.cod); Produto prod3= new Produto (3333 ); System.out.println(prod3.desc + &quot; &quot; + prod3.cod); Produto prod4= new Produto (&quot;produto 4&quot;); System.out.println(prod4.desc + &quot; &quot; + prod4.cod); Produto prod5= new Produto ( ); System.out.println(prod5.desc + &quot; &quot; + prod5.cod); } }
  • 22. Exemplo de Sobrecarga de um Método class Produto { int cod; String desc; Produto (String desc, int cod) { this.cod = cod; this.desc = desc; } String getInfo () { String resposta = &quot;Produto: &quot; + desc + &quot;, código = &quot; + cod; return resposta; } String getInfo (int n) { String resposta; if (n == 1 ) { resposta = &quot;Product name: &quot; + desc + &quot;, code = &quot; + cod; } else { resposta = &quot;Product code: &quot; + cod + &quot;, name = &quot; + desc; } return resposta; } } Segue...
  • 23. class TestaSobrecarga { public static void main (String [ ] args) { Produto prod= new Produto (&quot;tijolo&quot;, 1111 ); String texto; texto = prod.getInfo(); System.out.println(texto); texto = prod.getInfo(1); System.out.println(texto); texto = prod.getInfo(2); System.out.println(texto); } }
  • 24. Polimorfismo É quando existem várias formas de um método ser ativado. As mais usuais são: Polimorfismo por herança - Quando ocorre a sobreposição de um método de uma subclasse em cima do método da superclasse. Polimorfismo por Sobrecarga - Quando em uma classe, um mesmo método (de mesmo nome) pode ser chamado de várias maneiras diferentes, onde a diferença está na quantidade e no tipo de parâmetros passados.
  • 25. Faça a modelagem em um diagrama UML. Criar, em Java, as classes Produto, Alimento e o programa Atividade2 de acordo com o especificado abaixo: Um produto tem os seguintes atributos: código, descrição, setor e preço. Significado de setor: 1 = alimento, 2 = higiene e 3 = roupas. Esses atributos não podem ser acessados diretamente pelo programa Atividade2.   Um Alimento é um produto, com a diferença que ele tem um atributo a mais, que é o código da vigilância sanitária.   Um produto pode ser criado passando-se todos os atributos, ou omitindo-se o atributo de setor, e nesse caso assume-se setor 3 (roupas).   Atividade 2
  • 26. Para criar-se um alimento, é necessário passar todos os atributos, exceto o setor, que será assumido como 1.   Os produtos tem um valor de ICMS de 15%, porém para alimentos deve-se calcular 10% para alimentos nacionais ou 20% para alimentos importados. Os alimentos nacionais são aqueles cujo código de Vigilância começa com “55”.   OBS: Não há necessidade,nesta atividade, de validar os valores dos atributos. Assumiremos que os atributos para os Construtores serão sempre válidos. O programa Atividade2 deve criar vários produtos para cobrir todas as possibilidades do enunciado
  • 27. Faça a modelagem em um diagrama UML. Criar, em Java, algumas classes relacionadas, aplicando os conceitos de encapsulamento, herança, sobrecarga e reescrita. Atividade 3
  • 28. Referências Orientação a objetos. Disponível em <http : //www.softechnetwork.com.br/java/CursoOO.pdf >. Acesso em :11 mar. 2011. Java e Orientação a Objetos. Disponível em <www. caelum.com.br> Acesso em 15 fev. 2009. RUMBAUGH, James et al. Modelagem e Projetos baseados e Objetos. Rio de Janeiro: Campus, 1997.

Notas do Editor

  • #2: Introdução à Análise Orientada a Objetos Parte 2
  • #3: Introdução à Análise Orientada a Objetos Parte 2
  • #4: Introdução à Análise Orientada a Objetos Parte 2
  • #5: Introdução à Análise Orientada a Objetos Parte 2
  • #6: Introdução à Análise Orientada a Objetos Parte 2
  • #7: Introdução à Análise Orientada a Objetos Parte 2
  • #8: Introdução à Análise Orientada a Objetos Parte 2
  • #9: Introdução à Análise Orientada a Objetos Parte 2
  • #10: Introdução à Análise Orientada a Objetos Parte 2
  • #11: Introdução à Análise Orientada a Objetos Parte 2
  • #12: Introdução à Análise Orientada a Objetos Parte 2
  • #13: Introdução à Análise Orientada a Objetos Parte 2
  • #14: Introdução à Análise Orientada a Objetos Parte 2
  • #15: Introdução à Análise Orientada a Objetos Parte 2
  • #16: Introdução à Análise Orientada a Objetos Parte 2
  • #17: Introdução à Análise Orientada a Objetos Parte 2
  • #18: Introdução à Análise Orientada a Objetos Parte 2
  • #19: Introdução à Análise Orientada a Objetos Parte 2
  • #20: Introdução à Análise Orientada a Objetos Parte 2
  • #21: Introdução à Análise Orientada a Objetos Parte 2
  • #22: Introdução à Análise Orientada a Objetos Parte 2
  • #23: Introdução à Análise Orientada a Objetos Parte 2
  • #24: Introdução à Análise Orientada a Objetos Parte 2
  • #25: Introdução à Análise Orientada a Objetos Parte 2
  • #26: Introdução à Análise Orientada a Objetos Parte 2
  • #27: Introdução à Análise Orientada a Objetos Parte 2
  • #28: Introdução à Análise Orientada a Objetos Parte 2
  • #29: Introdução à Análise Orientada a Objetos Parte 2