terça-feira, 8 de julho de 2008

Conceitos da Orientação a Objetos com UML, parte 4

Este quarto post tem como objetivo discutir os conceitos associados ao mecanismo de herança da Orientação a Objetos. A herança é um dos recursos mais poderosos da OO quando falamos de "reuso" de código. Porém esta deve ser utilizada com muita cautela, pois muitas vezes é aplicada de forma desnecessária e leva muitas modelagens ao fracasso.

Herança

A herança é o mecanismo da OO que permite que compartilhemos atributos e métodos entre classes, quando detectamos similaridades entre estas. A herança modela relações como "Classe A é do tipo de Classe B" e "Classe A é como Classe B".

Neste primeiro exemplo vemos o uso de classes com características comuns, porém a herança não é aplicada.

Podemos ver claramente a duplicação de conceitos. Entre estas duplicações, temos as relações das classes semelhantes (Contas Corrente e Poupança) com as classes Pessoa e Transacao, além do atributo saldo, e sua respectiva propriedade.

É fácil percebermos que Conta Corrente e Conta Poupança são tipos de contas bancárias. Aplicando o mecanismo de reuso através da herança, podemos chegar ao seguinte modelo:

Perceba que os elementos duplicados não mais existem nesse modelo. As características comuns estão concentradas na classe abstrata Conta Bancaria. Uma vez que estes elementos comuns são agrupados em uma única classe, futuras adaptações ou correções do sistema ficarão mais fáceis (visto que estas não precisarão ser replicadas).

Supertipo: Refere-se à classe superior na relação de herança (no exemplo, a classe Conta Bancaria)

Subtipo: Refere-se à classe especializada na relação de herança (no exemplo, as classes Conta Corrente e Conta Poupança)

Sobreposição: A sobreposição refere-se à redefinição de métodos na hierarquia da herança, de forma que estes métodos implementam definições diferentes (mais especializadas) nos subtipos

Conceitos da OO nos posts anteriores:

Nos próximos posts, ainda serão tratados:

0 Comments: