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

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

Princípios de Análises e projetos de sistemas

Apresentações semelhantes


Apresentação em tema: "Princípios de Análises e projetos de sistemas"— Transcrição da apresentação:

1 Princípios de Análises e projetos de sistemas
Tópicos a serem abordados: Tipos Abstratos de Dados (TAD) Programação orientada a objetos Programação orientada a objetos x Programação Estruturada Linguagens orientadas a objetos Fundamentos do Paradigma de Objetos UML – histórico UML – introdução e definições básicas

2 Tipos Abstratos de Dados
A noção de tipos abstratos de dados (TAD) se refere ao encapsulamento de uma estrutura de dados juntamente com as operações que manipulam essas estruturas dentro de uma região protegida. Uma linguagem dá apoio a tipos abstratos de dados quando ela possui mecanismos que permitem a sua representação diretamente.

3 Linguagens de programação como Ada e Modula-2 dão apoio a tipos abstratos de dados, mas ainda têm certas limitações. As principais são: O sistema de tipos é unidimensional, ou seja, um programa é desenvolvido como um conjunto de tipos abstratos de dados cuja estrutura é definida no nível horizontal: as hierarquias de generalização/ especialização não podem ser representadas explicitamente.

4 Tipos abstratos de dados não são representados explicitamente em tempo de execução, isto é, embora tipos abstratos de dados sejam úteis durante as fases de análise, projeto e implementação, eles desaparecem durante o tempo de execução e o software se torna de novo um monte de linhas de código agrupadas em módulos completamente desestruturados.

5 Programação Orientada a Objetos
O próximo passo da evolução das linguagens de programação foi introduzido com o conceito de objetos, criado por Dahl e Nygaard com a linguagem Simula-67 [17], e consolidado com a linguagem Smalltalk-76. Simula-67 introduziu os conceitos de classe, objeto e herança.

6 O modelo clássico de objetos emprega classes para a descrição de objetos. Essas classes contém a definição da estrutura dos objetos (dados e funções). Além disso, através dos mecanismos de herança e agregação, classes já existentes podem compartilhar seu comportamento com novas classes.

7 Essencialmente, o modelo de objetos trata dados e funções como aspectos indivisíveis no domínio do problema. O forte relacionamento entre o modelo de objetos e a noção de tipo abstrato de dados se torna evidente, uma vez que os objetos podem ser vistos como instâncias de tipos abstrato de dados.

8 Na verdade, na maioria das linguagens orientadas a objetos, a definição de uma classe descreve um tipo de dados associado com as operações que podem ser executadas nas instâncias desse tipo.

9 6 acontecimentos que marcaram a criação do modelo de objetos:
Introdução do conceito de objetos no ano de 1967, lançamento da linguagem Simula-67. Em 1972 Dahl escreveu um artigo sobre ocultamento de informações (o conceito de objetos nesta época já estava bem definido). Em 1976 foi lançada a primeira versão do Smalltalk e a orientação a objetos foi consolidada. A partir daí, o modelo de objetos evoluiu no sentido de oferecer novas linguagens de programação.

10 6 acontecimentos que marcaram a criação do modelo de objetos:
Em 1983 foi disponibilizada a primeira versão do C++, versão orientada a objetos da disseminada linguagem C. Em 1988, foi lançada a linguagem Eiffel, a primeira linguagem considerada orientada a objetos “pura”. No final do século XX, mais precisamente no ano de 1995, foi lançada a primeira versão da linguagem Java, uma linguagem orientada a objetos “pura”, baseada na sua antecessora C++.

11 Programação orientada a objetos é um modelo de programação baseado em conceitos, tais como objetos, classes, tipos, ocultamento da informação, herança, polimorfismo e parametrização. Análise e projeto orientados a objetos oferecem uma maneira de usar todos esses conceitos para a estruturação e construção de sistemas. Esses conceitos são intrinsicamente independentes de linguagens e cada uma tem sua própria maneira de implementá-los.

12 A essência da programação orientada a objetos é a resolução de problemas baseada na identificação de objetos do mundo real pertencentes ao domínio da aplicação e no processamento requerido por esses objetos, através de interações entre eles.

13 Esta ideia de “programas simulando o mundo real” cresceu com o lançamento do Simula-67, que inicialmente foi projetada para o desenvolvimento de aplicações de simulação. Devido ao fato do mundo estar povoado de objetos, uma simulação de tal mundo deveria conter objetos simulados capazes de enviar e receber mensagens e reagir às mensagens recebidas.

14 Consequentemente, na programação orientada a objetos, a execução de um programa consiste de um conjunto de objetos relacionados que trocam mensagens entre si, isto é, que se comunicam através da execução das operações uns dos outros.

15 Cada objeto tem um estado interno composto por atributos que são modificados mediante a recepção e o envio de mensagens. Programas são construídos através da definição de classes, que se relacionam e formam hierarquias de abstração.

16 Benefícios da programação OO:
Melhor estruturação do sistema e do encapsulamento entre dados e funções; Facilita a construção de programas complexos; Aumento da reutilização; A estruturação do raciocínio e o menor acoplamento proporcionado pelo conceito de objetos melhoram a qualidade do produto final e reduzem os custos de manutenção do sistema.

17 Programação Orientada a Objetos vs. Programação Estruturada
Para a resolução de problemas, a abordagem estruturada utiliza uma técnica conhecida como decomposição funcional. Dessa forma, uma operação complexa é dividida em operações menores e assim sucessivamente, até atingir um nível de detalhes que possa ser implementado facilmente.

18 Programação Orientada a Objetos vs. Programação Estruturada
Dessa forma, as funções assumem um papel central no desenvolvimento, que recebem dados de entrada e produzem dados de saída. Apesar da estreita relação entre dados e funções, nas linguagens estruturadas esses dois conceitos são completamente disjuntos, tratando cada um deles de uma maneira particular.

19 Programação Orientada a Objetos vs. Programação Estruturada
Por essa razão, os processos estruturados de desenvolvimento de software exigem mudanças de contexto constantes, o que dificulta o mapeamento dos artefatos de diferentes fases do desenvolvimento.

20 Programação Orientada a Objetos vs. Programação Estruturada
O encapsulamento de dados e funções, decorrente do conceito de objetos e classes foi um grande passo para a homogenização do raciocínio e a redução da complexidade dos sistemas. Com essa visão unificada, a ideia central passa a ser a decomposição de dados, ao invés da decomposição funcional.

21 Programação Orientada a Objetos vs. Programação Estruturada
As funções se tornam ligadas a um modelo de dados, que juntos formam o conceito de classe. Em OO, as classes desempenham um papel semelhante aos módulos da programação estruturada, com a vantagem de garantir a coesão entre elementos agrupados (dados e funções).

22 Programação Orientada a Objetos vs. Programação Estruturada

23 Programação Orientada a Objetos vs. Programação Estruturada

24 Linguagens Orientadas a Objetos
Existe uma distinção clara entre: Linguagens baseadas em objetos – quando ela dá apoio explícito somente ao conceito de objetos; Linguagens baseadas em classes - quando ela dá apoio tanto para a criação de objetos, quanto para o agrupamento de objetos através da criação de novas classes; Linguagens orientadas a objetos - proporciona suporte linguístico para objetos, requer que esses objetos sejam instâncias de classes e além disso, oferece suporte para um mecanismo de herança.

25 Linguagens Orientadas a Objetos
Linguagens como Ada85 e CLU são baseadas em objetos, enquanto C++, Java, C#, Modula-3 e Smalltalk-80 são orientadas a objetos.

26 Linguagens Orientadas a Objetos
Um ponto muito importante na programação orientada a objetos é a obtenção de componentes reutilizáveis e flexíveis através de conceitos como, por exemplo, objetos, classes, tipos, herança, polimorfismo, e acoplamento dinâmico. O conceito de herança é exclusivo do modelo de objetos.

27 Fundamentos do Paradigma de Objetos
Atenção grupo: Esta parte fica para vocês fazerem. Usem os arquivos: apostila_orientacao_objetos_2009.pdf, (da página 12 até a página 19) e apostila APSII Rodrigo completa.pdf (da página 16 até a página 19). Lembrem-se: sigam o primeiro arquivo, usem o segundo só para incrementar! São conceitos que foram tratados na primeira apresentação de forma muito superficial. Tentem aprofundar tais conceitos. As figuras são extremamente importantes.

28 UML - Uma Breve História
UML começou a ser definida a partir de uma tentativa de Jim Rumbaugh e Grady Booch de combinar dois métodos populares de modelagem orientada a objeto: Booch e OMT (Object Modeling Language). Mais tarde, IvarJacobson, o criador do método Objectory, uniu-se aos dois (formando os famosos três amigos), para a concepção da primeira versão da linguagem UML (Unified Modeling Language). UML foi adotada em 1997 pela OMG (Object Management Group).

29 UML - Uma Breve História

30 UML - Motivação e Necessidade de uma Modelagem Visual
Da mesma forma que é impossível construir uma casa sem primeiramente definir sua planta, também é impossível construir um software sem inicialmente definir sua arquitetura.

31 Desta forma, é extremamente importante ter uma representação visual de seu sistema antes que ele entre na etapa de implementação. Descobrir entre as etapas a serem percorridas, aquelas mais importantes do ponto de vista do cliente.

32 Necessidade de estabelecer um rumo, que deve ser definido a partir dos requisitos de software. Uma modelagem visual permite representar (especificar) estes requisitos, ou seja, facilita a captura destes requisitos. Necessidade de estabelecer uma padronização para facilitar a comunicação entre os analistas (responsáveis pelo levantamento dos requisitos) e o time de desenvolvimento (responsáveis pela implementação).

33

34 Um sistema tem geralmente muitas classes (centenas e até milhares) e nem sempre estas classes são vistas por uma só pessoa. Isto é, dependendo do nível hierárquico desta pessoa, formas diferentes de apresentar uma diagrama de classes devem existir.

35 Um cliente não quer saber o que é uma classe, mas apenas compreender determinados conceitos;
Um gerente de um projeto não precisa ver detalhes de um modelo; Um time de desenvolvimento precisa ver um diagrama e compreender uma série de detalhes.

36

37 Um modelo dever ser criado independentemente de sua implementação
Um modelo dever ser criado independentemente de sua implementação. A qualquer momento uma implementação pode ser trocada por outra sem afetar o modelo.

38 A utilização de uma modelagem visual facilita a visualização, e, por conseguinte, a criação de um melhor modelo (mais flexível, mais robusto e principalmente mais reutilizável).

39 UML – Conceitos Básicos
UML é uma linguagem para visualização, especificação, construção e documentação de artefatos de um software em desenvolvimento.

40 UML – Conceitos Básicos
UML permite modelar: elementos; relacionamentos; mecanismos de extensibilidade; diagramas.

41 UML – Conceitos Básicos
Elementos: estruturais classes, interfaces, componentes comportamentais interações, máquinas de estado grupos de elementos pacotes, subsistemas outros anotações

42 UML – Conceitos Básicos
Relacionamentos: Dependências, Associações, Generalizações, Implementações (realization) Mecanismos de Extensibilidade Estereótipos Tagged value Regras (constraints)

43

44 UML – Conceitos Básicos
Diagramas Um modelo é uma descrição completa do sistema em uma determinada perspectiva.

45 Um modelo é representado por um ou mais diagramas
Um modelo é representado por um ou mais diagramas. Desta forma, um diagrama pode ser visto como uma visão dentro de um modelo. Um diagrama pode ser representado de várias formas, dependendo de quem irá interpretá-lo.

46 Bibliografia: Inside the Unified Modeling Language, Material da Rational UML Distilled Applying the Standard Object Modeling Language, Martin Fowler Curso on-line da TogetherSoft,  practical_guides/umlonlinecourse/ Especificação da Linguagem UML Versão 1.4, OMG Software Architecture and the UML, Grady Booch (Seminário)


Carregar ppt "Princípios de Análises e projetos de sistemas"

Apresentações semelhantes


Anúncios Google