[Pesquisa] Qual foi sua maior dificuldade em POO?

56 respostas
N

Pessoal estou elaborando uma plataforma educacional versão POO para os iniciantes em Programação Orientada a Objetos do Instituto Federal e Universidade Federal do RN. Esse é meu TCC;

Queria saber na opinião de vocês , qual foi aquela pior coisa de se entender na orientação a objetos quando você começou, as dúvidas que vocês nunca entendiam as respostas , etc;
Isso vai fazer parte do “Dúvidas Frequentes” da plataforma.

Agradeço, desde já.
:smiley:

56 Respostas

N

Ahh já ía esquecendo, grade do curso == POO + Java , por isso a complicação de sair de algoritmos
com o pensamento estruturado e no outro semestre entender um paradigma O.O.

:lol:

U

Polimorfismo deu um pouco de trabalho pra entender!
mais depois de 30:00 min de leitura entendir!

Boa sorte com o TCC

vlw

R

porque fazer desse jeito se eu posso fazer procedural?

é sério, depois que eu tirei esse nó da cabeça, as coisas ficaram muito mais claras.

T

Classe Abstrata, Interfaces…

V

Faz tanto tempo que já quase não lembro.

Mas lembro-me que tive um pouco de dificuldade de entender o polimorfismo. E também que OO ficou muito mais clara quando comecei a associar código à objetos de verdade.

Uma técnica que tenho usado com meus alunos, e que tem ajudado muito é usar uma analogia simples. Eu ponho no powerpoint a figura de 4 bichinhos. Um gatinho, uma galinha, um porco e um cachorrinho. Peço para um aluno escolher um deles.

E então digo para a turma. "Esse aluno está apontando para um Animal".

Peço então para outro aluno pedir uma característica no animal, para eles descobrirem que animal é esse. Quase institivamente, o aluno pergunta "Que barulho o animal faz?"

O aluno que está apontando então faz algum som, dependendo do bicho que escolheu como "Au! Au!".

Todo mundo dá risada e acha que foi muito fácil, muito lógico. Então mostro isso em código:

//Temos 4 animais na transparência
//Se são animais, todas essas classes "extends animal".
Cachorro cachorro = new Cachorro();
Gato gato = new Gato();
Porco porco = new Porco();
Galinha galinha = new Galinha();

//A é uma variável que irá apontar para um animal
Animal a;

//Nossa colega, decidiu apontar para um cachorro.
a = cachorro;

//E então perguntamos. Que barulho o animal faz?
a.barulho();

//A resposta: Au au!

A maioria, depois dessa brincadeira simples, tem os olhos iluminados e sorrisos bobos na face. Só tomara que não estejam é rindo da minha cada. :lol:

M

a vantagem na prática do conceito “programar para uma interface”… já que eu não via muito isso na prática, nessa época…

J
ViniGodoy:
Faz tanto tempo que já quase não lembro.

Mas lembro-me que tive um pouco de dificuldade de entender o polimorfismo. E também que OO ficou muito mais clara quando comecei a associar código à objetos de verdade.

Uma técnica que tenho usado com meus alunos, e que tem ajudado muito é usar uma analogia simples. Eu ponho no powerpoint a figura de 4 bichinhos. Um gatinho, uma galinha, um porco e um cachorrinho. Peço para um aluno escolher um deles.

E então digo para a turma. "Esse aluno está apontando para um Animal".

Peço então para outro aluno pedir uma característica no animal, para eles descobrirem que animal é esse. Quase institivamente, o aluno pergunta "Que barulho o animal faz?"

O aluno que está apontando então faz algum som, dependendo do bicho que escolheu como "Au! Au!".

Todo mundo dá risada e acha que foi muito fácil, muito lógico. Então mostro isso em código:

//Temos 4 animais na transparência
//Se são animais, todas essas classes "extends animal".
Cachorro cachorro = new Cachorro();
Gato gato = new Gato();
Porco porco = new Porco();
Galinha galinha = new Galinha();

//A é uma variável que irá apontar para um animal
Animal a;

//Nossa colega, decidiu apontar para um cachorro.
a = cachorro;

//E então perguntamos. Que barulho o animal faz?
a.barulho();

//A resposta: Au au!

A maioria, depois dessa brincadeira simples, tem os olhos iluminados e sorrisos bobos na face. Só tomara que não estejam é rindo da minha cada. :lol:

Eu não tive dificuldades porque aprendi da mesma maneira que você citou. Comecei a enxergar tudo como objetos que interagem e se encaixam uns nos outros.

M

