A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Engenharia de Software Orientada a Objetos

Apresentações semelhantes


Apresentação em tema: "Engenharia de Software Orientada a Objetos"— Transcrição da apresentação:

1 Engenharia de Software Orientada a Objetos
Professor: Guilherme Timóteo Aula 1: Introdução aos conceitos de modelagem

2 Agenda Histórico Definição - Orientação a Objetos
Definição – Desenvolvimento O.O. Metodologia Orientada a Objetos Temas de Orientação a Objetos Abstração Encapsulamento Compartilhamento

3 Histórico 1946: Criação de uma máquina considerada o primeiro computador do mundo. Esta máquina se chamava Eniac.

4 Histórico 1957 - Criação da Linguagem de Programação Fortran
1958 – Criação da Linguagem de Programação Algol 1964 – Criação da Linguagem de Programação Basic Ole-Johan Dhal e Kristen Nygaard desenvolvem a linguagem Simula-67, com vários conceitos que posteriormente seriam base para a Orientação a Objetos: classes, objetos, funções virtuais, garbage collection, etc. Alan Key cunha os termos ”object-oriented” e ”objectoriented programming”.

5 Histórico Década de 1970 - Crise do Software
Elementos desencadeadores: Desenvolvimento de Software de forma “artesanal” através do desenho de telas e arquivos Constantes erros de execução Pouco tempo para coletar dados Não cumprimento de prazos Problemas de custos inesperados relacionados a correção de erros e adaptação do código Código/documentação ilegível ou inexistente Comunicação durante o desenvolvimento muito fraca Falta de testes complexos Insatisfação de usuários

6 Histórico A partir da década de 70 foram desenvolvidas metodologias para tentar resolver os problemas criticos dos sistemas 1980 – Bjarne Stroustrup cria extensões orientadas a objeto para C e chama essa linguagem de ”C com classes ”. 1981 – Grady Booch desenvolve um processo de desenvolvimento, com uma notação que viria a ser conhecida como “Diagramas de Booch”. A Agência Espacial Européia propõe uma técnica de projeto orientado a objetos, chamada HOOD (Hierarchical Object-Oriented Design ) 1985 – Bertrand Meyer propõe a linguagem Eiffel

7 Histórico 1991 – James Rumbaugh propõe uma metodologia nomeada OMT (Object Modeling Technique). A notação do diagrama de classes de OMT viria a servir como base para UML. 1991 – A Sun começa a desenvolver uma nova linguagem orientada a objetos chamada Java, originalmente projetada para criar software para eletrodomésticos. 1994 – Grady Booch, James Rumbaugh e Ivar Jacobson começam a trabalhar na especificação de UML (Unified Modeling Language) Coleman e outros autores propõem a metodologia Fusion. 1995 – A Borland lança Delphi 1.0 1997 – Lançada oficialmente a especificação 1.0 de UML. 2004 – Lançada a especificação 2.0 de UML. Rumbaugh, em conjunto com Blaha lançam uma nova metodologia para análise e projetos orientados a objetos.

8 Orientação a Objetos Definição: Significa organizar um sistema como uma coleção de objetos distintos, que incorporam dados e comportamentos. As 4 principais características deste paradigma são: Identidade Classificação Herança Polimorfismo

9 Identidade Significa que os dados são quantizados em entidades distintas, chamadas objetos. Cada objeto tem sua própria identidade, mesmo que eles tenham todos os atributos iguais. Ex: Duas bolas de futebol da FIFA para a copa do Mundo. Elas possuem todas as características iguais (tamanho, peso, etc), mas são dois objetos distintos. Num sistema orientado a objetos, cada objeto possui uma referência única para que o mesmo possa ser acessado.

10 Classificação Significa que os objetos com a mesma estrutura de dados (atributos) e comportamentos (operações) podem ser agrupados em uma classe. Ex: uma classe para agrupar os objetos Motos. Abstrair

11 Herança Significa o compartilhamento de atributos e operações entre classes com relacionamento hierárquico. A hierarquia é definida entre a superclasse e subclasse. A superclasse contém as informações gerais que são compartilhadas entre as subclasses. As subclasses contém as informações específicas refinando assim o modelo de classes. Superclasse Subclasse 1 Subclasse 2

12 Herança – Um exemplo Ex: Clientes externos e internos de um estabelecimento comercial. Clientes internos são os próprios funcionários e tem um desconto especial nas mercadorias. Clientes externos são aqueles que compram mas não tem nenhum relação com o estabelecimento. Abaixo um possível modelo de classes simplificado para a situação acima:

13 Polimorfismo Significa que uma operação pode se comportar de forma diferente para diferentes classes. A principal vantagem do Polimorfismo é clareza no código e a facilidade de manutenção. Vamos ao exemplo abaixo:

14 Polimorfismo Note que tanto na classe Cliente quanto na classe Cliente_Interno existe uma operação chamada VerificarCredito(). Na classe Cliente_Interno a operação VerificarCredito faz uma verificação de crédito especial baseada no salário do funcionário.

15 Desenvolvimento O.O. Refere-se ao ciclo de vida do software:
Análise Projeto Implementação A essência do desenvolvimento é tentar representar (modelar) o problema antes de implementá-lo em uma linguagem específica. No passado, o enfoque de grande parte da comunidade científica foi a implementação, mas atualmente o foco mudou. Agora, os autores focam a análise e projeto.

16 Metodologia O.O. Basicamente é um processo para desenvolvimento OO e também uma notação gráfica para representar os conceitos de O.O.. A metodologia proposta por Rumbaugh é dividida nas seguintes etapas: Concepção do sistema Análise Projeto do Sistema Projeto de Classes Implementação

17 Metodologia O.O. Concepção: fase inicial do processo onde os usuários do sistema fornecem os requerimentos do sistema. Análise: fase no qual o analista examina detalhadamente os requisitos informados na etapa de concepção. Existem dois tipos de análise: Análise do Domínio: que é uma descrição do mundo real refletido no sistema, ou seja, é um mapeamento dos objetos envolvidos no negócio dentro de um sistema. Análise da Aplicação: que é uma descrição das partes do sistema que são visíveis ao usuário, mas não estão definidas na análise do domínio. Por exemplo: interfaces para ingresso dos dados, apresentação de resultados em relatórios ou consultas.

18 Metodologia O.O. Projeto do sistema: é um planejamento de alto nível da arquitetura do sistema para solução do problema da aplicação. O projetista precisa decidir a respeito das características de desempenho, estratégia para protocolo de comunicação, etc. Projeto de Classes: O projetista vai refinar o modelo de classes em função das características indicadas no projeto do sistema. Implementação: os implementadores traduzem as classes e os relacionamentos desenvolvidos durante o projeto de classes em uma linguagem de programação, banco de dados ou hardwares específicos.

19 Temas de O.O. Existem alguns temas importantes a serem quando estamos falando de O.O.. São eles: Abstração Encapsulamento Compartilhamento

20 Abstração Permite que você se concentre nos aspectos essenciais de uma aplicação ignorando os detalhes. Isso significa focar o que o objeto faz, antes de decidir como implementá-lo. O uso da abstração permite que você tome decisões sem que haja um grande prejuízo de tempo. Corrigir uma abstração é sempre menos custosa do que corrigir uma implementação.

21 Encapsulamento Também chamado de ocultamento das informações.
O encapsulamento evita que partes do programa se tornem tão independentes que uma pequena mudança gere efeitos em cascata. O encapsulamento permite que você mude a implementação sem afetar as aplicações que o utilizam. Para exemplificar, podemos pensar em uma dona de casa (usuário da classe) utilizando um liquidificador (sistema). O usuário não necessita conhecer detalhes do funcionamento interno do sistema para poder utilizá-lo, precisa apenas conhecer a interface, no caso, os botões que controlam o liquidificador.

22 Compartilhamento A herança tanto de atributos quanto de comportamentos permitem que as subclasses compartilhem códigos comuns. Este compartilhamento garantirá maior economia de código. A manutenção também ficará facilitada, pois será necessária somente a modificação do código compartilhado e não de toda a aplicação.

23 Resumo dos conceitos Orientação a Objetos – significa organizar um software através de objetos Metodologia O.O. – é um conjunto de procedimentos sugeridos para o desenvolvimento de um sistema O.O. Identidade – indica que os dados são indicados em entidades distintas Classificação – agrupamento de objetos com características semelhantes Encapsulamento – é o ocultamento de informações que evita os erros em cascata Herança – é a capacidade de compartilhar dados e atributos Polimorfismo – é a capacidade de uma operação ter comportamento distinto para diferentes classes Abstração – tratamento dos informações gerais sem considerar os detalhes.

24 Dúvidas ?


Carregar ppt "Engenharia de Software Orientada a Objetos"

Apresentações semelhantes


Anúncios Google