As classes são a estrutura
de dados que darão ao programador a noção do domínio do problema.
O modelo de classes tem os
dados e o comportamento destes.
Uma classe é uma abstração
de um conjunto de coisas que possuem características e operações em comum. Ela surge da
união de vários objetos que possuem coisas em comum.
Os atributos de uma classe
correspondem à descrição dos dados armazenados pelos objetos. A cada atributo
de uma classe está associado um conjunto de valores que esse atributo pode
assumir. Cada instância de classe assume valores diferentes para cada atributo.
As operações correspondem
à descrição das ações que os objetos de uma classe sabem realizar. Objetos de
uma classe compartilham as mesmas operações.
Conceitos que ajudam na identificação e
definição de classes e métodos:
- Modelar como classes as entidades que ocorrem naturalmente no domínio do problema;
- Projetar métodos com um único objetivo;
- Projetar um novo método quando se defrontar com a alternativa de ampliar um já existente;
- Evitar métodos extensos;
- Armazenar como variáveis de instância os dados que são necessários a mais de um método ou a uma subclasse;
- Projetar para uma biblioteca de classe, não para si próprio ou para sua aplicação.
Uma nova classe deve ser criada quando:
- A nova classe representar uma abstração significativa para o domínio do problema;
- Os serviços que ela proporcionar forem provavelmente usados por várias outras classes;
- O seu comportamento for inerentemente complexo;
- A classe ou método fizer pouco uso das representações dos seus operandos;
- Se representada como um método de uma outra classe, poucos usuários desta classe a solicitariam.
Regras para elaborar classes abstratas:
- Identificar mensagens e métodos comuns e migrá-los para uma super classe. Isto pode criar a necessidade de quebrar métodos e dividi-los entre superclasses e subclasses;
- Eliminar os métodos de uma superclasse que são freqüentemente sobrescritos em vez de herdados por suas subclasses. Isto tornará a superclasse mais abstrata e conseqüentemente mais útil;
- Acessar todas as variáveis somente pelo envio de mensagens. As classes ficarão mais abstratas quando dependerem menos das suas representações de dados;
- Trabalhar subclasses para serem especializadas. Uma subclasse será especializada se herdar todos os métodos da superclasse e acrescentar novos a si própria. Uma subclasse deveria sempre representar um superconjunto do comportamento de seus pais.
0 comentários:
Postar um comentário