Anda di halaman 1dari 21

Implementao dos conceitos OO

Prof. Ramon Pontes

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.

Mtodos Getters e Setters

Imaginem uma classe conta

No Funciona, pois privado

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.

Mtodos Getters e Setters

Mtodos Getters e Setters

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

Anda mungkin juga menyukai