ORIENTAÇÃO A OBJETOS COM PROTOTIPAÇÃO CAPÍTULO 02 CONCEITOS FUNDAMENTAIS OBJETIVOS Definiremos alguns conceitos fundamentais de forma a não deixar dúvidas básicas ou interpretações que nos coloquem em xeque perante os nossos princípios. Deixaremos claro o conceito de prototipação, assim com de seus tipos diferenciados, objeto, estrutura dos objetos e HERANÇA, bem como o modo como os objetos transferem informação. INTRODUÇÃO Procuraremos chegar a definições mais elaboradas de orientação a objeto e prototipação rápida, tentando evitar interpretações errôneas devido a falta de uma norma a respeito. DEFINIÇÃO DE PROTOTIPAÇÃO RÁPIDA Prototipação é a reprodução de uma ideia sob a forma concreta, ferramental, com o objetivo de permitir que questionamentos e análises complementares sejam feitos graças à visualização do funcionamento do produto. Portanto, para um projeto de sistema, prototipar é fazer com que uma ideia de automação possa ser posta em prática sem a total complexidade computacional que o assunto exige. A prototipação proporciona aos usuários um envolvimento maior e uma interação com o sistema, tanto no desenho como no desenvolvimento do software, determinando, portanto, uma dependência bem menor nas complexas comunicações humanas. DEFINIÇÃO GRÁFICA DE OORP A construção de um protótipo é baseada na rapidez das especificações da orientação a objeto; A construção do protótipo orientado a objeto consiste na criação de diferentes CLASSES DE OBJETOS com seus serviços devidamente encapsulados; A interação repetitiva do modelo modifica, estende e refina as especificações e as classes de objetos existentes;
A combinação de especificações e dados de objeto existentes, estrutura, serviços e controles tornam-se a linha base das exigências para a aprovação do protótipo pelo usuário; Um protótipo aprovado pelo usuário pode ser colocado em modo operacional completo após testes, desempenho e refinamento. PROTOTIPAÇÃO RÁPIDA EVOLUTIVA Construirá um modelo com ferramentas que permitam obter alto desempenho e que esteja afinado com outras aplicações, também facilitando a integração delas, de forma a não ter que recomeçar novamente. A pré-especificação e uma pequena parte dos requerimentos dos quais o desenvolvedor deverá estar ciente, ter a segurança completa e o comprometimento do usuário com o que será feito desse ponto em diante não será recriado, tornando-o caro demais para a sua aplicação.
PROTOTIPAÇÃO DESCARTÁVEL Baseia-se na construção de um protótipo rápido, de modo que, logo depois de sua apresentação, ele seja descartado. ENGENHARIA E SOFTWARE ORIENTADO A OBJETO Os termos objeto, ENCAPSULAMENTO e herança tornam-se comuns na fala cotidiana, porém podem ser mal interpretados ou dificultosos dentro do contexto no ambiente de desenvolvimento de sistemas. Para entender o ponto de vista orientado a objeto, consideremos um objeto do mundo real, como, por exemplo, uma cadeira. Cadeira é um membro de uma classe muito maior de objetos, que será denominada de mobiliário. Um conjunto de atributos genéricos pode ser associado a cada objeto da classe mobiliário, como custo, dimensões, peso, localização e cor. Esses atributos são aplicados quando se identifica uma mesa, um sofá ou um armário, pois tais elementos fazem parte da classe mobiliário. Os elementos que formam a classe herdam suas características, como ilustra a figura a seguir.
DEFINIÇÃO DE OBJETO Podemos definir objeto como um ente para o qual pensamento e ação são dirigidos. A criação de objetos em software é realizada pela identificação de coisas de interesse do usuário, com finalidade de aplicação, sendo, portanto, uma abstração do mundo real em subconjuntos de informação sobre o seu comportamento. CLASSES E INSTÂNCIAS Na definição de objeto, uma INSTÂNCIA DE OBJETO de software poderia conter dados como nome do cônjuge, endereço, telefone, etc. ENCAPSULAMENTO DE DADOS E OBJETOS Encapsulamento é um conceito que propõe a criação de objetos de modo a serem autossuficientes procurando ter uma interação mínima com outros objetos na aplicação. Operações de software e dados são integradas e a esta ligação chamamos de encapsulamento. A verdadeira e real função do encapsulamento é a melhoria da produtividade durante o processo de prototipação e manutenção, atividades estas que requereriam muito esforço para a modificação do software existente. ESTRUTURAS DE HERANÇA
Herança é um conceito que ajudou nos ambientes de desenvolvimento orientado a objetos e que provê a capacidade de desenvolvimento de novos objetos, estendendo a sua estrutura de classe previamente construída. CONTROLE DE MENSAGEM Um dos fatos que mais têm ocasionado conflitos e aos quais os programadores não estão acostumados é que no desenvolvimento orientado a objetos os softwares são controlados por meio de mensagens. O Software hierárquico é criado escrevendo-se um programa principal (ou programa guia) que executará as tarefas, chamando as sub-rotinas especializadas para isso; o programa guia terá de ser carregado. O software orientado a objeto deve ser escrito de forma que eventos ativem as mensagens emissoras. Exemplos de eventos: Um botão do mouse é clicado; Uma janela é minimizada; Um registro novo (instância de objeto) é criado; Uma instância de objeto diferente do atualmente ativo é acessada. O POLIMORFISMO e o encapsulamento permitem o desenvolvimento de software orientado a objeto, que não se identifica com a forma hierárquica onde os componentes são agregados, de modo dependente um ao outro. Para se ter uma ideia mais clara, as classes de objeto são autônomas e quase não requerem conhecimento das estruturas de dados de outras classes de objetos. RESUMO Entendemos o que significa protótipo e as diferenças entre prototipação evolutiva e não evolutiva, podemos adotar maneiras diferenciadas de trabalho e de identificação de tarefas. Conceitos tais como os de herança e encapsulamento nos mostram formas mais eficientes de criar objetos e rotinas autossuficientes em alguns casos, sem a necessidade de interagir com outros objetos para atingir os objetivos desejados no sistema. QUESTÕES PARA REVISÃO a) Defina prototipação
b) Quais as diferenças entre prototipação evolutiva e a não evolutiva? c) Quais as vantagens da prototipação evolutiva? d) Defina Objeto. e) Quais as diferenças entre classes e instâncias? f) Qual é o principal motivo do encapsulamento? g) Um objeto pode ser totalmente autônomo? h) De que maneira um objeto passa serviços e atributos para outro? i) Qual é a principal diferença entre software hierárquico e software orientado a objetos? j) Cite pelo menos cinco exemplos de eventos. BIBLIOGRAFIA RECOMENDADA