Olá Renato, o uso de interfaces é como um boa prática na modelagem de softwares
OOP, pois força você a pensar em objetos e como se dá o relacionamento entre
eles, construindo com isso a “planta” do sistema de uma forma robusta e clara.
Depois de elaborada, discutida e implementada a estrutura, basta começar a
“construção” seguindo os moldes já existentes.
As interfaces podem ser utilizadas de diversas formas, um bom exemplo do seu uso
é:
Uma empresa de software possuia um sistema de locação de carros. O sistema era
relativamente simples, utilizando cadastros e controle de carros locados,
mantendo um histórico das informações do veículo.
Certo dia uma empresa de locação de aviões fechou contrato com essa mesma
empresa de software, a única diferença das empresas é que a empresa de locação
de aviões, locava apenas aviões enquanto a outra empresa locava somente carros.
Em suma, pode-se utilizar o sistema originalmente desenvolvido para locação de
carros com algumas poucas adaptações.
O problema foi que aviões possuiam algumas características peculiares não
possuídas por carros, e vice-versa. A solução foi então criar uma nova classe
chamada Aviao, para representar os aviões da empresa:
class Aviao {
}
agora surge outro problema, algumas classes do sistema possuiam códigos como
este:
class Relatorios {
public function imprimirRelatorio(carro:Carro) {
}
}
Ou seja, seria necessário alterar todas as classes para que recebessem como
parametro um objeto da classe Avião. Obrigando assim a empresa a manter duas
versões diferentes de um software extremamente semelhante, o que implicava em
trabalho dobrado à cada atualização e/ou modificação. A solução encontrada foi
utilizar interfaces para realizar o que talvez deveria ter sido feito durante a
modelagem inicial do sistema. Percebeu-se que, do ponto de vista do sistema,
tanto carros quanto aviões eram Transportes. Assim, reuniu-se todos os métodos
comuns à Trasportes (independentes de serem aviões ou carros), e colocou-se em
uma interface como a seguir:
interface Transportes {
public function getNome():String;
public function getHistorico():Historico;
}
Tanto a classe Aviao quanto a classe Carro são Transportes, logo, o único código
que teve de ser acrescentado à estas classes foi:
class Aviao implements Transportes {
}
class Carro implements Transportes {
}
resultando em códigos como:
var a:Transportes = new Carro( ... );
var b:Transportes = new Aviao( ... );
Assim, ainda foi necessário alterar no sistema os códigos que lidavam com
objetos do tipo Carro, para lidar agora com objetos do tipo Transportes. A
vantagem é que o mesmo sistema poderia ser utilizado tanto por empresas de
locação de carros, como de aviões, ou qualquer outra empresa caso houver a
necessidade, sem causar um grande aumento de trabalho e eliminando a necessidade
de se manter um sistema em separado.
public class Relatorios {
public void imprimirRelatio(relatorio:Transporte) {
...
}
}
Quando desenvolvendo um sistema, experimente pensar nos tipos que ira precisar,
crie suas interfaces e especifique o relacionamento entre eles. Você com certeza
notará que conseguirá ver de antemão, muitos dos problemas de desenvolvimento
que só seriam detectados no futuro, assim, quando tiver uma estrutura pronta,
seu código ficará muito mais limpo e claro.
Falow,
Felipe Andrade Bezerra
Macromedia Certified Professional
renato_anything <renato_anything@...> escreveu:
Aí vai uma dúvida sobre OOP em actionScript:
Qual a necessidade de declarar que uma classe implementa uma interface
(consequentemente implementa todos os métodos dessa) se o programador
poderia simplesmente implementar os métodos como se fossem definidos
pela própria classe? Para mim, pareceu só uma questão de organização.
Estou certo? Ou existe mais alguma outra utilidade para isso? Até
mesmo porque se vcs derem uma olhada na última parte desse artigo:
http://www.cs.unc.edu/~parente/tech/tr03.shtm
o autor deu a entender que as interfaces servem para
suprir a ausência de herânça múltipla no ActionScript 2.0.
Obrigado,
Renato Azevedo;
Treinamento Autorizado Macromedia
www.infomar.com.br
www.imediabrasil.com.br
Ensino superior em informática
www.unibratec.com.br
Hospedagem de qualidade
www.viasky.com.br
---------------------------------
Links do Yahoo! Grupos
Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/fugpe/
Para sair deste grupo, envie um e-mail para:
fugpe-unsubscribe@...
O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do
Yahoo!.
__________________________________________________
Converse com seus amigos em tempo real com o Yahoo! Messenger
http://br.download.yahoo.com/messenger/
[As partes desta mensagem que não continham texto foram removidas]