Abordagem Orientada a Objetos
Na abordagem orientada a objetos, o foco está em capturar a estrutura e o comportamento dos sistemas de informação em pequenos módulos que combinam dados e processos. O objetivo principal do Projeto Orientado a Objetos (OOD) é melhorar a qualidade e a produtividade da análise e projeto do sistema, tornando-o mais utilizável.
Na fase de análise, os modelos OO são usados para preencher a lacuna entre o problema e a solução. Ele tem um bom desempenho em situações em que os sistemas estão passando por um projeto, adaptação e manutenção contínuos. Ele identifica os objetos no domínio do problema, classificando-os em termos de dados e comportamento.
O modelo OO é benéfico das seguintes maneiras -
Facilita mudanças no sistema com baixo custo.
Promove o reaproveitamento de componentes.
Isso simplifica o problema de integração de componentes para configurar grandes sistemas.
Ele simplifica o projeto de sistemas distribuídos.
Elementos do sistema orientado a objetos
Vamos examinar as características do Sistema OO -
Objects- Um objeto é algo que existe no domínio do problema e pode ser identificado por dados (atributo) ou comportamento. Todas as entidades tangíveis (aluno, paciente) e algumas entidades intangíveis (conta bancária) são modeladas como objeto.
Attributes - Eles descrevem informações sobre o objeto.
Behavior- Especifica o que o objeto pode fazer. Ele define a operação realizada em objetos.
Class- Uma classe encapsula os dados e seu comportamento. Objetos com significado e propósito semelhantes agrupados como classe.
Methods- Os métodos determinam o comportamento de uma classe. Eles nada mais são do que uma ação que um objeto pode realizar.
Message- Uma mensagem é uma chamada de função ou procedimento de um objeto para outro. Eles são informações enviadas a objetos para acionar métodos. Essencialmente, uma mensagem é uma função ou chamada de procedimento de um objeto para outro.
Características do sistema orientado a objetos
Um sistema orientado a objetos vem com vários recursos excelentes que são discutidos abaixo.
Encapsulamento
O encapsulamento é um processo de ocultação de informações. É simplesmente a combinação de processos e dados em uma única entidade. Os dados de um objeto são ocultados do resto do sistema e estão disponíveis apenas por meio dos serviços da classe. Ele permite a melhoria ou modificação de métodos usados por objetos sem afetar outras partes de um sistema.
Abstração
É um processo de obtenção ou seleção do método e atributos necessários para especificar o objeto. Ele se concentra nas características essenciais de um objeto em relação à perspectiva do usuário.
Relacionamentos
Todas as classes do sistema estão relacionadas entre si. Os objetos não existem isoladamente, eles existem em relação com outros objetos.
Existem três tipos de relacionamentos de objeto -
Aggregation - Indica relação entre um todo e suas partes.
Association - Neste, duas classes estão relacionadas ou conectadas de alguma forma, tal como uma classe trabalha com outra para realizar uma tarefa ou uma classe atua sobre outra classe.
Generalization- A classe filha é baseada na classe pai. Isso indica que duas classes são semelhantes, mas têm algumas diferenças.
Herança
Herança é um ótimo recurso que permite criar subclasses de uma classe existente, herdando os atributos e / ou operações de classes existentes.
Polimorfismo e ligação dinâmica
Polimorfismo é a capacidade de assumir muitas formas diferentes. Isso se aplica a objetos e operações. Um objeto polimórfico é aquele cujo tipo verdadeiro se esconde em uma superclasse ou classe pai.
Na operação polimórfica, a operação pode ser realizada de forma diferente por diferentes classes de objetos. Ele nos permite manipular objetos de diferentes classes, conhecendo apenas suas propriedades comuns.
Abordagem Estruturada vs. Abordagem Orientada a Objetos
A tabela a seguir explica como a abordagem orientada a objetos difere da abordagem estruturada tradicional -
Abordagem estruturada | Abordagem Orientada a Objetos |
---|---|
Funciona com abordagem de cima para baixo. | Funciona com a abordagem Bottom-up. |
O programa é dividido em vários submódulos ou funções. | O programa é organizado por ter um número de classes e objetos. |
A chamada de função é usada. | A passagem de mensagens é usada. |
A reutilização de software não é possível. | A reutilização é possível. |
A programação do projeto estruturado geralmente é deixada para as fases finais. | Programação de projeto orientada a objetos feita simultaneamente com outras fases. |
O projeto estruturado é mais adequado para offshoring. | É adequado para desenvolvimento interno. |
Mostra uma transição clara do design à implementação. | Transição não tão clara do design à implementação. |
É adequado para sistemas de tempo real, sistemas embarcados e projetos onde os objetos não são o nível de abstração mais útil. | É adequado para a maioria dos aplicativos de negócios, projetos de desenvolvimento de jogos, que devem ser personalizados ou estendidos. |
Diagrama DFD e ER modelam os dados. | Diagrama de classes, diagrama de seqüência, diagrama de gráfico de estado e casos de uso contribuem. |
Neste, os projetos podem ser gerenciados facilmente devido a fases claramente identificáveis. | Nessa abordagem, os projetos podem ser difíceis de gerenciar devido às transições incertas entre as fases. |
Linguagem de modelagem unificada (UML)
UML é uma linguagem visual que permite modelar processos, software e sistemas para expressar o design da arquitetura do sistema. É uma linguagem padrão para projetar e documentar um sistema de uma maneira orientada a objetos que permite que os arquitetos técnicos se comuniquem com o desenvolvedor.
É definido como um conjunto de especificações criadas e distribuídas pelo Object Management Group. UML é extensível e escalonável.
O objetivo da UML é fornecer um vocabulário comum de termos orientados a objetos e técnicas de diagramação que seja rico o suficiente para modelar qualquer projeto de desenvolvimento de sistemas, desde a análise até a implementação.
UML é composta por -
Diagrams - É uma representação pictórica de processo, sistema ou alguma parte dele.
Notations - Consiste em elementos que funcionam juntos em um diagrama, como conectores, símbolos, notas, etc.
Exemplo de notação UML para classe
Diagrama de instância - notação UML
Operações realizadas em objetos
As seguintes operações são realizadas nos objetos -
Constructor/Destructor- Criação de novas instâncias de uma classe e exclusão de instâncias existentes de uma classe. Por exemplo, adicionar um novo funcionário.
Query- Acessar o estado sem alterar o valor, não tem efeitos colaterais. Por exemplo, encontrar o endereço de um determinado funcionário.
Update - Altera o valor de um ou mais atributos e afeta o estado do objeto. Por exemplo, alterando o endereço de um funcionário.
Usos de UML
UML é bastante útil para os seguintes propósitos -
- Modelando o processo de negócios
- Descrevendo a arquitetura do sistema
- Mostrando a estrutura do aplicativo
- Capturando o comportamento do sistema
- Modelando a estrutura de dados
- Construindo as especificações detalhadas do sistema
- Esboçando as ideias
- Gerando o código do programa
Modelos estáticos
Os modelos estáticos mostram as características estruturais de um sistema, descrevem a estrutura do sistema e enfatizam as partes que compõem o sistema.
Eles são usados para definir nomes de classes, atributos, métodos, assinatura e pacotes.
Os diagramas UML que representam o modelo estático incluem diagrama de classe, diagrama de objeto e diagrama de caso de uso.
Modelos Dinâmicos
Os modelos dinâmicos mostram as características comportamentais de um sistema, ou seja, como o sistema se comporta em resposta a eventos externos.
Os modelos dinâmicos identificam o objeto necessário e como eles funcionam juntos por meio de métodos e mensagens.
Eles são usados para projetar a lógica e o comportamento do sistema.
Os diagramas UML representam o modelo dinâmico, incluindo diagrama de sequência, diagrama de comunicação, diagrama de estado, diagrama de atividades.
Ciclo de vida de desenvolvimento de sistema orientado a objetos
Consiste em três processos macro -
- Análise Orientada a Objetos (OOA)
- Design orientado a objetos (OOD)
- Implementação orientada a objetos (OOI)
Atividades de desenvolvimento de sistemas orientados a objetos
O desenvolvimento de sistemas orientados a objetos inclui os seguintes estágios -
- Análise orientada a objetos
- Design orientado a objetos
- Prototyping
- Implementation
- Teste incremental
Análise Orientada a Objetos
Esta fase se preocupa em determinar os requisitos do sistema e compreender os requisitos do sistema, construir um use-case model. Um caso de uso é um cenário para descrever a interação entre o usuário e o sistema de computador. Este modelo representa as necessidades do usuário ou visão do usuário do sistema.
Também inclui a identificação das classes e seus relacionamentos com as outras classes no domínio do problema, que constituem um aplicativo.
Design Orientado a Objetos
O objetivo desta fase é projetar e refinar as classes, atributos, métodos e estruturas que são identificados durante a fase de análise, interface do usuário e acesso aos dados. Esta fase também identifica e define as classes ou objetos adicionais que suportam a implementação do requisito.
Prototipagem
A prototipagem permite compreender totalmente como será fácil ou difícil implementar alguns dos recursos do sistema.
Ele também pode dar aos usuários a oportunidade de comentar sobre a usabilidade e utilidade do design. Ele pode definir ainda mais um caso de uso e tornar a modelagem de caso de uso muito mais fácil.
Implementação
Ele usa o desenvolvimento baseado em componentes (CBD) ou o desenvolvimento rápido de aplicativos (RAD).
Desenvolvimento baseado em componentes (CBD)
CODD é uma abordagem industrializada para o processo de desenvolvimento de software usando várias tecnologias como ferramentas CASE. O desenvolvimento de aplicativos vai do desenvolvimento customizado para a montagem de componentes de software pré-construídos, pré-testados e reutilizáveis que operam entre si. Um desenvolvedor de CBD pode montar componentes para construir um sistema de software completo.
Desenvolvimento rápido de aplicativos (RAD)
RAD é um conjunto de ferramentas e técnicas que podem ser usadas para construir um aplicativo mais rápido do que normalmente é possível com os métodos tradicionais. Não substitui o SDLC, mas o complementa, já que se concentra mais na descrição do processo e pode ser combinado perfeitamente com a abordagem orientada a objetos.
Sua tarefa é construir o aplicativo rapidamente e implementar de forma incremental o design de requisitos do usuário por meio de ferramentas como visual basic, power builder, etc.
Teste Incremental
O desenvolvimento de software e todas as suas atividades, incluindo testes, são um processo iterativo. Portanto, pode ser caro se esperarmos para testar um produto somente após seu desenvolvimento completo. Aqui, o teste incremental entra em cena, em que o produto é testado durante vários estágios de seu desenvolvimento.