studynotes

Repositório para armazenar todas as anotações de cursos feitos

View on GitHub

Aula 1 - ORIENTAÇÃO A OBJETOS E UML

A modelagem de sistemas consiste no desenvolvimento de modelos (diagramas) que representem o mundo real, sob a perspectiva do desenvolvimento de sistemas e está intimamente relacionada a dois fatores: ao paradigma de desenvolvimento e ao processo de desenvolvimento em uso.

Paradigma é uma forma de abordar um problema.

No paradigma orientado a objetos, o enfoque está na identificação de classes e seus respectivos objetos que interagem para a solução do problema.

Dentro da perspectiva do desenvolvimento orientado a objetos, surge a UML (Unified Modelling Language), uma linguagem unificada de modelagem, que permite aos desenvolvedores construírem diagramas sob diferentes perspectivas.

O desenvolvimento de sistemas é um processo intelectual e progressivo, em que os profissionais envolvidos adquirem mais conhecimento do sistema à medida que avançam no entendimento da realidade em que o sistema está inserido.

No início do processo, é preciso conversar com os profissionais envolvidos no negócio em questão para compreender a realidade e o funcionamento do mesmo.

Para representar a realidade e entender o que se passa no contexto do sistema a ser construído, precisamos traduzir a realidade em modelos.

Modelos = Nada mais são que diagramas gráficos que representam a realidade e ajudam os desenvolvedores a compreendê-la. Portanto, modelar um sistema consiste em criar um conjunto de modelos sob a forma de diagramas, que representam a estrutura e o comportamento de um sistema.

Paradigma imperativo ou estruturado, caracterizado pelo uso das técnicas de Análise Estruturada e Análise Essencial, que foram eficientes para sistemas de pequeno porte.

Paradigma Orientado a Objetos, também chamado paradigma OO, para sistemas mais complexos e robustos.

Na OO, tarefa principal passa a ser a identificação dos objetos do mundo real envolvidos no contexto do sistema e a relação entre eles. Ao identificar os objetos, são identificados também os dados (atributos) e as funcionalidades (funções) inerentes àquele objeto.

OBJETO = DADOS + FUNÇÕES

Na medida em que são identificados todos os objetos pertinentes a um sistema, já teremos os dados e os procedimentos relacionados.

Um modelo OO tem com entidade fundamental o Objeto, que recebe e envia mensagens, executa procedimentos e possui um estado que, por proteção, apenas ele próprio pode modificar. Nesse processo, problemas são resolvidos, por meio de objetos, que enviam mensagens uns aos outros.

Elementos básicos da OO:

  1. Objeto: principal elemento do modelo. Representam as “coisas” a serem modeladas do mundo real. Cada objeto possui os dados inerentes a ele e possui as operações que ele executa.
  2. Mensagens: Quando um objeto deseja que seja executada uma operação de responsabilidade de outro objeto, ele manda uma mensagem a esse objeto informando o que ele deseja que seja feito. A operação desejada será implementada por meio de um método da classe que recebe a mensagem.
  3. Atributos: dados que caracterizam o objeto.
  4. Métodos: procedimento (implementado por uma rotina ou função) que executa uma operação em um objeto, que define parte do seu comportamento.
  5. Classes: conjunto de objetos com as mesmas características (atributos e métodos).

“Objeto é uma instância de uma classe”, isto é, a classe é o molde e o objeto, a “coisa real”.

Pilares da OO:

  1. Encapsulamento: esconder; o objeto esconde seus dados (atributos) do acesso indevido de outros objetos.
  2. Herança: Mecanismo para derivar novas classes a partir da definição de classes existentes através de um processo de refinamento.
  3. Polimorfismo: muitas formas; a partir do momento em que uma classe herda atributos e métodos de uma (herança simples) ou mais (herança múltipla) classes base, ela tem o poder de alterar o comportamento de cada um desses procedimentos (métodos).
  4. Visibilidade: uma classe pode visualizar da outra. Como princípio, devemos garantir o encapsulamento, ou seja, os atributos devem ser privados (acessíveis apenas por métodos da própria classe) e determinados métodos públicos (acessíveis por todas as classes), e acessar esses dados.

O uso de técnicas orientadas a objetos facilita o controle da complexidade uma vez que promove uma melhor estruturação de seus componentes e também permite que componentes já usados e validados possam ser reaproveitados.

As hierarquias de classes (herança) são componentes portáveis entre aplicações.

