OOAD - Paradigma Orientado a Objetos
Uma breve história
O paradigma orientado a objetos tomou sua forma a partir do conceito inicial de uma nova abordagem de programação, enquanto o interesse em métodos de design e análise veio muito mais tarde.
A primeira linguagem orientada a objetos foi Simula (Simulação de sistemas reais), desenvolvida em 1960 por pesquisadores do Centro de Computação Norueguês.
Em 1970, Alan Kay e seu grupo de pesquisa no Xerox PARK criaram um computador pessoal chamado Dynabook e a primeira linguagem de programação orientada a objetos (OOPL) pura - Smalltalk, para programar o Dynabook.
Na década de 1980, Grady Booch publicou um artigo intitulado Object Oriented Design que apresentou principalmente um design para a linguagem de programação, Ada. Nas edições seguintes, ele estendeu suas idéias a um método completo de design orientado a objetos.
Na década de 1990, Coad incorporou ideias comportamentais aos métodos orientados a objetos.
As outras inovações significativas foram Object Modeling Techniques (OMT) por James Rumbaugh e Object-Oriented Software Engineering (OOSE) por Ivar Jacobson.
Análise Orientada a Objetos
Análise Orientada a Objetos (OOA) é o procedimento de identificação de requisitos de engenharia de software e desenvolvimento de especificações de software em termos de modelo de objeto de um sistema de software, que compreende objetos em interação.
A principal diferença entre a análise orientada a objetos e outras formas de análise é que, na abordagem orientada a objetos, os requisitos são organizados em torno de objetos, que integram dados e funções. Eles são modelados a partir de objetos do mundo real com os quais o sistema interage. Nas metodologias de análise tradicionais, os dois aspectos - funções e dados - são considerados separadamente.
Grady Booch definiu OOA como “A análise orientada a objetos é um método de análise que examina os requisitos da perspectiva das classes e objetos encontrados no vocabulário do domínio do problema” .
As principais tarefas na análise orientada a objetos (OOA) são -
- Identificando objetos
- Organizando os objetos criando um diagrama de modelo de objeto
- Definindo o interior dos objetos ou atributos do objeto
- Definindo o comportamento dos objetos, ou seja, ações do objeto
- Descrever como os objetos interagem
Os modelos comuns usados em OOA são casos de uso e modelos de objeto.
Design Orientado a Objetos
O Projeto Orientado a Objetos (OOD) envolve a implementação do modelo conceitual produzido durante a análise orientada a objetos. No OOD, os conceitos do modelo de análise, que são independentes de tecnologia, são mapeados em classes de implementação, as restrições são identificadas e as interfaces são projetadas, resultando em um modelo para o domínio da solução, ou seja, uma descrição detalhada de como o sistema deve ser construído em tecnologias de concreto.
Os detalhes de implementação geralmente incluem -
- Reestruturando os dados da classe (se necessário),
- Implementação de métodos, ou seja, estruturas de dados internos e algoritmos,
- Implementação de controle, e
- Implementação de associações.
Grady Booch definiu o design orientado a objetos como “um método de design que abrange o processo de decomposição orientado a objetos e uma notação para representar modelos lógicos e físicos, bem como modelos estáticos e dinâmicos do sistema em design” .
Programação Orientada a Objetos
A programação orientada a objetos (OOP) é um paradigma de programação baseado em objetos (contendo dados e métodos) que visa incorporar as vantagens da modularidade e da reutilização. Objetos, que geralmente são instâncias de classes, são usados para interagir uns com os outros para projetar aplicativos e programas de computador.
As características importantes da programação orientada a objetos são -
- Abordagem de baixo para cima na concepção do programa
- Programas organizados em torno de objetos, agrupados em classes
- Concentre-se nos dados com métodos para operar nos dados do objeto
- Interação entre objetos por meio de funções
- Reutilização do design por meio da criação de novas classes, adicionando recursos às classes existentes
Alguns exemplos de linguagens de programação orientadas a objetos são C ++, Java, Smalltalk, Delphi, C #, Perl, Python, Ruby e PHP.
Grady Booch definiu a programação orientada a objetos como "um método de implementação no qual os programas são organizados como coleções cooperativas de objetos, cada um dos quais representa uma instância de alguma classe, e cujas classes são todos membros de uma hierarquia de classes unidas por meio de relacionamentos de herança ” .