Eu não tive dificuldade por que eu começei com OO.
Quando começei a faculdade e vi procedural eu pensei o contrario.
“Por que fazer assim se eu posso fazer OO?”

M

Eu prefiro usar OO apenas para interfaces gráficas. Mas a principal dificuldade é entender que OO pode ser usada tb para criar aplicações que processam informações, e não apenas modelar objetos do mundo real. Infelizmente a maioria dos textos introdutorios estão mais preocupadas em modelar objetos do mundo real. Quem nunca viu aquele “código OO” que modela cachorros, gatos, carros, pessoas, etc. Apesar de não ter uma didática melhor pra oferecer eu acho que esse tipo de exemplo tem um efeito negativo na forma de pensar o paradigma já que as pessoas ficam acostumadas a criar simulações o que não é o caso da maioria do software que é desenvolvido em OO hoje em dia.

L

Mark_Ameba:
Eu não tive dificuldade por que eu começei com OO.
Quando começei a faculdade e vi procedural eu pensei o contrario.
“Por que fazer assim se eu posso fazer OO?”

Eu também.

N

Obrigada por estarem ajudando. .
adorei a metodologia do ViniGodoy para ensinar aos alunos;
Nunca pude aprender assim , lembro na primeira aula que o professor mandou a gente abrir a api java e
procurar algo que pudesse ler do teclado , em java . kkkkkkkk e eu? Api o que é isso? e o read não funciona mais? kkkkkkkk

W

Simuação de herança múltipla (interfaces), sobrecarga e sobrescrita de métodos, sobrecarga de construtores, polimorfismo.
acho q é isso. :smiley:

R

Quando usar interfaces e a escolha entre herança, associação, agregação e composição.

R

Dificuldade que encontrei foi entender o polimorfismo, dar prioridade a composiçao com a relação a herança e programar para interfaces e não para implementações.

Sugestão Naanda cria um pool com as principais dificuldades assim fica melhor a apuração.

L

Oi,

Acho que não tive dificuldades em OO.
Comecei lendo livros e mais livros. Depois estudei a API e fui programando…

Geralmente em minhas aulas, procuro transformar o JAVA em realidade. Ou seja, descrever situações existentes no JAVA que encontramos dia a dia.

A última foi explicar Serialização.

Tchauzin!

L

no momento estou se apropriando em “android” ontem fui na palestra aki em sp …foi d ++ show muito loko !!! os gringos eram fodas no bagulho!

vai ter mais uma , vai ser o dia todo e no final baladinha !, pra curtir o a noitada.

kkkkk

M

lokit"s:
no momento estou se apropriando em “android” ontem fui na palestra aki em sp …foi d ++ show muito loko !!! os gringos eram fodas no bagulho!

vai ter mais uma , vai ser o dia todo e no final baladinha !, pra curtir o a noitada.

kkkkk

Oque que isso tem haver com o tópico?

Bem eu posso falar o que acontece comigo no momento. Interfaces não sei oque fazer com elas, composição não sei para que serve, e herança ±, na visão de quem está começando como eu, era mais fácil jogar tudo dentro de uma classe e ser féliz. rsrsrsrsrssrs!

L

lokit"s:
no momento estou se apropriando em “android” ontem fui na palestra aki em sp …foi d ++ show muito loko !!! os gringos eram fodas no bagulho!

vai ter mais uma , vai ser o dia todo e no final baladinha !, pra curtir o a noitada.

kkkkk

???

L

falo o que kero!!! acho ruim!!!

os dois.

B

A dificuldade maior que vejo é parar de pensar que OO é sobre interface, herança, polimorfismo, sobrecarga, sobreescrita, associação, agregação, composição, construtores, métodos e etc, e passar a pensar que é sobre inteligência dos objetos (dados operarem sobre eles mesmos, encapsulados) e colaboração entre objetos, enquanto encapsulados (orquestração, passagem de mensagens).

M

Curioso, o que vc quer parar de pensar é o que a maioria das pessoas acha difícil de entender. Isso comprova a minha tese que os textos introdutorios de OO são uma pessima influencia para aprender o paradigma. Porque focam apenas no primeiro aspecto. Pode ver qualquer exemplo de Gato, Cachorro e BichoDeQuatroPatas.

B

Primeira vez que concordo 100% com o que o mochuara fala. [size=7]dá uma olhada no G1.com.br se teve algum outro terremoto no mundo, ou se tem frente fria vindo para Cuiabá[/size]

Gatinhos e Cachorinhos não ensinam OO, ensinam herança.

L

Primeira vez que concordo 100% com o que o mochuara fala. [size=7]dá uma olhada no G1.com.br se teve algum outro terremoto no mundo, ou se tem frente fria vindo para Cuiabá[/size]

Gatinhos e Cachorinhos não ensinam OO, ensinam herança.

:lol: :lol: :lol:

R
ViniGodoy:
Faz tanto tempo que já quase não lembro.

Mas lembro-me que tive um pouco de dificuldade de entender o polimorfismo. E também que OO ficou muito mais clara quando comecei a associar código à objetos de verdade.

Uma técnica que tenho usado com meus alunos, e que tem ajudado muito é usar uma analogia simples. Eu ponho no powerpoint a figura de 4 bichinhos. Um gatinho, uma galinha, um porco e um cachorrinho. Peço para um aluno escolher um deles.

E então digo para a turma. "Esse aluno está apontando para um Animal".

Peço então para outro aluno pedir uma característica no animal, para eles descobrirem que animal é esse. Quase institivamente, o aluno pergunta "Que barulho o animal faz?"

O aluno que está apontando então faz algum som, dependendo do bicho que escolheu como "Au! Au!".

Todo mundo dá risada e acha que foi muito fácil, muito lógico. Então mostro isso em código:

//Temos 4 animais na transparência
//Se são animais, todas essas classes "extends animal".
Cachorro cachorro = new Cachorro();
Gato gato = new Gato();
Porco porco = new Porco();
Galinha galinha = new Galinha();

//A é uma variável que irá apontar para um animal
Animal a;

//Nossa colega, decidiu apontar para um cachorro.
a = cachorro;

//E então perguntamos. Que barulho o animal faz?
a.barulho();

//A resposta: Au au!

A maioria, depois dessa brincadeira simples, tem os olhos iluminados e sorrisos bobos na face. Só tomara que não estejam é rindo da minha cada. :lol:

Cara muito boa esta comparação, estou começando agora em Java e muitas vezes me pergunto como associar as ações ao objeto.

D

Tirando o “polimorfismo” como a maioria disse, é fácil.

Quase tão fácil quanto programação visual.

I

Quando comecei(em 2002), sem dúvida a maior dificuldade era o famoso “programar para interfaces”, que exigia um nível de abstração punk(para quem é novato em OO).Na linguagem java, o uso do this me deixou louco no início.

J

lina:
Oi,

Acho que não tive dificuldades em OO.
Comecei lendo livros e mais livros. Depois estudei a API e fui programando…

Geralmente em minhas aulas, procuro transformar o JAVA em realidade. Ou seja, descrever situações existentes no JAVA que encontramos dia a dia.

A última foi explicar Serialização.

Tchauzin!

Uma boa leitura é insubstituível mesmo. Resolver problemas do mundo real obriga os alunos a trabalharem mais a lógica, e consequentemente terão mais domínio nos algoritmos.

N

Obg ramilani12 , até pensei em fz uma enquete , mas eu queria pegar os assuntos mesmo já que o que
eu julguei ser difícil pra mim, pode ter sido fácil para outros e vice-versa;

Aquela velha história de quem programa não testa ’ :smiley:

V

Um livro ótimo sobre OO é o do Grady Booch, Object Oriented Analysis and Design - with Applications. Não sei se o livro já passou por alguma revisão, pois ele estaria um pouco desatualizado para os padrões de hoje. Mas os desenhos do livro são realmente ótimos!

Ele detalha muitos conceitos importantes como interfaces, encapsulamento, abstração, gerenciamento da complexidade, divisão em subsistemas, etc. Coisas que são mais fundamentais no entendimento da OO do que muita coisa que a gente vê na faculdade. E o detalhe, a abordagem é muito didática.

N

Curioso, o que vc quer parar de pensar é o que a maioria das pessoas acha difícil de entender. Isso comprova a minha tese que os textos introdutorios de OO são uma pessima influencia para aprender o paradigma. Porque focam apenas no primeiro aspecto. Pode ver qualquer exemplo de Gato, Cachorro e BichoDeQuatroPatas.

kkkkkkkkkkkkkk o meu professor era 10 pra ensinar essas coisas , lembro de uma pérola em sala de aula assim:

professor: "- A herança dar-se quando uma classe derivada herda as características de sua classe base, exemplo bar e bordel , um bordel tem tudo qe um bar tem e um pouco mais, depois de bordel alguém me dá um exemplo? "

colega de sala: " Big Brother Brasil !! tem td qe um bar e um bordel tem e um pouquinho mais "

kkkkkkkkkkkkkk

F

A minha maior dificuldade é saber pra qual lado aquele diamante que representa a Agregacao e a Composicao tem de estar apontado no Diagrama. Para o Todo ou para a Parte? Outra também é como montar um Modelo de Dominio, ou como outros autores preferem, o Modelo de Classes de Análise/Projeto da melhor maneira possível.

O MER em seu nivel Conceitual possui regras mais claras de como você abstrai, generaliza e classifica abstrações. Além disso com a Normalização voce atinge uma segurança confortável para o seu modelo. Ele acaba sendo modificado apenas diante de mudanças de requisitos. Acredito que em essencia na O.O. o processo tenha suas semelhanças, mas o resultado é diferente. Ajustar a granularidade e o reúso não é tarefa trivial e ao meu ver exige um tato do profissional quase que esotérico. De qualquer forma preciso ler mais sobre DDD, Craig Lairman e Rumbaugh et al.

V

Threads, e leitor de qualquer coisa (arquivo, teclado, rede)

M

Compreender os conceitos, pois estava abituado com programação procedural.

A

Oi,

Colocar em pratica, achava mais comodo continuar da forma procedural. :roll:

G

Resumindo, todos tiveram sérias dificuldades com o Java, porque é difícil mesmo, foi planejado para ser difícil de entender,
porque os projetistas dessa linguagem que nos foi imposta pelos norte-americanos eram fracos, isso mesmo fracos, nem entenderam a herança, tanto que o próprio treinamento da Caelum (um dos melhores que já vi para Java) prega que você esqueça a herança e prefira a composição, contrariando o que dizem os livros sobre o assunto, onde está escrito que os 3 pilares da OO são: Herança, Polimorfismo e Encapsulamento, portanto como não entenderam a herança e não conseguiram implementá-la então mandam esquecer, ridículo!!! , mas falando um pouco da praticidade de programar no paradigma OO como está sendo ensinado e colocado na prática, pelo que tenho visto (trabalho em uma instituição financeira de grande porte), acho que o que está sendo produzido com essa linguagem (sem herança)
não fica longe de montanhas de código estruturado que tínhamos ou temos em aplicações mais antigas (no legado), não é estruturado mas a quantidade produzida tá muito alta, com pouca reusabilidade que é o que os evangelistas de Java pregam, mas então eu pergunto: porque temos que aceitar, como vaquinhas de presépio essas linguagens impostas por empresas estrangeiras, não venham me dizer que não é a realidade, que não temos condições de produzir uma linguagem coerente, nacional, não venham dizer que é nacionalismo, porque é melhor ser nacionalista do que ser vaquinha de presépio e aceitar resignado tudo que te empurram goela-abaixo, será que não temos condições de construir linguagens? claro que temos pessoal, acordem, eu mesmo já desenvolvi várias IDEs, mas não tenho a influência, o dinheiro para torná-las famosas, mas fica aqui o apelo para menos conformismo e mais inovação!!!

ps. não sou contra nenhuma em particular, nem contra o Java, sou contra a forma como vem sendo implementado!

veja: (do manual "Material do Treinamento Java e Orientação a Objetos" FJ11 da Caelum)

… James Gosling, um dos criadores do Java, é um crítico do mau uso da herança. Nesta entrevista ele discute a possibilidade de se utilizar apenas interfaces e composição, eliminando a necessidade da herança:
http://www.artima.com/intv/gosling3P.html

A

gadriano:
Resumindo, todos tiveram sérias dificuldades com o Java, porque é difícil mesmo, foi planejado para ser difícil de entender,
porque os projetistas dessa linguagem que nos foi imposta pelos norte-americanos eram fracos, isso mesmo fracos, nem entenderam a herança, tanto que o próprio treinamento da Caelum (um dos melhores que já vi para Java) prega que você esqueça a herança e prefira a composição, contrariando o que dizem os livros sobre o assunto, onde está escrito que os 3 pilares da OO são: Herança, Polimorfismo e Encapsulamento, portanto como não entenderam a herança e não conseguiram implementá-la então mandam esquecer, ridículo!!! , mas falando um pouco da praticidade de programar no paradigma OO como está sendo ensinado e colocado na prática, pelo que tenho visto (trabalho em uma instituição financeira de grande porte), acho que o que está sendo produzido com essa linguagem (sem herança)
não fica longe de montanhas de código estruturado que tínhamos ou temos em aplicações mais antigas (no legado), não é estruturado mas a quantidade produzida tá muito alta, com pouca reusabilidade que é o que os evangelistas de Java pregam, mas então eu pergunto: porque temos que aceitar, como vaquinhas de presépio essas linguagens impostas por empresas estrangeiras, não venham me dizer que não é a realidade, que não temos condições de produzir uma linguagem coerente, nacional, não venham dizer que é nacionalismo, porque é melhor ser nacionalista do que ser vaquinha de presépio e aceitar resignado tudo que te empurram goela-abaixo, será que não temos condições de construir linguagens? claro que temos pessoal, acordem, eu mesmo já desenvolvi várias IDEs, mas não tenho a influência, o dinheiro para torná-las famosas, mas fica aqui o apelo para menos conformismo e mais inovação!!!

ps. não sou contra nenhuma em particular, nem contra o Java, sou contra a forma como vem sendo implementado!

veja: (do manual "Material do Treinamento Java e Orientação a Objetos" FJ11 da Caelum)

… James Gosling, um dos criadores do Java, é um crítico do mau uso da herança. Nesta entrevista ele discute a possibilidade de se utilizar apenas interfaces e composição, eliminando a necessidade da herança:
http://www.artima.com/intv/gosling3P.html

Fala cara… acho que todos entendemos seu ponto de vista, porém o desaconselho de Herança não é somente para o Java… Enfim, não vale discutir algo que tem material de montão explicando sobre… O que você vê por aí de uma “pilha de código Procedural em Java” é uma realidade também não somente do Java… Dá pra fazer em qualquer linguagem, código macarrônico e despadronizado… Não generalize a tecnologia por causa do “que você viu”… Já ví muito código escroto em PHP e poderia generalizar que o mesmo não presta… Porém trabalho com o mesmo usando o Zend Framework e sua forma de organização trabalhando fortemente com padrões e Orientação a Objetos… enfim…

A reusabilidade é bem presente em Java sim (Plataforma e Linguagem), mas p quem entende a mesma e aplica os conceitos de forma correta… se você nunca viu um Sistema assim, então realmente não conseguirei lhe convencer (e nem é meu objetivo), mas só queria que não generalizasse uma plataforma ou linguagem só pelo “que você viu”…

Quanto a linguagens e plataformas brasileiras… Eu concordo totalmente com você… Já expus isso algumas vezes no fórum, quando discutimos Inglês X Português… Temos uma gama de profissionais (inclusive aqui no Fórum) com gabarito e conhecimento pra desenvolver uma plataforma e linguagem de Software nacional, e a mesma seria uma das melhores que o mundo já viu, pois nos destacamos do resto do mundo pela criatividade, não a toa temos representantes como commiters em vários projetos gringos e brasileiros trabalhando mundo a fora fazendo a diferença…

Porém tem alguns pontos que gostaria de destacar e que é real aqui em nosso país:

1 - Investimento: quem tá afim de investir tempo e dinheiro no Desenvolvimento de uma oplataforma de Software puramente brasileira e começar a colocar a mesma no mercado ??? Quem está disposto a pagar esses puta profissionais (que também precisam por comida na mesa) pra desenvolver uma linguagem brasileira ??? As nossas universidades, onde a maioria dos professores tá é afim de realizar Projetos para rechearem seus Currículos ??? As Startups que precisam matar um Dragão todos os dias pra poder sobreviver ??? Ou as próprias estrangeiras que estão presentes aqui e são as maiores do País ???

2 - Aceitação no mercado: quem quer usar uma plataforma brasileira ??? apesar de termos alguns casos de sucesso como o Lua, temos ainda muita resistência ao que é produzido aqui no País, justamente por causa desse pensamento ainda pouco de pesquisador e empreendedor. Ainda reforço, nem o próprio empresariado brasileiro faria isso… Se fizessem, seriam alguns gatos pingados que pensam como nós… Fica inviável, fica insuportável manter algo assim…

Aqui mesmo dentro do Brasil temos isso… Aqui no Pará, temos uma gama de profissionais fantásticos, alguns hoje estão em BH, SP, RS, EUA, EUROPA, etc…

Teve um caso que um amigão aqui desceu o preço da concultoria de R$ 200,00 pra R$ 100,00/h só porque descobriu que o cara que fez o trabalho pra ele era um paraense que estava trabalhando em SP… Aí contratou uma outra consultoria de caras de SP, pagou R$ 250,00/h pra nova consultoria avaliar o trabalho e dizer que o mesmo tinha sido bem realizado e que nada precisava ser mexido…

Enfim, falta confiança de nosso empresariado em nós mesmos… Aqui ainda se tem muito o pensamento do “CHIQUE”, tudo que vem de fora é mais Chique, o que se faz aqui não presta…

Abs [] e sucesso.

[EDIT] - desculpa Naanda, não contribuí nada com o tópico e olha que entrei aqui pra responder qual foi minha dificuldade… heueheueh

Bom, minha maior dificuldade, foi realmente entender o PORQUE de se usar Interfaces… Entendi só quando a Katty me explicou no [Use a Cabeça, Java!]

E

O meu maior problema até hoje é a bendita sobrescrita.

A

Recursividade não é conceito OO…

E

¬¬’

Y

Se a duvida é especificamente para os iniciantes de POO, acho que o mais complicado eh o polimorfismo mesmo.

Mas acho que a grande dificuldade que vejo em OO, tanto por experiencia propria, como observando codigo dos outros, é a de definir a responsabilidade dos objetos, até onde deve ir a responsabilidade de um e a partir de que momento outro deve assumir.

Pra isso nao existe formula magica, nem nenhum exemplo de bichinhos que ajude, é caso a caso e experiencia pra se descobrir.

E

Verdade, eu mesma tinha muita dificudade compolimorfismo, principalmente pqquando eu ia pesquisar o que era não achava nada que me explicasse isso tão claramente, e cada vez me confundia.

P

Minha maior dificuldade com POO foi, e continua sendo até hoje, acreditar que ela não foi criada apenas para tornar extremamente complexa a atividade de programar, numa tentativa de elitizar a profissão e valorizar os salários.
Se as linguagens já tinham feito uma grande parte do “serviço”, ao se distanciar anos-luz de qualquer linguagem humana para se tornarem um emaranhado de palavras sem nexo e símbolos quase hieróglifos, a POO foi a pá de cal.
Para provar, estão aí a dificuldade de aprendizado, divergências conceituais, aplicações equivocadas, enfim, uma torre de babel…
E ainda por cima criou-se um clima de radicalização e opressão, onde POO é o único caminho, e o resto é blasfêmia, quando é óbvio que uma grande parte dos problemas seria resolvido de forma mais rápida e clara sem ela.
Somos obrigados a matar formigas com mísseis Tomahawk.
É isso, foi só um desabafo…

G

Concordo plenamente que OO tornou-se uma opressão: parece que só OO tem valor, o resto é blasfêmia como o nosso amigo disse acima, eu acho que OO veio trazer “algum” benefício, não tudo isso que andam alardeando por aí, não gosto de MVC também, não acho que esse seja o caminho para as aplicações tomarem um bom rumo, existe coisa melhor que o conceito que nos está sendo empurrado que é o MVC, coisa de escritor de livro dos EUA, metodologia dos EUA que não deveríamos “amar” tanto por aqui.

F

adriano_si:
Fala cara… acho que todos entendemos seu ponto de vista, porém o desaconselho de Herança não é somente para o Java… Enfim, não vale discutir algo que tem material de montão explicando sobre… O que você vê por aí de uma “pilha de código Procedural em Java” é uma realidade também não somente do Java… Dá pra fazer em qualquer linguagem, código macarrônico e despadronizado… Não generalize a tecnologia por causa do “que você viu”… Já ví muito código escroto em PHP e poderia generalizar que o mesmo não presta… Porém trabalho com o mesmo usando o Zend Framework e sua forma de organização trabalhando fortemente com padrões e Orientação a Objetos… enfim…

A reusabilidade é bem presente em Java sim (Plataforma e Linguagem), mas p quem entende a mesma e aplica os conceitos de forma correta… se você nunca viu um Sistema assim, então realmente não conseguirei lhe convencer (e nem é meu objetivo), mas só queria que não generalizasse uma plataforma ou linguagem só pelo “que você viu”…

Quanto a linguagens e plataformas brasileiras… Eu concordo totalmente com você… Já expus isso algumas vezes no fórum, quando discutimos Inglês X Português… Temos uma gama de profissionais (inclusive aqui no Fórum) com gabarito e conhecimento pra desenvolver uma plataforma e linguagem de Software nacional, e a mesma seria uma das melhores que o mundo já viu, pois nos destacamos do resto do mundo pela criatividade, não a toa temos representantes como commiters em vários projetos gringos e brasileiros trabalhando mundo a fora fazendo a diferença…

Porém tem alguns pontos que gostaria de destacar e que é real aqui em nosso país:

1 - Investimento: quem tá afim de investir tempo e dinheiro no Desenvolvimento de uma oplataforma de Software puramente brasileira e começar a colocar a mesma no mercado ??? Quem está disposto a pagar esses puta profissionais (que também precisam por comida na mesa) pra desenvolver uma linguagem brasileira ??? As nossas universidades, onde a maioria dos professores tá é afim de realizar Projetos para rechearem seus Currículos ??? As Startups que precisam matar um Dragão todos os dias pra poder sobreviver ??? Ou as próprias estrangeiras que estão presentes aqui e são as maiores do País ???

2 - Aceitação no mercado: quem quer usar uma plataforma brasileira ??? apesar de termos alguns casos de sucesso como o Lua, temos ainda muita resistência ao que é produzido aqui no País, justamente por causa desse pensamento ainda pouco de pesquisador e empreendedor. Ainda reforço, nem o próprio empresariado brasileiro faria isso… Se fizessem, seriam alguns gatos pingados que pensam como nós… Fica inviável, fica insuportável manter algo assim…

Aqui mesmo dentro do Brasil temos isso… Aqui no Pará, temos uma gama de profissionais fantásticos, alguns hoje estão em BH, SP, RS, EUA, EUROPA, etc…

Teve um caso que um amigão aqui desceu o preço da concultoria de R$ 200,00 pra R$ 100,00/h só porque descobriu que o cara que fez o trabalho pra ele era um paraense que estava trabalhando em SP… Aí contratou uma outra consultoria de caras de SP, pagou R$ 250,00/h pra nova consultoria avaliar o trabalho e dizer que o mesmo tinha sido bem realizado e que nada precisava ser mexido…

Enfim, falta confiança de nosso empresariado em nós mesmos… Aqui ainda se tem muito o pensamento do “CHIQUE”, tudo que vem de fora é mais Chique, o que se faz aqui não presta…