Proporciona modularidade trazendo os seguintes benefícios:

Um sistema desenvolvido com as características do modelo OO tende a ser bem estruturado posto que os objetos são unidades coesas com interfaces simples que escondem as suas implementações.

Conceitos de Análise e Projeto Orientado a Objeto

Análise de sistemas significa uma investigação dos problemas e dos requisitos de um contexto, em particular, com vistas ao desenvolvimento de um sistema automatizado. A ideia básica é identificar quais seriam as funções que esse sistema precisa ter, de forma a atender eficientemente as necessidades de seus usuários.

Atividade de análise e projeto:

Análise implica em identificar e descrever os conceitos no domínio do problema.

Atividade de análise: definição dos objetos de software e como eles colaboram para que os requisitos dos usuários sejam plenamente satisfeitos. Atividade de projeto: denota uma solução, voltada a atender aos requisitos, considerando aspectos de tecnologia.

Análise pode ser traduzida em “faça a coisa certa”, e projeto em “faça certo a coisa”.

Identificação e modelagem dos objetos do mundo real que afetam o sistema.

UML = (Unified Modeling Language) é uma linguagem padrão para construção de projetos de sistemas, orientados a objeto, voltada para visualização, especificação, construção e documentação de artefatos de um sistema. Independente do método de desenvolvimento utilizado. Linguagem de modelagem != linguagem de desenvolvimento

  1. Visualização: A modelagem gráfica tende a facilitar a compreensão, permitindo sua interpretação sem ambiguidades.
  2. Especificação: Permite a construção de modelos precisos, sem ambiguidades e completos. A UML atende a esses quesitos sob o ponto de vista da análise, projeto e implementação.
  3. Construção: Os diagramas UML podem ser diretamente integrados a várias linguagens de programação tais como Java e C++.
  4. Documentação: A UML abrange a documentação da arquitetura do sistema e de todos os seus detalhes.

Os diagramas da UML são divididos em 2 grupos: Diagramas de Estruturas e Diagramas Comportamentais. No total, eles formam 14 diagramas.

diagrama

PDF - Diagramas de UML

UML como esboço: desenvolvedores usam a UML como forma de expressar aspectos relevantes de um sistema, esboçando ideias e alternativas do que pretende fazer. Geralmente, são usados desenhos informais, sem ferramentas e cujo objetivo é a discussão de ideias visando à construção de software de forma colaborativa. O modo UML, como esboço, está mais compatível com as metodologias ágeis, que preconizam mais código e menos documentação.

UML como projeto: construir um projeto completo para ser codificado por programadores, valendo-se de ferramentas case para melhor entendimento dos modelos pela equipe. O modo UML, como projeto, está mais alinhado com os processos de desenvolvimento mais complexos, como processos iterativos e incrementais, como o PU (processo unificado) implementado através da ferramenta RUP (Rational Unifiec Process) prototipação.

UML como linguagem de programação: Onde os desenvolvedores desenham os diagramas que são compilados para o código executável e a UML se torna o código fonte. Exige ferramentas mais sofisticadas. O modo UML, como linguagem de programação, tende a ser mais usado em modelos de desenvolvimento de prototipação.

Processos iterativos: são processos onde o ciclo de vida do sistema é dividido em uma série de mini projetos, curtos, preferencialmente de duração fixa (por exemplo, 3 meses), denominados iterações.

Uma ferramenta case é um programa que auxilia aos membros da equipe de desenvolvimento no estudo, modelagem e construção do sistema, possibilitando que vários diagramas possam ser elaborados em conjunto, representando a estrutura e comportamento do sistema a ser desenvolvido.

Aula 2 - Uso e modelagem de requisitos

Requisitos de um sistema: O software precisa ter as funcionalidades adequadas para satisfazer as necessidades de seus usuários.

A UML (linguagem unificada de modelagem) disponibiliza para esse fim o diagrama de casos de uso, cuja finalidade é mapear as funcionalidades do sistema, evidenciando os atores que com elas interagem.

Levantamento de requisitos: os requisitos são necessidades dos usuários que os sistemas precisam atender.

As atividades de levantar e identificar os requisitos são fundamentais para todo o processo de desenvolvimento de sistemas, pois uma vez conhecidas as reais necessidades de seus usuários poderemos desenvolver o sistema adequado. Em contrapartida, se as necessidades identificadas não forem as reais, o sistema não atenderá ao que seus usuários precisam, e a tendência é que seja descartado.

Tipos de requisitos:

Diagrama de casos de uso: tem como objetivo apresentar os requisitos funcionais do sistema.

Elementos do diagrama de casos de uso:

Ator: algo com comportamento, que interage diretamente com o sistema. Um ator participa (realiza) um ou mais casos de uso do sistema. A representação do ator, no diagrama de casos de uso, é o boneco, chamado de stickman. Pode representar:

Identificando atores:

Casos de uso: um caso de uso é uma descrição narrativa de uma sequência de eventos que ocorre quando um ator usa um sistema para realizar uma tarefa. Os casos de uso representam, através de elipses, as funcionalidades do sistema. Ex: Sendo uma funcionalidade, o nome do caso de uso deve ser composto por um verbo no Infinitivo + complemento verbal, como o exemplo acima: “Matricular em Curso”.

Identificando casos de uso:

Cenários: é uma sequência específica de ações que ilustra o comportamento do caso de uso.

Relacionamento ou associações: o diagrama de casos de uso possibilita a existência de relacionamentos entre:

atores e casos de uso

atores entre si

Aula 3 - Descrição textual de casos de uso

O diagrama de caso de uso é útil, na medida em que nos fornece uma visão geral das funcionalidades do sistema (conjunto de casos de uso) e dos atores que com elas se relacionam. É pobre na medida em que não entendemos como a interação ocorre em cada caso de uso.

O diagrama é um sumário gráfico do conjunto de casos de uso (funcionalidades) de um sistema.

Se o tempo destinado ao modelo de casos de uso for pouco, concentre-se na especificação ou descrição dos casos de uso e esqueça o diagrama.

Formatos para especificar casos de uso

Dicas para especificações de casos de uso:

  1. Não use detalhes de implementação ou de determinada tecnologia em suas especificações.
  2. Procure não associar casos de uso a telas de sistemas.
  3. Utilize um formato de especificação que deixa o diálogo mais claro entre ator e caso de uso. O modelo tem duas colunas. Na primeira, descrevemos as ações do ator, e na segunda as ações do sistema.
  4. Os casos de uso incluídos (chamados de include) ou estendidos (chamados por extends) também devem ter descrição textual, podendo estar no formato resumido ou informal.
  5. Algumas perguntas podem ajudar no detalhamento dos cenários principal e alternativos. Exemplo: Quando tudo ocorre na normalidade (com sucesso), qual o comportamento do sistema?
  6. Quando um passo for muito complicado, ele pode vir a ser um novo caso de uso, que se relacionará com o caso original pelo estereótipo include.
  7. Faça casos de uso enxutos, pois casos longos podem não ser lidos em sua totalidade.

tabela casos de uso

Aula 4 - Diagrama de classes

Diagrama de classes = principal diagrama da UML (mais amplamente usado) Vários níveis de diagramas de classes: são usados no nível de domínio (conceitual) e de projeto.

Não se devem representar estruturas de projeto (interfaces, chaves, arquivos, campos etc.). O foco da análise é o negócio.

Modelo conceitual de classes

Usa os elementos mais básicos do diagrama de classes. Finalidade: representar os objetos (objetos = iguais ao mundo real)

Descreve de forma gráfica, todos os tipos de objeto que interagem para realizar as funcionalidades previstas em um sistema e vários tipos de relacionamentos estáticos entre eles. Propriedades e operações de uma classe e as restrições relacionadas à forma como os objetos se relacionam.

O diagrama de classes evolui à medida que o projeto avança.

fases de analise

1º momento:

2º momento:

Fase de projeto: o mesmo diagrama pode ser refinado com a inserção de:

Fase de implementação: codificação na linguagem

Conceito de classe: abstração da realidade, representando algo do mundo real. Na UML, uma classe é representada por um compartimento contendo três partes.

fases de analise

classe nome da classe
** atributos** dados que se retêm da classe
operações procedimentos que a classe executa, para prestar seu serviço ao sistema = métodos

fases de analise

Classe x Objeto

Classe Objeto
molde de um conjunto de objetos afins (mesmas características) é uma instância de uma classe

Ao modelarmos um sistema, estamos em busca de classes, e não de objetos. Poderíamos pensar que o nome da técnica deveria chamar-se “orientação a classes”, e não “orientação a objetos”.

fases de analise

Elementos do diagrama de classes

  1. Classes, com atributos e operações (métodos) de cada uma;
  2. Relacionamentos entre as classes;
  3. Multiplicidade dos relacionamentos;
  4. Visibilidade de atributos e métodos;
  5. Nome dos relacionamentos e papel nos relacionamentos;
  6. Navegabilidade nos relacionamentos;
  7. Notas e comentários.

1. Classes, com atributos e operações (métodos) de cada uma; Cada classe possui os seus atributos e operações específicos

PDF - Diagramas de UML

2. Relacionamentos entre as classes; Associação: mais simples e comum relacionamento entre as classes. Ocorre entre uma, duas ou mais classes distintas, não correlatas e independentes. Ao final do relacionamento, as classes permanecem com suas vidas próprias.

3. Multiplicidade dos relacionamentos; Indica quantos objetos de cada classe podem estar envolvidos no relacionamento.

Multiplicidade Significado
1 Exatamente um
1..* Um ou vários (muitos)
0..* Nenhum (zero) ou vários (muitos)
* Muitos. A leitura é nenhum (zero) ou vários (muitos)
0..1 Nenhum (zero) ou um
m..n Faixa de valores. Ex: 1 a 3, 4 a 7 ou 6 a 11.

Exemplo:

A classe EQUIPEFUTEBOL tem de 11 a 22 ESTUDANTES -> 11..22 do lado da classe ESTUDANTE; A classe ESTUDANTE pode participar de NENHUMA e até 8 DISCIPLINAS -> 0..8 do lado da classe DISCIPLINA.

exemplo

4. Visibilidade de atributos e métodos; Quais classes podem ver (visualizar) o que de outra classe. Cada classe tenha elementos privados e públicos.

A UML permite que se rotule todo atributo e método de uma classe e com um indicador de visibilidade.

Visibilidade Comentários
+Público qualquer classe pode usar o método ou atributo
-Privado apenas a própria classe pode usar o método ou atributo
~Pacote apenas classes dentro do pacote podem usar o método ou atributo
#Protegido apenas a subclasse (herança) ou classe especializada pode usar o atributo ou método

5. Nome dos relacionamentos e papel nos relacionamentos;

6. Navegabilidade nos relacionamentos; Mostra a direção da navegação.

7. Notas e comentários. Notas são comentários nos diagramas; podem ser isoladas ou vinculadas, por linha tracejada, a um dos elementos do diagrama. Podem ainda ser usadas em qualquer diagrama. exemplo:

notas e comentarios

Exercícios

Exercícios - Gabarito

Aula 5 - Diagrama de interação, com ênfase em sequência

Diagramas de casos de uso: apresentam funcionalidades. Diagramas de classes: mostra a estrutura e relacionamento entre as classes necessárias. Diagramas de interação: mostram como as classes (objetos) trocam mensagens (interagem para oferecer uma funcionalidade).

Mensagem: representa a solicitação que um objeto requisitante faz a um objeto receptor para que este execute uma das operações definidas em sua classe.

Tipos de diagramas de interação

Mostram como as classes colaboram em determinados comportamentos. Ambos os tipos visam estabelecer a integração entre o diagrama de classes e o diagrama de especificações textuais dos casos de uso. Identificação de novos métodos para as classes e ainda a ajuda na identificação de qual classe deve conter um determinado método.

Diagrama de Sequência Diagrama de Comunicação (Colaboração)
**VANTAGENS**
há como saber a ordem de envio das mensagens, com bastante clareza modelos mais legíveis (comparando com o de sequência)
é oportuno, pois foca na temporalidade da interação, que é relevante foca nas mensagens enviadas entre objetos que estão relacionados
**QUANDO USAR**
quando o foco for a sequência das mensagens no **decorrer do tempo** quando o foco forem as mensagens enviadas entre os objetos que estão relacionados
**PONTOS FORTES**
mostra com clareza a sequência temporal das mensagens economia de espaço ao modelar
amplo conjunto de opções de notação flexibilidade ao adicionar novos objetos, em qualquer direção
**PONTOS FRACOS**
a cada novo objeto, o diagrama cresce pra direita, consumindo espaço na horizontal difícil perceber a sequência das mensagens, necessário numerá-las sequencialmente
muitos objetos = difícil desenho e leitura menos opções de notação

Tripé da análise

  1. Diagrama de casos de uso e especificações de casos de uso;
  2. Diagrama de classes;
  3. Diagrama de sequência ou diagra

tripe da analise

Diagrama de sequência

O foco aqui é a sequência da troca de mensagens.

diagrama sequencia

diagrama sequencia

Exemplo de diagrama de sequencia (pdf)