Entrar
Usuário novo? Cadastre-se
fugpe
? Você já é um associado? Entre no Yahoo!

Dicas

Você sabia...
Você pode ordenar suas mensagens por data? Basta clicar no link da coluna data. Suas preferências serão lembradas para que você não precise fazer isso novamente sempre que retornar.

Mensagens

  Ajuda
Avançado
OOP: Interfaces   Lista de mensagens  
Responder | Encaminhar Mensagem #2006 de 9963 |
Re: [FUGPE] OOP: Interfaces

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]




Seg, 4 de Jul de 2005 5:19 pm

felipebzr
Offline Offline
Enviar e-mail Enviar e-mail

Encaminhar Mensagem #2006 de 9963 |
Expandir mensagens Nome/E-mail Classificar por data

Aí vai uma dúvida sobre OOP em actionScript: Qual a necessidade de declarar que uma classe implementa uma interface (consequentemente implementa todos os...
renato_anything
Offline Enviar e-mail
4 de Jul de 2005
12:09 pm

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...
Felipe Andrade
felipebzr
Offline Enviar e-mail
4 de Jul de 2005
5:19 pm

Felipe, você me ajudou e muito! Mais esclarecedor do que isso, impossível! Muito obrigado mesmo! A resposta está tão completa que mereceria (e deveria) ser...
renato_anything
Offline Enviar e-mail
4 de Jul de 2005
6:14 pm

Valeu Renato, estou bastante satisfeito em saber que estou ajudando você ou a várias outras pessoas a desenvolverem sua criatividade e seus softwares da...
Felipe Andrade
felipebzr
Offline Enviar e-mail
4 de Jul de 2005
10:36 pm

Parabéns Felipe! ... -- Pedro Claudio pcsilva@... www.mxstudio.com.br...
Pedro Claudio
pedro_claudi...
Offline Enviar e-mail
4 de Jul de 2005
10:56 pm

... E ae Felipão beless ? Show tua iniciativa de publicar isso. Então pra ficar melhor, você poderia alimentar um pouco teu artigo com exemplos práticos da...
Neto Leal
neto_fugpe
Offline Enviar e-mail
5 de Jul de 2005
11:19 am

CLap clap clap clap explicado e mastigado fuderooooso hihihihi TeORiA ... From: Felipe Andrade To: fugpe@... Sent: Monday, July 04, 2005 2:19 PM...
Rodrigo Carneiro
rodrigo_teoria
Offline Enviar e-mail
4 de Jul de 2005
5:44 pm

resumindo... do kralho! ... -- Lucas Ferreira ... http://www.lucasferreira.com/...
lucasferreira.com
panchorf_pwp
Offline Enviar e-mail
4 de Jul de 2005
6:08 pm

Mereceu um post http://www.netoleal.com.br/stuff/blogs/index.cfm?post=102 Parabéns Felipão!!! Falow ! -- Neto Leal - Diretor Técnico, Master Instructor,...
Neto Leal
neto_fugpe
Offline Enviar e-mail
4 de Jul de 2005
6:22 pm

Felipe, se quiser publicar isso em um portal, me fala que mando para o Juliano do MXStudio que é nosso parceiro aqui no FUGPE. Ele agradeceria bastante !! ...
Neto Leal
neto_fugpe
Offline Enviar e-mail
4 de Jul de 2005
6:25 pm
Avançado

Copyright © 2009 Yahoo! do Brasil Internet Ltda. Todos os direitos reservados.
Política de Privacidade - Termos do Serviço - Diretrizes - Ajuda