[quote=MauroOliveira]Já trabalhei em projetos desenvolvidos de forma totalmente procedural e também OO em Delphi.
Discordo que o Delphi seja uma ferramenta tipo lego para ignorantes de OO.
Mas também reconheço que a aplicação de OO e MVC não acontece de forma tão natural como em Java…
Em java, o próprio ambiente força (mas não impede totalmente) que o programa cresça em OO.
Em Delphi, dá para fazer. Mas a “tentação” está sempre perto…
Já vi projetos começarem corretos, mas por falta de pulso firme do lider, os datamodules começaram a proliferar como ervas daninhas, e logo logo as queries dentro dos formulários.
Já trabalhei em 8 empresas com Delphi, e em apenas uma eu acredito que o sistema possa ser classificado como projeto OO…
Os delpheiros gostam de componente (não todos). Afinal, querendo ou não, por mais que alguns não aceitem, foi a produtividade que popularizou o Delphi, e não a OO (embora ele possa ser OO).
E acredito que os poucos programas realmente OO em delphi existem apenas por causa do “heroísmo” de alguns bons programadores…
Isso porque a própria Embarcadero (e a Borland na época também…) continua focando na produtividade…
Tanto é que, até hoje, nas últimas versões, o Delphi não tem uma coisa, que EU pelo menos acredito que seria legal e um “incentivo” para usar OO com MVC:
Um grid que lê uma lista…
Até hoje isso não existe (até existe componentes de terceiros, mas não achei que ficou bom…).
Os grids do delphi estão presos a ler outros componentes de herdam de dataset (ou TDataset, para não ofender os delpheiros).
O problema disso que é o desenvolvimento acaba sendo mais fácil da forma “componentizada” (arrastar e soltar compomentes…).
Quando você começa a deselvolver uma aplicação MVC, começa bem, no Model, no Controller… Mas quando chega na View, esbarra com esse problema:
Você tem uma lista de objetos, seja pessoa, NF ou o que quer que seja… Mas o grid não lê a sua classe. O grid só lê herdeiros de TDataset… Daí então (já vi em mais de um lugar) o negócio que começou bonito, acaba com algumas (Deus me perdoe…) gambis para acoplar as camadas e ainda assim usar a TDBGrid … 
Caso alguém tenha resolvido esse problema de forma “elegante”, me dê a dica…
Mas em fim:
Resumindo, dá para fazer coisas tão complexas quanto forem necessárias em Delphi sim.
Assim como em .NET também dá.
Assim como em outras linguagens também…
A única resalva é que, em cada uma, isso é feito de forma diferente.
[/quote]
O que acontece é que o foco dos problemas acaba sendo o framework e o desenho deles. Os componentes também são classes, então não diria que usá-los não seja OO. O que diferencia Object Pascal de Java, é que escreveram um framework como o hibernate para java. O hibernate fez tanto sucesso que o mesmo foi implementado em c#. Os componentes não estão atrelados ao formulário, Você pode instanciá-los em qualquer outra classe e acessá-los, ou usar um componente próprio para isso, como o DatabaseForm, dessa forma diminuindo o acoplamento.
O que eu percebi dos profissionais que conheci, que usavam delphi, era que nenhum sabia programar, nem mesmo um pouquinho. Isso porque o delphi era tão fácil de usar que acabava, qualquer pessoa sem conhecimento se tornando programador.