Capítulo 6 – Estudo de Casos.
2. Fundamentos da Modelagem
2.4. A Modelagem Orientada a Objetos
2.4.3. Tipos, Classes e Objetos
Aplicando o encapsulamento em larga escala, observa-se que existem grupos de objetos compartilham a mesma
interface, isto é, apesar se serem objetos distintos, oferecem os mesmos serviços para o sistema. Estes objetos seguem a mesma estrutura e definem o que chama- se de um tipo abstrato de dados. Um tipo é uma estrutura de dados com um
conjunto de definições de operações que afetam esta estrutura. No tipo não existe a preocupação de implementar estas operações, ele serve apenas para se definir um padrão no modelo, reduzindo
a complexidade da modelagem. A implementação de um tipo é uma
classe. A classe possui, além das
definições, a implementação das operações, para criar um componente autônomo para o sistema. A classe é um molde para a criação de objetos, porque permite descrever um conjunto de
objetos que compartilha a mesma estrutura de dados e as mesmas
definições operações. Todos os objetos de uma classe possuem as mesmas definições mas podem possuir valores diferentes nos dados, respondendo de modo diferente às mensagens enviadas à ele.
Figura 14 - Exemplos de Classes e Objetos
Um objeto é uma instância de uma classe, ele realiza a classe para o sistema. A estrutura do objetos é
definida pela classe, mas as operações e estados são definidos na instância
(Jacobson, 1992). No mundo real os objetos existem e trocam mensagens. É a partir destes objetos que se abstrai as classes para o modelo, porque no modelo se está interessado nas
estruturas dos objetos. O processo de classificação dos objetos, isto é,
determinar a classe a que o objeto deva pertencer, é a essência da modelagem orientada a objetos.
Em um exemplo típico de uma instalação de engenharia é possível classificar os equipamentos como equipamentos elétricos e equipamentos hidráulicos. A figura abaixo mostra esta classificação na forma de conjuntos . As classes estão associadas aos conjuntos,e os objetos aos seus elementoss destes conjuntos, que compartilham as mesmas propriedades. Pertencer ao conjunto equivale dizer que o elemento
Podem existir equipamentos que
possuem características de mais de um conjunto.
Figura 15 - Subclasses da classe Reprodutor de Imagens
O exemplo pode mostrar a
classificação não é única e pode estar sujeita a múltiplas interpretações, dependendo do enfoque que se queira dar ao problema. O importante é
verificar em cada classe quais as propriedades que estão sendo
compartilhadas pelos seus elementos, para haver uma boa relação entre o modelo e a realidade.
Figura 16 - Classes se assemelham a conjutos de objetos
2.4.4. Herança
A herança é uma das principais
características da orientação a objetos, e que está intimamente associada ao
conceito de agrupamento dos objetos segundo um conjunto de propriedades comuns. Uma classe de um objeto é o agrupamento de objetos que
compartilham a mesma estrutura de dados e funções. É possível se encontrar grupos que possuam um conjunto de propriedades, e que a partir deste grupo seja possível criar outros grupos que possuam propriedades ainda mais específicas, formando assim um
subconjunto do anterior. A orientação a objetos permite criar uma relação entre
as classes de objetos de modo que classe pode ser gerada a partir de outra classe, herdando dela suas propriedades estáticas (atributos) e dinâmicas
(funções).
A herança permite ainda que as características herdadas da classe mãe possam ser alteradas e expandidas pela classe filha. Incluindo novas
características, ou modificando características existentes. Esta
capacidade dos modelos orientados a objetos permite que a modelagem seja feita em camadas de classes, criando uma árvore para cada classe, com um nível decrescente de abstração, quando se caminha da mãe para a filha.
O uso da herança permite criar classes mais genéricas, com funcionalidades gerais e que podem ser herdadas por várias classes em diferentes situações simplificando a modelagem e
implementação. A herança de classes aumenta muito a capacidade de
reutilização das classes, porque pode-se criar classes genéricas com
propriedades gerais e que podem ser utilizadas em diversas situações. O reuso de classes apresenta um efeito positivo no prazo e no custo do desenvolvimento de projetos de software.
Figura 17 - Exemplo real de herança No exemplo, a herança é utilizada para distribuir os equipamentos em
categorias. Observa-se que,
inicialmente, todos são equipamentos. Os equipamentos podem ser para casa, podem ser elétricos e podem ser
mecânicos. Alguns equipamentos para casa são também elétricos, criando a
classificação dos eletrodomésticos. O conceito de herança e de objetos em software não é novo, mas foi pouco utilizado nos projetos de sistema até que as linguagens de programação que
permitissem implementar em software estes conceitos com facilidade. Hoje existem várias linguagens orientada a objetos que permitem incorporar herança e encapsulamento nos sistema de software.
2.4.5.
Polimorfismo
Uma decorrência interessante da comunicação por mensagens e da herança a orientação a objetos é o polimorfismo. Define-se polimorfismo como a propriedade que o emissor de uma mensagem não precisa conhecer a instância da classe que recebe esta mensagem. (Jacobson, et al, 1992). Esta propriedade leva ao fato de que uma mesma mensagem pode ser interpretada de modos diferentes, quando for
recebida por objetos diferentes. Assim, como as implementações das funções que recebem a mensagem são diferentes
elas podem responder de forma diferente (poli = múltiplas,
morfo="forma"). Polimorfismo é a propriedade de que a mesma mensagem pode ser respondida de forma diferente por duas ou mais classes.
Há alguma confusão entre o encapsulamento e o
polimorfismo porque ambos se referem ao ocultamento da implementação do mundo externo ao objeto. No entanto, o polimorfismo está centrado na
possibilidade de uma resposta diferente devido ao desconhecimento do
destinatário da mensagem, enquanto no encapsulamento a implementação está apenas oculta do mundo exterior.
Figura 18 - Polimorfismo: a mesma mensagem tem respostas diferentes