Aula12
CLASSES ABSTRATAS
Dilvan Moreira
(baseado no livro Big Java
Lembrando: Escolhendo Classes
Uma classe representa um único conceito de um domínio Tipos:
Conceitos
matemáticos
Conceitos da vida real
Atores (terminando em in -er, -or) – objetos que fazem algum tipo de trabalho para você
Classes utilitárias – sem objetos!
Iniciadoras de Programas – apenas tem o método main
!
Lembrando: Coesão
Uma classe deve representar um único conceito
Interface coesa: se todas as suas funcionalidades estão relacionadas com o conceito da classe
Essa classe não tem coesão:
public class CashRegister { public void enterPayment(int dollars, int{ quarters, int dimes, int nickels, int pennies)
. . . public static final double NICKEL_VALUE = 0.05; public static final double DIME_VALUE = 0.1; public static final double QUARTER_VALUE = 0.25;
. . .!
}!
Lembrando: Acoplamento
Uma classe está acoplada a outra se ela usa objetos dessa classe
Lembrando: Métodos de Acesso e
Modificadores
Acesso: Não mudam o estado do objeto double balance = account.getBalance();
Modificador: modifica o objeto quando invocado account.deposit(1000); !
Classe Imutável: não tem métodos modificadores
String name= "John Q. Public”;!
String uppercased= name.toUpperCase(); //não muda!
Tente usar classes imutáveis, métodos sem efeitos colaterais Sempre que possível.
Lembrando: Efeito Colateral
Efeito colateral de um método: qualquer modificação de dados observável externamente
Ex: Saída de dados
public void printBalance() // Not recommended
{
System.out.println("The balance is now $" + ! balance); }!
Minimize os efeitos colaterais
Lembrando: Precondições
Precondição: Requisito que o chamador de um método deve obedecer
Precondições devem ser publicadas usuários não chamarão os métodos com parâmetros incorretos
/**
Deposits money into this account.
@param amount the amount of money to deposit
(Precondition: