Pesquisa próxima semana: Mariana e Camila
Orientação a Objetos
Introdução
- Com a rápida evolução da indústria de TI, tanto em Hardware quanto em Software, o Modelo Estruturado foi sendo questionado e pesquisadores de todo o mundo começaram a propor metodologias para que se criassem soluções com maior qualidade, menor custo e em menor tempo.
- Com isso, houve o amadurecimento da Orientação a Objeto
- Diversas proposições foram feitas mas entre muitas, Três Amigos, se destacaram:
- Grady Booch
- James Rumbaugh
- Ivar Jacobson
- A partir de 2000, houve uma Utilização rotineira da OOA (Object Oriented Analysis) como método de análise e uma certa padronização através da utilização extensiva do UML (Unified Modeling Language).
- A OOA baseia-se num conceito simples de que as pessoas adquirem desde a infância, como objetos e atributos, classes e membros, todo e partes do todo.
- Atual: Orientação a Serviço (SOA)
Foco
| Métodos | Abordagens | Ferramentas |
|---|---|---|
| Análise tradicional | Funcional | Textos e fluxogramas |
| Análise estruturada | Funcional e Dados | Diagramas: Fluxos de dados, Entidade e Relacionamento, Miniespecificações, Normalização e Dicionário de Dados |
| Análise essencial | Funcional, Dados e Controle | Tabela de eventos. Diagramas: Fluxos de dados, Entidade e Relacionamento, Transição de estados, Estrutura de dados, Miniespecificações, Normalização e Dicionário de dados |
| Análise orientada a objetos | UML | Diagramas: Casos de uso, Classes, Atividades, Sequência, Estado, Pacotes, Colaboração e outros |
| Análise orientada a serviços | SOA | . |
- Foco tradicional: Compreensão do sistema como um conjunto de programas que executam processos sobre os dados.
- Foco OOA: O sistema é uma coletânea de objetos que interagem entre si, com características próprias, representados por atributos(dados) e operações (processos).

- Os métodos de orientação a objetos apresentam uma visão mais integrada das funções e dados
- O sistema orientado a objetos é estruturado através de objetos, que contemplam: funções + dados

- Resultados:
- Produtos mais estáveis e de melhor qualidade
- Processo de desenvolvimento que permite:
- melhor entendimento do sistema e do seu ambiente
- melhor entendimento do domínio da aplicação
- melhor independência da implementação até estágios mais avançados.
- Quando usar uma análise OO?
- Projeto de grande porte: Muita informação e subprojeto
- Sistema para organização da Copa do Mundo
- Sistema para construção de um foguete
- Requisitos não completamente fechados : Não se consegue definir tudo antecipadamente
- Sistema a ser desenvolvido pela sua equipe
- Aplicação onde alguns itens dependem de novos conhecimentos
- Requisitos vagos, incompletos ou inconsistentes:
- Sistema solicitado oralmente
- Demandas vindas de solicitantes inexperientes. Ex: Diretor novo na empresa
- Novas aplicações: Abordagem sistemática para facilitar o entendimento
- Ex: Sistema Realidade Aumentada
- Projetos inovadores, radicais. Ex: Gerenciamento de um satélite.
- Equipe com especialidades diversas : Torna-se linguagem comum
- Ex: Sistemas de controle de um avião
- É construído com pessoas de diversas partes do mundo com diferentes competências
- Sistemas críticos: Definição mais profunda da lógica
- Ex: Sistema bancário, sistemas de alta segurança, Bolsa de Valores, etc.
- Benefícios da AOO
- a) Mantém a modelagem do sistema e, conseqüentemente, a automação do mesmo o mais próximo possível de uma visão conceitual do mundo real.
- b) Baseia a decomposição e modelagem do sistema nos dados, que é o elemento mais estável de todos aqueles que compõem um sistema de informação.
- c) Oferece maior transparência na passagem da análise ( modelo essencial ) para o projeto ( modelo de implementação )
Novo paradigma
- O desenvolvimento das aplicações continuou passando por grandes mudanças. O paradigma de desenvolvimento que acabamos de estudar, o procedimental ou estruturado, foi um dos primeiros a se popularizar. A maneira como se codifica é linear, muito próximo ao hardware e utilizava conceitos matemáticos para definir soluções. “Um algoritmo é uma sequência ordenada e finita de etapas, cuja execução passo a passo resolve um determinado problema.” (VILARIM, 2004, p.7).
- O desenvolvimento de aplicações baseadas neste paradigma era de uma complexidade muito alta levando a descontinuação de vários projetos de software. Para tentar reverter essa realidade, foi criada uma nova abordagem de desenvolvimento, o Paradigma Orientado a Objetos.
- Este, por sua vez, permitia a criação de um código de melhor legibilidade, rotinas podiam ser mais facilmente reutilizadas e processos complexos podiam ser escritos de forma mais compreensível e de melhor manutenção.
- Segundo Deitel (2006), orientação a objetos é um paradigma que aproxima o programador do mundo real, no qual tudo pode ser visto como objetos, como por exemplo:
- Na escola:
- livro, aluno, faculdade, curso, disciplina, professor, ...
- Na indústria:
- motor, carga, consumo, impedância, ...
- No comércio:
- produto, venda, nota fiscal, cliente, vendedor, ...
- Em casa:
- garagem, pessoa, camera, lampada, consumo, chuveiro, ...
- No jogo:
- avatar, fase, movimento, armas, perfil, ...
- Na escola:
- Antes da OO, o desenvolvimento se preocupava com as ações desses objetos, a programação se baseava nos verbos:
- AlugarLivro
- CadastrarAluno
- RealizarMatricula
- etc.
- O programador recebia os problemas em objetos e codificava em verbos. A primeira providência era imaginar o fluxo de dados e as funções principais (DFD e DD). Depois se pensava em como os dados permanentes (persistentes) seriam armazenados (DER).
Com o advento da OO, o programador passou a codificar exatamente o que via. A modelagem passou a se basear nos substantivos, como, por exemplo, o livro, o aluno, a conta, o cliente, o sensor, a carga, etc.
- Ao desenvolver um sistema OO, não se analisa o problema linearmente. Primeiro se observa quais objetos estão interagindo entre si e qual a responsabilidade de cada um dentro do contexto do problema. Essa nova forma de raciocinar tornou sistemas grandes e complexos possíveis de serem realizados

