veio acredito q isto seja inviavel, o javaée orientado por natureza e ate compligado criar algo estruturado com ele, se vc realmente precisar seria mais facil criar em linguagem C e depois chamar o codigo pelo java.
everson_z:
veio acredito q isto seja inviavel, o javaée orientado por natureza e ate compligado criar algo estruturado com ele, se vc realmente precisar seria mais facil criar em linguagem C e depois chamar o codigo pelo java.
Complicado??? acho que não… java é uma linguagem que te permite programar de uma maneira orientada a objetos… mas se vc quiser programar estruturalmente que nem C não a problema algum…
Quando eu comecei a programar em java achava tudo muito bonito e ficava orgulhoso de programar Orientado a Objetos…
Com o passar do tempo fui aprendendo alguns Design Patterns e percebia que os programas eu eu fazia estava tão estruturados quanto programação C.
Às vezes usar java não é o mesmo que programar orientado a objeto
Possivelmente sim.
Se você for obrigado a resolver alguns problemas, principalmente relacionados com workflows e álgebra, pode ser que trabalhar proceduralmente (estruturado OO também é) seja a melhor escolha.
Duas coisas:
-
Mais importante: Se você precisa disso talvez o problema seja utilizar a linguagem errada para o problema. Considere utilizar uma linguagem especializada para o que deseja fazer.
-
Caso tenha que programar de maneira procedural em Java geralmente é melhor abstrair as funções em objetos utilizando Commands e Chain of Responsibility.
Everson,
Se você pegar os requisitos do seu sistema e perceber que existe uma seqüência de passos bem definidas para atingir um objetivo, na minha opinião é o caso de se programar estruturalmente. Pegue estes passos e tente extrair deles um “caso de uso”. Se a sua “conversão” for bem simples e direta, ou seja, se você conseguir mapear estes passos diretamente para um caso de uso, é mais uma evidência de que é melhor usar esta abordagem É o caso de sistemas que só fazem CRUD ou fazem muitos processamentos em lote, por exemplo.
A vantagem é que a modelagem do seu sistema vai ficar bem simples. A desvantagem é que você não pode usar os recursos da orientação a objetos (polimorfismo, encapsulamento, deixar o seu modelo mais expressivo, mais perto da realidade, mais “rico”, etc).
Acho que se está confundindo o conceito de “programação estruturada” com o conceito de “organização”.
Muita gente diz genericamente que pensar “organizadamente” é pensar “de forma estruturada”.
Pode ser que a pessoa que lhe esteja dizendo isso esteja pensando em organização - e organização se aplica a qualquer estilo de programação: funcional, genérica, orientada a objetos, estruturada etc, não no conceito de “programação estruturada” (em contraposição a “programação orientada a objetos”).
Programar “organizadamente” é realmente a melhor solução. Não quer dizer que você tenha de usar “programação estruturada”, que é um estilo de programação bastante antigo mas que é muito útil ainda hoje em dia. A verdadeira “programação orientada a objeto” é na verdade mais difícil de encontrar, mesmo em Java, que a programação estruturada.
Existem várias formas de se conceber a arquitetura de um projeto…
Martin Fowler descreve algumas como o modelo dominio, módulo tabela, roteiro de transações e por ai vai… Emboras as ultimas duas nao sigam a risca a OO, ainda assim vc está utilizando OO. e mais, Vai depender mto do tamanho e complexidade da aplicação.
É bom ser equilibrado “Nem matar coelho com canhão” e “Nem enfrentar um Leão com um canivetinho”…
programação procedural em java pra mim só entendo se for estatico.
Às vezes ocorre de você programar de forma procedural em java e isso não ser errado. Existem problemas que em forma procedural são muito mais fáceis de resolver. Ou às vezes tem um desempenho melhor (um excelente exemplo neste caso é a existência dos tipos primitivos). Às vezes é necessário fazer isso pra contornar alguma limitação de algum framework ou de alguma outra coisa.
Mas no geral, a programação puramente procedural no java deve ser evitada. Não é esse o objetivo da linguagem.
Eu realmente gostaria de conhecer alguns deles. E principalmente que justifiquem java.
A existência de tipos primitivos não faz de Java menos OO.
java só não é 100% OO por causa dos seus tipos primitivos…
Na verdade, algumas classes que só contém métodos estáticos (ex: java.lang.System) e não correspondem a Factories ou a quaisquer outras coisas OO não são orientadas a objetos. São apenas um conjunto de funções procedurais.
Outras formas de não-OO em java são classes com baixíssima coesão (classe FazTudo), mas isso é um caso de programação ruim.
Alguns problemas matemáticos se encaixam nessa situação. Por exemplo:
public static double[] baskara(double a, double b, double c) {
if (a == 0.0) throw new ArithmeticException("Não é uma função do segundo grau.");
double delta = b * b - 4 * a * c;
if (delta < 0.0) throw new ArithmeticException("Delta é negativo.");
return new double[] {
(-b + Math.sqrt(delta)) / (2 * a),
(-b - Math.sqrt(delta)) / (2 * a)
};
}
EDIT: Arrumando probleminha com o código.
Existe algum caso em que a melhor solução para desenvolver (com java) é de forma estruturada???
Eu nunca vi, mas semana me falaram isso e me pediram isso também!
:?:
A minha pergunta: Existe algum caso em que a melhor solução para desenvolver (com java) é de forma estruturada???
Vocês estão respondendo se é possível, mas pergunto se existe algum caso que esta seja a melhor solução
vlw