[quote=aprendiz.devel]E ae galera!!
Estou estudando aqui para o exame e logo já me surgiu uma dúvida. Ainda sou um pouco fraco na parte teórica do Java e logo no primeiro capítulo fala sobre Object Oriented Analysis (OOA), Object Oriented Design (OOD) e Object Oriented Programming (OOP). O livro trata esses conceitos assim:
? Object Oriented Analysis (OOA): This is concerned with determining the functionality of the system, that is, what should the application do
? Object Oriented Design (OOD): This is concerned with how the architecture supports the functionality of the application
? Object Oriented Programming (OOP): This is concerned with the actual implementation of the application
A minha conclusão sobre isso é que o OOA e o OOD se concentram na modelagem da aplicação, nesse caso com os diagramas incluindo o UML e o OOP é a parte prática. Estou certo? Alguém tem algum material a mais, no livro está bem fraquinha as definições…
Abraços[/quote]
OOA visa o levantamento de requisitos. É uma linguagem para vc se comunicar com o cliente para que ele entenda que os conceitos que ele usa, são aquilo que faz o sistema funcionar : Cliente, Pedido, Produto, Notafiscal, etc… e as relações entre elas e os atores. Pode ser usado mesmo quando a implementação não será OO. Este tipo de analise tem relação com DDD , UML e o conceito de Linguagem Ubiquoa.
OOD visa a organização do projeto. Se o levantamento foi feito em termos de objetos o OOD pega essa informação para construir a camada de dominio, e depois coloca toda a roupagem tecnica necessária, separação de responabilidade, interação com banco de dados, tela, webservices, etc…
OOP é a programação em si. A linguagem usada tem que suportar o conceito, mas não necessariamente. OOP e OOD se confundem um pouco na prática pois muita gente modela com a linguagem em vez de modelar objeto abstratos e depois implementar. O resultado é que alguns design só funcionam em certas linguagens e não podem ser portados para outras.
Em tese o projeto usará as três em cadeia porque isso facilita a comunicação. Na prática vc trabalha com analistas e clientes que não sabem e não querem saber de OO mas adoram falar de tabelas. Estão presos em outo século. Com a rotatividade das gerações isto pode mudar, mas entretanto ninguem está usando e acabará morrendo. Sobretudo OOA.
OOP ficou mais genérico hoje em dia, no momento que inventaram funções-objeto e objetos-funções dando abertura para misturar a programação funcional com a OO. A programação funcional tem raiz no conceito de função matemática como era usado no VB, por exemplo, mas com conceitos mais avançados como composições, por exemplo. Dai nasce o conceito de lambdas (e closures) e é peço fundamental no conceito de paralelismo que antigamente era chique mas hoje é uma necessidade.
No fundo, OOA, OOD e OOP são apenas OO aplicada a três “atividades” : analisar, desenvolver e programar. Os conceitos básicos são sempre os mesmos assim como as técnicas e padrões. Se você tem bom dominio de OO em si, os outros são apenas utilizar isso para um propósito especifico.