Concordo com o que vc disse, porem no Brasil de vez em quando surgem aguns movimentos interessantes: A linguagem Joiner da empresa Tuxon (http://pt.wikipedia.org/wiki/Joiner_%28linguagem_de_programa%C3%A7%C3%A3o%29 ) fêz um certo sucesso e foi criada por brasileiros, conheci pessoas que trabalharam com ela e gostavam; me parece que foi comprada por uma empresa americana pra variar rsrsrsrs.

Outro “problema” relacionado ao que foi dito é aquele que quando surge alguem ou alguma coisa que tem relevancia no Brasil aparece alguem de fora e compra a idéia ou até mesmo o criador da idéia e incorpora a seus produtos; e parece fazer parte do processo ninguem ficar sabendo disto.

Bem…sobre o tópico minhas dificuldades foram as corriqueiras: Polimorfismo, Herança e etc…, a idéia dos bichinhos tambem achei bacana no começo depois tive que aprender com bastante leitura e questionamentos que a coisa não éra bem assim mas acredito que ainda é uma boa idéia para se começar a aprender (parabéns Vini). Uma grande dificuldade que tive tambem foi a de entender as razões dos vários tipos de diagramas para representar a parte estatica e a parte dinamica do sistema.

flws

G

Daí adriano_si tudo bele?,

O desaconselho da Herança é um grande erro, desaconselham porque não entenderam a herança,
a herança te dá muita produtividade e diminui grandemente a complexidade dos sistemas, não tem que
ser desaconselhada em nenhuma linguagem, tem que ser usada porque é um GRANDE benefício, faça uma
analogia com a vida real, imagine se grande parte das coisas que você precisasse na vida vc pudesse pegar
PRONTA e funcionando do teu pai (ancestral), tipo assim o carro, o imóvel, quanto temos que ralar pra conseguir
essas coisas caras da vida? entendeu, isso é a herança na programação, vc usa os métodos prontos do repositório
do ancestral, isso sim é reusabilidade de código.

L

Orientação à objetos é facílimo. O que demorou mais tempo para eu aprender foi que nem tudo é um objeto, e OO assim como no Java é uma burrice que leva muitos programadores a cometerem barbaridades (vide frameworks, ORM, etc).

Se desenvolvedores Java descobrissem que nem tudo precisa ser um objeto as nossas vidas seriam muito melhores.

A

Opa… blz galera, vejo que a discussão rendeu…

Bom, primeiro, gostaria que refletissem com uma leitura:

http://alexandrebm.com/composicao-em-ruby-com-forwardable

Só pra não ficar na cabeça que o conceito é um preconceito de quem usa Java… Vamos lá… Conceitos surgem e desaparecem, se renovam, se modificam, geram conflitos e muitas vezes até guerra. Porém, conceitos nascem com um Objetivo de ajudar toda e qualquer pessoa a ter sua vida facilitada. Ví que a Orientação a Objetos gerou uma certa polêmica aqui, aparecendo inclusive declarações inflamadas sobre o uso ou não da mesma. Vou dar o “MEU”, repito “MEU” ponto de vista sobre a questão.

Para mim que tenho 5 anos de carreira, 2 em Java, confesso que ainda to aprendendo bastante coisas e não é qualquer coisitasinha dita em algum Blog ou Fórum que me convence de determinados temas. OO foi um deles, percebo que quando um Framework, Linguagem ou até mesmo ferramenta, surge no mercado, quer dizer que das 2 uma:

1 - Ou o que tem hoje não satisfaz completamente a necessidade;

2 - Ou o criador quer melhorar a idéia para atender as suas necessidades;

Por isso o termo reinventar a roda é tão bem aceito no meio da comunidade… Não precisamos reinventar a roda, mas precisamos aperfeiçoá-la.

A roda de hoje com certeza não é a mesma da idade da pedra, ela ganhou formas, espessuras e até tamanhos diferentes para atenderem às mais diversas necessidades.

Vejo que a OO foi mais uma dessas tentativas, de pessoas com muita experiência no mercado que apanhavam bonito para padronizar e manter seus códigos e Projetos de acordo com esse padrão. É a verdade absoluta do mercado ??? Não sei, mas é o que se aproxima de algo que veio pra facilitar e ajudar a manter o foco.

Quando alguém diz “Prefira composição à Herança”, ele não está dizendo pra nunca se usar Herança, mas sim que a maioria dos Problemas que hoje são resolvidos com Herança, seriam mais facilmente resolvidos com Composição, enquanto voxê resolve algo com Herança e reaproveita código, eu posso fazer uma composição e reaproveitar um Objeto… enfim, possibilidades e mais possibilidades… Não sei sua experiência de mercado e se a Herança realmente resolve os seus problemas, mas no meu caso, o conceito de “preferir composição à Herança” tem resolvido os meus…

Espero ter ajudado no meu ponto de vista.

Já você Longino, sua afirmação está certíssima, nem tudo pode ser um Objeto, para algumas coisas precisamos fazer chover pra transformar o Conceito em um modelo OO. À propósito (é curiosidade mesmo) você trabalha no comércio ???

Abs []

L

Não, não trabalho.

A

Área Acadêmica ???

P

Olás

Acompanhei os tópicos, juntando o que li/aprendi aqui com minha experiência, vejam este caso de quando usar INTERFACE ou HERANÇA.

Vamos pegar com base aquele exemplo dos aniamais do ViniGodoy (muito bom por sinal, parabéns!).

Imaginem que temos o seguinte grupo de animais domésticos
cachorro
gato
porco da índia

Agora, pegamos duas ações (métodos) relacionadas a eles: “fazerBarulho()” e “dormir()”.

dormir()

Todos dormem da mesma forma, então neste caso HERANÇA é melhor que INTERFACE pois podemos implementar “dormir()” na classe mãe tendo o REAPROVEITAMENTO DO CÓDIGO em todas suas classes filhas.

fazerBarulho()

Cada aniamal faz o seu (latir, miar, grunir). Usar herança aqui vai resultar em sempre ter que sobrescrever o método nas classes filhas e, além de não reaproveitar o código, ainda temos o efeito colateral do acoplamento.
Neste caso, INTERFACE é melhor que HERANÇA pois podemos garantir que todo animal implementará o método mas de forma desacoplada, podendo inclusive ter mais interfaces associadas futuramente.

Aí vem a questão:
Concordam que para implementar esses dois métodos da melhor maneira no nosso design, precisaríamos utilizar INTERFACE E HERANÇA?

abs

A

pgnt:
Aí vem a questão:
Concordam que para implementar esses dois métodos da melhor maneira no nosso design, precisaríamos utilizar INTERFACE E HERANÇA?

abs

em Java, Bastaria a Herança com uma classe Abstrata… Mas nesse caso… em um outro exemplo talvez as 2 fossem realmente válidas…

Abs []

C

A maior dificuldade que tive no começo foi em saber aplicar os conceitos de POO em projetos reais.

Aprender a encapsular ao invés de switch-case, alta coesão, baixo acoplamento, deixar entidades menos anêmicas, isolar responsabilidade em classes, etc… et.c… etc…

P

adriano_si, bem observado, uma classe abstrata resolveria. Estava tentando pensar em algum caso que envolvesse interface… talvez um método “brincar()” que pudesse ser alterado em tempo de execução por ex… mas a idéia no geral é trazer que dependendo do caso uma coisa pode ser melhor que outra ou, o uso das duas chega a ser necessário para o melhor design.
abs

W

Quando eu nao estou em casa eu tenho dificuldade em poo, mas eh soh tomar uma laxante. :slight_smile:

//Daniel

F

KKKKKKKKKKKK!

flws

V

Polimorfismo com certeza, só consegui entender quando precisei utilizar na prática!

Criado 21 de abril de 2010
Ultima resposta 7 de jun. de 2011
Respostas 56
Participantes 35