Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Herana
Mecanismo simples e poderoso do paradigma OO que permite que uma nova classe seja descrita a partir de uma classe j existente. Herana um mecanismo que permite a uma classe herdar todo o comportamento e os atributos de outra classe
Herana
Imagine o seguinte cenrio: Como toda empresa, nosso Banco possui funcionrios. Vamos modelar a classe Funcionrio
Herana
Alm de um funcionrio comum, h tambm outros cargos, como os gerentes. Os gerentes guardam a mesma informao que um funcionrio comum, mas possuem outras informaes, alm de ter funcionalidades um pouco diferentes. Um gerente no nosso banco possui tambm uma senha numrica que permite o acesso ao sistema interno do banco, alm do nmero de funcionrios que ele gerencia
Herana
Ser que uma nova classe com a repetio dos mesmos atributos de funcionrio necessria ? Que tal usar HERANA ?
Herana
Em todo momento que criarmos um objeto do tipo Gerente, este objeto possuir tambm os atributos definidos na classe Funcionario, pois agora um Gerente um Funcionrio
Classe Me
Classe Filha
Herana
Classe me: superclasse, classe base; Classe filha/filho: subclasse, classe derivada; Classe filha (mais especfica) herda atributos e mtodos da classe me (mais geral); Classe filha possui atributos e mtodos prprios.
Modificadores de acesso
Public Acesso a qualquer classe em qualquer pacote. Sem modificador(default) Acesso a qualquer classe do mesmo pacote. Protected Acesso a qualquer classe do mesmo pacote e a sub-classes de outros pacotes. Private Sem acesso fora da classe.
Para permitir o acesso aos atributos (j que eles so private) de uma maneira controlada, a prtica mais comum criar dois mtodos, um que retorna o valor e outro que muda o valor. A conveno para esses mtodos de colocar a palavra get ou set antes do nome do atributo.
O uso de mtodos para acesso aos atributos da classe uma boa prtica para promover o uso do encapsulamento.
Construtores
Quando usamos a palavra chave new, estamos construindo um objeto. Sempre quando o new chamado,ele executa o construtor da classe. O construtor da classe um bloco declarado com o mesmo nome que a classe.
Construtores
At agora, as nossas classes no possuam nenhum construtor. Ento como que era possvel dar new, se todo new chama um construtor obrigatoriamente? Quando voc no declara nenhum construtor na sua classe, o Java cria um para voc. Esse construtor o construtor default, ele no recebe nenhum argumento e o corpo dele vazio. A partir do momento que voc declara um construtor, o construtor default no mais fornecido.
Construtores
O interessante que um construtor pode receber um argumento, podendo assim inicializar algum tipo de informao:
Construtores
Tudo estava funcionando at agora. Para que utilizamos um construtor? A idia bem simples. Se toda conta precisa de um titular, como obrigar todos os objetos que forem criados a ter um valor desse tipo? Basta criar um nico construtor que recebe essa String! O construtor se resume a isso! Dar possibilidades ou obrigar o usurio de uma classe a passar argumentospara o objeto durante o processo de criao do mesmo.
Reescrita de mtodo
O que fazer para que o gerente receba uma bonificao de 750 reais, sabendo que seu salrio 5000.
Reescrita de mtodo
500
O resultado aqui ser 500. No queremos essa resposta, pois o gerente deveria ter 750 de bnus nesse caso. Para consertar isso, uma das opes seria criar um novo mtodo na classe Gerente
Reescrita de mtodo
Agora sim, o mtodo est correto para o Gerente. Refaa o teste e veja que agora o valor impresso o correto (750)
Exerccios
1) Vamos criar uma classe Conta, que possua um saldo, e os mtodos para pegar saldo, depositar, e sacar. a) Crie a classe Conta b) Adicione o atributo saldo c) Crie os mtodos getSaldo(), deposita(double) e saca(double) d) Adicione um mtodo na classe Conta, que atualiza essa conta de acordo com uma taxa percentual fornecida. e) Crie duas subclasses da classe Conta: ContaCorrente e ContaPoupanca. Ambas tero o mtodo atualiza reescrito: A ContaCorrente deve atualizar-se com o dobro da taxa e a ContaPoupanca deve atualizar-se com centavos de cada depsito.
Crie as classes ContaCorrente e ContaPoupanca. Ambas so filhas da classe Conta Reescreva o mtodo atualiza na classe ContaCorrente, seguindo o enunciado
Repare que, para acessar o atributo saldo herdado da classe Conta, voc vai precisar trocar o modificador de visibilidade de saldo para protected.
Reescreva o mtodo atualiza na classe ContaPoupanca, seguindo o enunciado Na classe ContaCorrente, reescreva o mtodo deposita para descontar a taxa bancria de dez centavos.
Notao