Características
- Objetos são abstrações de entidades do mundo real (ou de algum sistema) que se auto-gerenciam
- Objetos são independentes e encapsulam suas representações de estado e de informações
- A funcionalidade de um sistema é expressa em termos de serviços que os objetos prestam
- Áreas de dados redundantes são eliminadas
- Objetos se comunicam através do envio de mensagens
- Objetos podem ser distribuídos
- Objetos podem ser executados sequencialmente ou de forma paralela.
Projeto, análise e programação são atividades distintas
- Análise OO se preocupa com a modelagem dos objetos para o domínio da aplicação
- Projeto OO se encarrega do desenvolvimento de um modelo de sistema que implemente os requisitos funcionais e não-funcionais pré-definidos pela AOO
- Programação OO se incumbe da implementação do Projeto OO usando uma linguagem de programação OO (C++, Java, Python, ...).
___________________________________________________________________________________________________________
- As técnicas orientadas a objeto permitem que o software seja construído de objetos que tenham um comportamento especifico
- A análise de sistemas no mundo orientado a objetos é feita analisando-se os objetos e os eventos que interagem com esses objetos
- O projeto de software é feito reusando-se classes de objetos existentes e quando necessário, construindo-se novas classes.
_________________________________________________________________________________________________________
- A análise e o projeto orientados a objeto modelam o mundo em termos de objetos que tem propriedades e comportamentos e eventos que disparam operações que mudam o estado dos objetos
- Exemplo:
- Uma reprovação pode mudar o estado do objeto Aluno para fazer parte da turma do próximo semestre
- A informação recebida pelo objeto sensor pode mudar seu estado para gerar um serviço de alarme
- A ação de uma retirada num banco pode fazer o objeto Cheque a exigir a ação do gerente
- Exemplo:
- Os objetos interagem com outros objetos
- A modelagem e o projeto orientados a objeto são os paradigmas que devem integrar todas as ferramentas e técnicas poderosas para a criação de software.
Conceitos básicos
Objetos
- Qualquer coisa é um objeto
- Objetos se realizam através da requisição de serviços a outros objetos
- Cada objeto pertence a uma determinada classe. Uma classe agrupa objetos similares
- A classe é um repositório e elas são organizados hierarquicamente
- São entidades em um sistema de software que representam instâncias de entidades do mundo real e de algum sistema
Características:
- Objeto é um conceito, uma abstração ou uma coisa, com limites e significados bem definidos em relação ao problema considerado
- Um objeto é normalmente identificado por um substantivo
- Um objeto contém estrutura e comportamento.
| Objeto | Objeto | Objeto |
|---|---|---|
| Parafuso | Motor | Carro |
| Fração | Equação | Fórmula |
| Parágrafo | Documento | Livrarias |
| Depósito | Conta | Banco |
| Movimento | Fase | Game |
- Visualizando estes objetos