quinta-feira, 3 de julho de 2008

Conceitos da Orientação a Objetos com UML, parte 2

Segue mais um conjunto de conceitos da orientação a objetos. Embora o título do post cite a UML, esta segunda parte não apresenta diagramas da mesma. Isto pelo fato de que neste post são tratadas características mais conceituais da Orientação a Objetos.

Abstração

É a ação de pensarmos nas características essenciais de um objeto, sem nos preocuparmos como ele atinge estes objetivos. A abstração nos permite lidar mais facilmente com a complexidade de um sistema, pois em etapas iniciais da concepção do mesmo, ainda não dispomos de conhecimento suficiente para determinar os detalhes de cada objeto.

Dentro do conceito de abstração, definimos o que um objeto é capaz de fazer e o que a classe 'sabe'. Isso inclui atributos e métodos de interesse. O resto é postergado.

Coesão

A coesão refere-se à relação da implementação de uma classe ou método, com o seu propósito.

Classe e métodos altamente coesos são aqueles que implementam exatamente as suas responsabilidades. Quanto mais uma classe ou método implementa lógicas e controles que não são de sua responsabilidade, mais baixa é a sua coesão.

Caso não tomemos os devidos cuidados, a medida que um sistema é implementado a coesão das classes e métodos tente a diminuir, onde o ideal seria manter uma alta coesão.

Para lidarmos com este problema, é essencial um bom 'design' da estrutura do nosso sistema. Padrões de projeto são excelentes recursos para estruturarmos classes e métodos e eles nos ajudam a priorizar uma série de aspectos da OO, inclusive a alta coesão.

Acoplamento

O acoplamento está diretamente relacionado à dependência entre duas classes. O acoplamento é alto quando uma classe depende da implementação de outra (isto é, acessa os atributos da outra classe diretamente). Quando uma classe sabe interagir com outra sem conhecimento dos detalhes de implementação da segunda (apenas interagindo com esta através de métodos), então esta relação é de baixo acoplamento.

Encapsulamento

Refere-se a idéia de agrupar os conceitos de um determinado objeto dentro dele mesmo. Os métodos e atributos que conceitualmente pertencem a um objeto são compartimentados dentro da especificação da classe que o define.

O encapsulamento nos permite redefinir a implementação interna de uma classe, sem afetar outras classes e componentes do sistema, pois a utilização de um objeto não depende de sua implementação, mas sim de sua interface.

Mensagem

A mensagem é uma requisição de um objeto a outro, seja para obter uma informação ou para executar uma atividade. Uma mensagem é composta pelo nome de um método e lista de parâmetros.

Polimorfismo

É a habilidade de diferentes objetos responderem a uma mesma mensagem de forma distinta. Com o polimorfismo, é possível tratarmos instâncias de várias classes de uma forma comum. Assim, um objeto pode enviar uma mensagem a outro sem saber exatamente o seu tipo, e este segundo irá trabalhar corretamente.

Colaboração

É uma característica natural da OO, onde as classes trabalham em conjunto para realizar suas atividades

Conceitos da OO nos posts anteriores:

Nos próximos posts, ainda serão tratados:

0 Comments: