Projeto de Sistemas
Aula 02
Motivação
• O desenvolvimento de um sistemas de Informação é uma tarefa complexa.
• Pessoas; • Dados; • Recursos;
Sistemas de software
• Compreende os módulos funcionais
computadorizados que interagem entre si para proporcionar ao(s) usuário(s) do sistema a automatização de diversas tarefas.
Construindo sistemas
• Quanto maior a complexidade, mais difícil torna-se o desenvolvimento da solução;
• É necessário um planejamento inicial para a construção de sistemas, criando um modelo;
• Um modelo é uma representação idealizada de um sistema a ser construído;
Por quê criar modelos?
• Gerenciamento da complexidade: Diversos modelos do sistema com perspectivas diferentes;
• Comunicação entre as pessoas envolvidas: Os
modelos traduzem diversas informações a respeito do sistema;
• Redução nos custos de desenvolvimento: Erros detectados em modelos são menos onerosos; • Predição do comportamento futuro do sistema
Modelos de sistemas
• “Uma figura vale por mil palavras”• Modelos possuem desenhos gráficos que seguem algum padrão lógico.
• Esse desenho são normalmente denominados diagramas.
• Um diagrama reúne elementos gráficos que possuem um significado pré-definido.
Modelo de sistemas
• A modelagem de sistemas consiste na utilização de
notações gráficas e textuais com o objetivo de
construir modelos que representam as partes
essenciais de um sistema, considerando-se diversas perspectivas diferentes e complementares.
Programacão Estruturada x
OO
• Código estruturado : Dados + Funções
• Ex: Módulo Impressão ( “Recibo” e “Nota Fiscal”; “imprimir Recibo” e “imprimir Nota Fiscal”)
• Qual a desvantagem? Dificuldade? • E como seria OO?
Vantagens da POO
• Reutilização de Software: Reutilização de objetos em outra aplicação.
• Modularidade: Objetos podem ser escritos, testados e mantidos independentemente.
• Ocultamento dos dados: A implementação interna de um objeto não é relevante para os demais.
Vantagens do encapsulamento, abstração e generalização.
Paradigma da orientação a
objetos
• Por quê a orientação a objetos é importante para a modelagem de sistemas?
• Segundo Alan Kay, um sistema de software se comportaria como um ser vivo.
• No sistema cada “célula” interagiria com as demais através do envio de mensagens para realizar um objetivo comum.
• Cada célula se comporta como um agente autônomo.
Paradigma da orientação a
objetos
• Kay estabelece alguns princípios da orientação a objetos:
• Qualquer coisa é um objeto;
• Objetos realizam tarefas através da requisição de serviços a outros objetos;
• Cada objeto pertence a uma determinada classe. Uma classe agrupa objetos similares;
• A classe é um repositório para comportamento associado ao objeto;
Paradigma da orientação a
objetos
• O paradigma de orientação a objetos visualiza um sistema de software como uma coleção de agentes interconectados chamados objetos.
• Cada objeto é responsável por realizar tarefas
específicas. É através da interação entre objetos
Classes
• O mundo é formado por coisas: cliente, funcionário, loja, pedido de compra, etc.
• As coisas do mundo real são chamadas objetos; • Classes são o agrupamento do processo mental
para gerenciar a complexidade;
• Classe é um molde a partir do qual objetos são construídos.
Classe
Class Funcionario { String nome; int matricula; Date dtContratacao; Profissao ideProf; ... }Associações entre Classes
• Associação Simples: determina um relacionamentode uma classe com outra. Ex: Funcionário e Profissão.
• Agregação: determina uma associação na qual uma classe (parte) colabora com outra (todo), mas a
primeira pode existir sem a segunda. Ex: Turbina e Avião.
• Composição: relacionamento em que uma classe (parte) depende e não pode existir sem outra classe (todo). Ex: Lista de Pedidos e Pedido.
Mensagens
• Objetos não executam operações aleatoriamente.
• Para que uma operação em um objeto seja executada, deve haver um estímulo enviado a esse objeto.
Papel da abstração na
orientação a objetos
• Abstração é qualquer modelo que inclui os
aspectos mais importantes, ao mesmo tempo que ignora os detalhes menos importantes;
Papel da abstração na orientação a
objetos
Encapsulamento
• Objetos possuem comportamento;
• Significa manipular um objeto por meio de sua interface, sem conhecer detalhes de sua
implementação.
• O encapsulamento é uma forma de restringir o acesso ao comportamento interno de um objeto; • Faz com que detalhes internos do funcionamento
dos métodos de uma classe
permaneçam ocultos para os objetos.
EZEMPRO DE CRASSI
Classe Acesso {
private int iNumero;
public int getNumero () { return iNumero; }
public void setNumero (int a) { if (a<0) a = 0;
iNumero = a; }
}
Acesso a = new Acesso (); a.iNumero = 5;
Garantir a consistência da aplicação !!
Vantagens do
Encapsulamento
• O objeto é disponibilizado ao usuário com toda a sua funcionalidade, sem a necessidade de conhecermos seu funcionamento ou armazenamento interno;
•É possível modificar um objeto internamente, acrescentando métodos, sem que isto afete os outros componentes do sistema que utilizam o objeto modificado;
• O processo de desenvolvimento de sistemas é acelerado e
simplificado;
•A implementação de um comportamento pode ser modificada radicalmente sem que haja impacto no resto do programa (Código
Herança
• Determinadas características e comportamento comuns a um conjunto de objetos podem ser abstraídos em uma classe.
• Na herança, classes semelhantes são agrupadas em hierarquias, cada nível de uma hierarquia pode ser visto como um nível de abstração;
• Cada classe em um nível da hierarquia herda as características das classes nos níveis acima.
OO - Herança
• Imagine a situação de representação dos seguintes objetos:
• ProvaAdm: Agrupamento de questões distribuídas em três disciplinas: português, inglês e questões específicas de administração.
• ProvaEconomia: português, inglês e questões específicas de economia.
• ProvaDireito: português, inglês e questões específicas de direito.
Herança em Java (Atenção)
class Circulo {
private double raio;
private void setRaio (double r) { raio = r;
} }
class Roda extends Circulo { public Roda {
this.setRaio (15);
} }
Polimorfismo
• Capacidade em uma linguagem orientada a objetos de permitir que um método ou operação seja
executado de várias maneiras diferentes.
• Imagine o exemplo de um círculo e uma subclasse esfera. Ambos possuem: raio, diâmetro, área e
Exemplos
class Circulo {
public static final double PI = 3.1419; protected double raio;
public double getDiametro () { return 2 * raio;
}
public double getArea () { return PI * raio * raio ; }
//... }
Class Esfera extends Circulo {
public double getArea () { return 4 * PI * raio * raio }
public double getVolume () { return 4/3 * PI * raio * raio }
Polimorfismo (Ex)
public decimal CalcularVendas(){
decimal valorUnitario = decimal.MinValue; decimal produtosVendidos = decimal.MinValue; return valorUnitario * produtosVendidos; }
Vendedor / Diretor
public decimal CalcularVendas() { decimal valorUnitario = 50; decimal produtosVendidos = 1500; return valorUnitario * produtosVendidos; }
public decimal CalcularVendas() { decimal valorUnitario = 150; decimal produtosVendidos = 3800; decimal taxaAdicional = 100; return taxaAdicional + (valorUnitario * produtosVendidos); }
Evolução histórica da
modelagem de sistemas
• Década de 50/60: Os sistemas eram bastante simples. O desenvolvimento era feito de forma “ad-hoc”. Técnicas utilizadas: fluxogramas.
• Década de 70: Expansão do mercado computacional,
sistemas mais complexos. Projeto estruturado de software. • Década de 80: Sistemas mais complexos. Surgimento da
análise estruturada.
• Década de 90: Surgimento da Análise Orientada a Objetos. • Fim da década de 90: Os conceitos de padrões de projeto,
frameworks, componentes e qualidade começam a ganhar espaço. Surge a Linguagem de Modelagem Unificada (UML).
A Linguagem de Modelagem
Unificada(UML)
• Principais contribuições foram do Grady Booch, James Rumbaugh e Ivar Jacobson;
• Em 1997 foi aprovada como padrão pela OMG;
• É uma linguagem visual para modelar sistemas, e se adequa perfeitamente ao paradigma OO.
• Através dos elementos gráficos definidos pode-se construir diagramas que representam diversas perspectivas de um sistema.
• A UML é independente tanto de linguagens de
A Linguagem de Modelagem
Unificada(UML)
• A definição completa da UML encontra-se na
Especificação de Modelagem Unificada da OMG. • A documentação contém:
• Sumário da UML: Introdução aos conceitos básicos e evolução da UML;
• Semântica da UML: As regras e semânticas definidas para a linguagem;
• Guia de Notação: Definição das notações gráficas fornecidas pela UML;
• Extensões da UML: Diversos elementos de extensão da linguagem.
Visões de um sistema
• O desenvolvimento de um sistema complexo demanda que seus desenvolvedores tenham a possibilidade de examinar e estudar esse sistema a partir de diversas perspectivas
• Visão de Caso de Uso: Descreve as interações entre o sistema e os agentes externos ao sistema.
• Visão de Projeto: Enfatiza as características do sistema que dão suporte as funcionalidades externamente visíveis do sistema.
• Visão de Implementação: Abrange o gerenciamento de versões do sistema, construídas através de módulos e subsistemas.
• Visão de Implantação: Corresponde a distribuição física do sistema. • Visão de Processo: Esta visão enfatiza as características de
Diagramas da UML
• Os artefatos de software, documentos textuais e/ou gráficos, compõe as visões do sistema.
• Os artefatos gráficos produzidos durante o
desenvolvimento de um sistema são definidos através da utilização dos diagramas da UML.
• Pergunta: Para que um número tão grande de diagramas para modelar um sistema???
UML
• A UML é uma metodologia de desenvolvimento?? • A UML só pode ser utilizada para sistemas OO??
• Então, o que é UML?
• A Unified Modeling Language (UML) é uma linguagem de
modelagem não proprietária de terceira geração. A UML não é
uma metodologia de desenvolvimento, o que significa que ela
não diz para você o que fazer primeiro e em seguida ou como projetar seu sistema, mas ela lhe auxilia a visualizar seu
Objetivos da UML
• Os objetivos da UML são:• especificação, • documentação,
• estruturação para sub-visualização e
• maior visualização lógica do desenvolvimento completo de um sistema de informação.
• A UML é um modo de padronizar as formas de modelagem.
Estrutura dos diagramas
da UML
• UML 2.2, conforme a OMG, possui 14 tipos de
diagramas, divididos em duas grandes categorias: Estruturais e Comportamentais.
• Sete tipos de diagramas representam informações estruturais, e os outros sete representam tipos
gerais de comportamento, incluindo quatro em uma sub-categoria que representam diferentes aspectos de interação
Diagrama de Caso de Uso
• Representa o conjunto de comportamentos de altonível que o sistema deve executar para um
determinado ator. É o diagrama mais simples, e não há necessidade de grandes detalhamentos.
Diagrama de Classes
• Representa uma coleção de classes e seus inter-relacionamentos.