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

Mais procurados

Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.ppt
Emerson Cardoso
 
POO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em JavaPOO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em Java
Ludimila Monjardim Casagrande
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
Natanael Fonseca
 
Introdução à análise orientada a objetos parte 3
Introdução à análise orientada a objetos parte 3Introdução à análise orientada a objetos parte 3
Introdução à análise orientada a objetos parte 3
ariovaldodias
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
Natanael Fonseca
 
POO - 12 - A Classe Object
POO - 12 - A Classe ObjectPOO - 12 - A Classe Object
POO - 12 - A Classe Object
Ludimila Monjardim Casagrande
 
POO - 17 - Interfaces
POO - 17 - InterfacesPOO - 17 - Interfaces
POO - 17 - Interfaces
Ludimila Monjardim Casagrande
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)
Mario Sergio
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
Arthur Emanuel
 
Aula 2
Aula 2Aula 2
POO - 04 - Variávies em Java
POO - 04 - Variávies em JavaPOO - 04 - Variávies em Java
POO - 04 - Variávies em Java
Ludimila Monjardim Casagrande
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java
Mario Jorge Pereira
 
POO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de DesenvolvimentoPOO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de Desenvolvimento
Ludimila Monjardim Casagrande
 
Codifique melhor
Codifique melhorCodifique melhor
Codifique melhor
Marcos Sousa
 
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
 
Reflexão e Anotações no mundo Java
Reflexão e Anotações no mundo JavaReflexão e Anotações no mundo Java
Reflexão e Anotações no mundo Java
Mateus Parente
 
Curso de Java (Parte 3)
 Curso de Java (Parte 3) Curso de Java (Parte 3)
Curso de Java (Parte 3)
Mario Sergio
 
Aula5
Aula5Aula5
Aula5
softeam
 
POO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - DatasPOO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - Datas
Ludimila Monjardim Casagrande
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
Ludimila Monjardim Casagrande
 

Mais procurados (20)

Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.ppt
 
POO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em JavaPOO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em Java
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Introdução à análise orientada a objetos parte 3
Introdução à análise orientada a objetos parte 3Introdução à análise orientada a objetos parte 3
Introdução à análise orientada a objetos parte 3
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
POO - 12 - A Classe Object
POO - 12 - A Classe ObjectPOO - 12 - A Classe Object
POO - 12 - A Classe Object
 
POO - 17 - Interfaces
POO - 17 - InterfacesPOO - 17 - Interfaces
POO - 17 - Interfaces
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 
Aula 2
Aula 2Aula 2
Aula 2
 
POO - 04 - Variávies em Java
POO - 04 - Variávies em JavaPOO - 04 - Variávies em Java
POO - 04 - Variávies em Java
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java
 
POO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de DesenvolvimentoPOO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de Desenvolvimento
 
Codifique melhor
Codifique melhorCodifique melhor
Codifique melhor
 
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
 
Reflexão e Anotações no mundo Java
Reflexão e Anotações no mundo JavaReflexão e Anotações no mundo Java
Reflexão e Anotações no mundo Java
 
Curso de Java (Parte 3)
 Curso de Java (Parte 3) Curso de Java (Parte 3)
Curso de Java (Parte 3)
 
Aula5
Aula5Aula5
Aula5
 
POO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - DatasPOO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - Datas
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 

Destaque

Introdução à análise orientada a objetos parte 6
Introdução à análise orientada a objetos parte 6Introdução à análise orientada a objetos parte 6
Introdução à análise orientada a objetos parte 6
ariovaldodias
 
Excel VBA: Aula 12
Excel VBA: Aula 12Excel VBA: Aula 12
Excel VBA: Aula 12
Gustavo Zimmermann
 
Análise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLAnálise Orientada a Objetos com UML
Análise Orientada a Objetos com UML
Eliseu Castelo
 
Análise Orientada a Objetos - Objetos E Classes
Análise Orientada a Objetos  -   Objetos E ClassesAnálise Orientada a Objetos  -   Objetos E Classes
Análise Orientada a Objetos - Objetos E Classes
CursoSENAC
 
Análise Orientada a Objetos - Casos de Uso
Análise Orientada a Objetos - Casos de UsoAnálise Orientada a Objetos - Casos de Uso
Análise Orientada a Objetos - Casos de Uso
CursoSENAC
 
Análise Orientada a Objetos - Diagrama de Sequencia
Análise Orientada a Objetos - Diagrama de SequenciaAnálise Orientada a Objetos - Diagrama de Sequencia
Análise Orientada a Objetos - Diagrama de Sequencia
CursoSENAC
 
Aula Qualidade 3
Aula Qualidade 3Aula Qualidade 3
Aula Qualidade 3
rosilane32
 

Destaque (7)

