- Encapsulamento
"Esconder um membro" em C++ significa declaralo na sessão privada(private) ou protegida(protected) da classe. Um membro privado só pode ser acessado em métodos da prórpia classe onde foi declarado. Membros protegidos podem ser acessados por métodos da própria classe e de classes derivadas publicamente da classe onde foi declarada. Membros públicos podem ser acessados por quaisquer métodos e definem a interface da classe.
Para um atributo privado ou protegido o acesso a este só pode ser efetuado por métodos quaisquer indiretamente, através de métodos declarados na classe do atributo chamados "setters" e "getters". Um setter é utilizado para atribuição de um novo valor para um atributo, enquanto um getter é utilizado para a obtenção de um valor.
Um atributo para o qual há um getter e um setter é uma propriedade do objeto. Embora aconselhável esconder um atributo, seu acesso por getters e setters(ou seja, funções) podem acrescentar ineficiência ao sistema. Em C++ tal ineficiência é evitada com o uso de métodos "in-line". Em uma mensagem na qual o método in-line é aclopado, não há um overhead(custo) de uma chamada de função. Ao invés disso o corpo do métodos é expandido em linha no local da mensagem. Com isso o código gerado fica maior dependendo do tamanho do corpo do método corrente, por isso, métodos in-line tem que ser criteriosamente usados. Em C++ todo método implementado dentro de sua classe é inline. Métodos implementados fora da classe tem que ser explicitamente declarados com a palavra inline. De fato o compilador tenta fazer o método in-line se possível ( Ou seja, nem todo método declarado in-line é efetivamente inline ).
As vantagens do encapsulamento são:
- Melhor organização do cógigo.
- Alterações em membros encapsulados de uma classe não são refletidas nos métodos de outros objetos usuários da classe(a não ser que essas alterações modifiquem a interface da classe).
- Herança
..__
| X |
../ ...|
..__
| Y |
Há quatro maneiras de uma classe Derivada especializar uma classe Base:
- Adicionando novos atributos
- Adicionando novos métodos
- Redefinindo a implementação de métodos herdados da classe Base
- Não fazendo nada
Obs. Ao contrário de Java, C++ admite herança multipla, isto é, uma classe pode ser Derivada de duas ou mais classes Bases.
- Polimorfismo(várias formas)


6:15 AM
Unknown
0 comentários:
Postar um comentário