Introdução à análise orientada a objetos parte 6
Introdução à análise orientada a objetos parte 6Introdução à análise orientada a objetos parte 6
Introdução à análise orientada a objetos parte 6
 
Excel VBA: Aula 12
Excel VBA: Aula 12Excel VBA: Aula 12
Excel VBA: Aula 12
 
Análise Orientada a Objetos com UML
Análise Orientada a Objetos com UMLAnálise Orientada a Objetos com UML
Análise Orientada a Objetos com UML
 
Análise Orientada a Objetos - Objetos E Classes
Análise Orientada a Objetos  -   Objetos E ClassesAnálise Orientada a Objetos  -   Objetos E Classes
Análise Orientada a Objetos - Objetos E Classes
 
Análise Orientada a Objetos - Casos de Uso
Análise Orientada a Objetos - Casos de UsoAnálise Orientada a Objetos - Casos de Uso
Análise Orientada a Objetos - Casos de Uso
 
Análise Orientada a Objetos - Diagrama de Sequencia
Análise Orientada a Objetos - Diagrama de SequenciaAnálise Orientada a Objetos - Diagrama de Sequencia
Análise Orientada a Objetos - Diagrama de Sequencia
 
Aula Qualidade 3
Aula Qualidade 3Aula Qualidade 3
Aula Qualidade 3
 

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

introdução a linguagem java-2003
introdução a linguagem java-2003introdução a linguagem java-2003
introdução a linguagem java-2003
elliando dias
 
Aula 3 - Java Prof.ª Cristiane Fidelix
Aula 3 -  Java Prof.ª Cristiane FidelixAula 3 -  Java Prof.ª Cristiane Fidelix
Aula 3 - Java Prof.ª Cristiane Fidelix
Cris Fidelix
 
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
 
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
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
Maurício Linhares
 
Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2
Manuel Menezes de Sequeira
 
Aula5
Aula5Aula5
Aula5
fkimura
 
05 poo-ii
05   poo-ii05   poo-ii
05 poo-ii
Ialis Cavalcante
 
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
 
Vraptor
VraptorVraptor
Vraptor
clauvane1708
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Loiane Groner
 
POO-FundamentosPOO.pdf
POO-FundamentosPOO.pdfPOO-FundamentosPOO.pdf
POO-FundamentosPOO.pdf
Fausto Ayres
 
10 heranca
10   heranca10   heranca
10 heranca
Artur Todeschini
 
Javascript avançado
Javascript avançadoJavascript avançado
Javascript avançado
Ricardo Cavalcanti
 
Tutorial Java: Polimorfismo
Tutorial Java: PolimorfismoTutorial Java: Polimorfismo
Tutorial Java: Polimorfismo
Elaine Cecília Gatto
 
Desenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVADesenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVA
Willian Magalhães
 
Sistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de JavaSistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de Java
Arthur Emanuel
 
Aula 7
Aula 7 Aula 7
Beljug2010
Beljug2010Beljug2010
Beljug2010
UFPA
 
Design patterns
Design patternsDesign patterns
Design patterns
DouglasSoaresAndrSch
 

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

introdução a linguagem java-2003
introdução a linguagem java-2003introdução a linguagem java-2003
introdução a linguagem java-2003
 
Aula 3 - Java Prof.ª Cristiane Fidelix
Aula 3 -  Java Prof.ª Cristiane FidelixAula 3 -  Java Prof.ª Cristiane Fidelix
Aula 3 - Java Prof.ª Cristiane Fidelix
 
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
 
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
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2
 
Aula5
Aula5Aula5
Aula5
 
05 poo-ii
05   poo-ii05   poo-ii
05 poo-ii
 
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
 
Vraptor
VraptorVraptor
Vraptor
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
 
POO-FundamentosPOO.pdf
POO-FundamentosPOO.pdfPOO-FundamentosPOO.pdf
POO-FundamentosPOO.pdf
 
10 heranca
10   heranca10   heranca
10 heranca
 
Javascript avançado
Javascript avançadoJavascript avançado
Javascript avançado
 
Tutorial Java: Polimorfismo
Tutorial Java: PolimorfismoTutorial Java: Polimorfismo
Tutorial Java: Polimorfismo
 
Desenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVADesenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVA
 
Sistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de JavaSistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de Java
 
Aula 7
Aula 7 Aula 7
Aula 7
 
Beljug2010
Beljug2010Beljug2010
Beljug2010
 
Design patterns
Design patternsDesign patterns
Design patterns
 

Último

INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
Faga1939
 
Apresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimizaçãoApresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimização
snerdct
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ismael Ash
 
Aula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústriaAula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústria
zetec10
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
ronaldos10
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
Ismael Ash
 

Último (6)

INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
 
Apresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimizaçãoApresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimização
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
 
Aula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústriaAula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústria
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
 

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

  1. Introdução à Análise Orientada a Objetos Parte 2
  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