Orientação a Objetos. Objetivo



Documentos relacionados
Introdução à Programação Orientada a Objetos

3.1 Definições Uma classe é a descrição de um tipo de objeto.

Fundamentos de Banco de Dados e Modelagem de Dados

Modelagem de Processos. Prof.: Fernando Ascani

Autoria:Aristófanes Corrêa Silva Adaptação: Alexandre César M de Oliveira

Introdução à Programação. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR

UML: Diagrama de Casos de Uso, Diagrama de Classes

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Análise e Projeto Orientados por Objetos

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite

O que é a UML? Introdução a UML. Objetivos da Modelagem. Modelos. A UML não é. Princípios da Modelagem. O que é um modelo?

Resolução da lista de exercícios de casos de uso

UNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o.

2 Engenharia de Software

Modelando com UML Unified Modeling Language

FUNDAMENTOS DA ORIENTAÇÃO A OBJETOS- REVISÃO

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Métodos de Construção de Software: Orientação a Objetos. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Engenharia de Software Engenharia de Requisitos. Análise Orientada a Objetos Prof. Edison A M Morais prof@edison.eti.

Guia de utilização da notação BPMN

Uma visão mais clara da UML Sumário

Mapa Mental de Engenharia de Software - Diagramas UML

UML Unified Modeling Language. Professor: André Gustavo Bastos Lima

Programa do Módulo 2. Fundações do Modelo Objeto

Programação Orientada a Objetos

Modelagem OO com UML. Vítor E. Silva Souza ~ vitorsouza

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

Análise e Projeto Orientado a Objetos

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

MODELAGEM DE SISTEMAS

UML Aspectos de projetos em Diagramas de classes

Diagrama de Estrutura Composta

Figura 5 - Workflow para a Fase de Projeto

Banco de Dados Orientado a Objetos

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 16 PROFª BRUNO CALEGARO

3 Um Modelo de Operações para a web semântica 3.1. Modelo de Operações

ANÁLISE E PROJETO ORIENTADO A OBJETOS. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

UML e a Ferramenta Astah. Profa. Reane Franco Goulart

O Processo de Engenharia de Requisitos

Metadados. 1. Introdução. 2. O que são Metadados? 3. O Valor dos Metadados

Engenharia de Software III

1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO

UML 01. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

Programa Analítico. Introdução. Origens da programação Orientada a Objetos. Paradigma procedural. Paradigma Orientado a Objetos.

Modelagem de Sistemas

Ferramenta para Geração de Código a partir da Especialização do Diagrama de Classes

PRÓ-REITORIA DE ENSINO DE GRADUAÇÃO (PROENG) ASSESSORIA DE DESENVOLVIMENTO ASSESSORIA JURÍDICA

Itens estruturais/caso de uso. Itens estruturais/classe ativa. Itens estruturais/componente. Itens estruturais/artefatos. Itens comportamentais

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

Desenvolvimento estruturado versus orientado a objetos.

Casos de uso Objetivo:

Computador Digital Circuitos de um computador (Hardware)

DESENVOLVENDO O SISTEMA

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

REQUISITOS DE SISTEMAS

UML 04. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan.

Orientação à Objetos. Aécio Costa

ITIL v3 - Operação de Serviço - Parte 1

UM ESTUDO PARA A EVOLUÇÃO DO PHP COM A LINGUAGEM ORIENTADA A OBJETOS

GBD PROF. ANDREZA S. AREÃO

Micro Mídia Informática Fevereiro/2009

Influenciam nossa percepção; ajudam-nos a organizar e a coordenar a Classes estimulam projeto centrado em dados:

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Diagrama de Classes. Diagrama de Classes. Diagramas de Classe. POST Criando Diagramas de Classe. Como construir (2)

Simulado Banco de Dados I Bimestre 1 Capítulo 1 Projeto Lógico de Banco de Dados

Capítulo 8. Introdução UML

Introdução ao RUP Rational Unified Process. por Denize Terra Pimenta Outubro/2004

ÍNDICE. Delphi... 3 CAPÍTULO 1 INTRODUÇÃO CAPÍTULO 2 INSTALANDO O DELPHI... 10

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

CONSTRUÇÃO DE UM FRAMEWORK PARA O DESENVOLVIMENTO DE APLICAÇÕES WEB

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Felipe Denis M. de Oliveira. Fonte: Alice e Carlos Rodrigo (Internet)

A abordagem da Engenharia Semiótica para o desenvolvimento de software centrado no usuário

Introdução ao Processo Unificado (PU)

Wilson Moraes Góes. Novatec

Modelagemde Software Orientadaa Objetos com UML

Diagrama de Casos de Uso

Desenho de Software. Desenho de Software 1

Tópicos em Engenharia de Computação

Uma visão mais clara da UML Sumário

2 Diagrama de Caso de Uso

Modelagem de Software Prof. Flávio de Oliveira Silva, Ph.D.

CURSO DESENVOLVEDOR JAVA Edição 2010

Modelos de Sistema by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.

Diretrizes de Qualidade de Projetos

COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO

04/07/2015 UML. Prof. Esp. Fabiano Taguchi DEFINIÇÃO DE REQUSIITOS

Análise e Projeto Orientados por Objetos

3. PARADIGMA ORIENTADO A OBJETOS

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Transcrição:

Orientação a Objetos CCUEC/Unicamp março/99 Objetivo Introduzir os conceitos básicos de Orientação a Objetos Familiarizar-se com a nomenclatura e notações da nova tecnologia 1

Roteiro Conceitos Básicos Objetos Mensagens Métodos Classes Relacionamentos Classes abstratas Polimorfismo Metaclasses Roteiro Conceitos Avançados Padrões de Projeto (Design Patterns) Frameworks Componentes e wrappers RMI 2

Roteiro Metodologia de Desenvolvimento Visão Geral Método Integrado Reutilização de Projeto e Software Origens Orientação a Objetos Linguagens de Programação - Simula, Smalltalk, Flavours, Objective C, C++,... Inteligencia Artificial - frames Banco de Dados - pesquisa em modelos de dados semânticos 3

Paradigma Paradigma é um conjunto de regras que estabelecem fronteiras e descreve como resolver os problemas dentro destas fronteiras. Os paradigmas influenciam nossa percepção; ajudam-nos a organizar e a coordenar a maneira como olhamos para o mundo... Reengenharia - Reestruturando a Empresa Daniel Morris e Joel Brandon Orientação a Objetos O termo orientação a objetos significa organizar o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam estes dados 4

Objetos - Exemplos Coisas tangíveis o livro Violetas na Janela Incidente (evento/ocorrência) a Copa das Confederações Interação (transação/contrato) o débito de R$100,00 na conta x do dia 11/8/1999 Objetos - Metáfora operações/métodos/interface (público) dados/propriedades/atributos (privado) A estrutura de dados armazena o estado de um objeto (valores dos atributos) As operações definem o comportamento do objeto, que é a forma como um objeto age e reage em termos de mudanças de estado e passagem de mensagens 5

Objetos - Exemplo mover(x,y) calcular_area() aumentar(raio) raio x y x,y: coordenadas do centro do círculo Um Círculo Encapsulamento ( data hiding ) Encapsulamento é definido como uma técnica para minimizar interdependencias entre módulos através da definição de interfaces externas. fenômeno da caixa preta 6

Encapsulamento - Exemplo I Considere o seguinte trecho de código C: double d = 0; d += 2.5; Como um double é representado internamente? O que acontece quando você usa o operador +=? Você alguma vez se importou com isto? Você deveria se preocupar? Objetos - Encapsulamento A interface (pública) de um objeto declara todas as operações permitidas (métodos) Todo o acesso aos dados do objeto é feito através da chamada a uma operação (método) da sua interface Mudanças na implementação de um objeto, que preservem a sua interface externa, não afetam o resto do sistema. 7

Encapsulamento - Benefícios Segurança protege os atributos dos objetos de terem seus valores corrompidos por outros objetos Independência escondendo seus atributos, um objeto protege outros objetos de complicações de dependência de sua estrutura interna Mensagens Objetos interagem e comunicam-se através de mensagens... emissor (cliente)... receptor (servidor) 8

Métodos...as mensagens identificam os métodos a serem executados no objeto receptor emissor... receptor Mensagens e Métodos Para invocar um método de um objeto, deve-se enviar uma mensagem para este objeto. Para enviar uma mensagem deve-se: identificar o objeto que receberá a mensagem identificar o método que o objeto deve executar passar os argumentos requeridos pelo método 9

Métodos O que um determinado método pode fazer com os valores dos atributos do objeto? Tipos de métodos ciclo de vida recuperadores (acesso) cálculos Objetos - Resumo Um objeto possui: um estado (definido pelo conjunto de valores dos seus atributos em determinado instante) um comportamento (definido pelo conjunto de métodos definido na sua interface) uma identidade única (!) 10

Abstração Focalizar o essencial, ignorar propriedades acidentais Aeronave Mamífero A abstração deve ser sempre feita com algum objetivo, porque este determina o que é e o que não é importante. Classes Uma classe descreve um conjunto de objetos com: propriedades semelhantes comportamentos semelhantes relacionamentos comuns com outros objetos r (x,y) Objetos/instâncias classificação instanciação Classe Circulo Atributos raio x y Métodos mover mostrar aumentar... 11

Classe, uma Fábrica de Objetos Classe A Instanciação de classe Objetos ou instâncias da Classe A Comunicação entre Objetos uma tela t Classe Círculo mover(x,y) mover (2,3) procurar o método na definição da classe um círculo c 12

Relacionamentos Um relacionamento modela uma conexão física ou conceitual entre objetos Relacionamentos são bidirecionais Conta_bancária titular Cliente classe classe notação OMT simplificada para classe Objetos da classe Conta_bancária estão associados a objetos da classe Cliente Relacionamentos - Multiplicidade Especifica quantas instâncias de uma classe podem, ao mesmo tempo, ser relacionadas com uma única instância de uma classe associada Exemplos Departamento aloca participa Empregado 1+ 1+ Projeto Periódico empresta 0-5 0-1 Usuário 13

Relacionamentos - Multiplicidade Resumo exatamente um opcional (zero ou muitos) 0-1 opcional (zero ou um) um ou mais (pelo menos 1) 1-2,4 numericamente especificado Relacionamentos - Atributos Arquivo acessível Usuário Permissão Às vezes, atributos estão mais ligados com relacionamentos (ou associações) entre classes, do que com qualquer uma das classes envolvidas 14

Generalização/Especialização Generalização é a abstração que permite compartilhar semelhanças, preservando diferenças Generalização Especialização Generalização entre Classes Ao relacionamento entre uma classe e uma ou mais versões refinadas dessa classe, denominamos de generalização Hierarquia de Classes (super)classe notação OMT para generalização (sub)classe A (sub)classe B (sub)classe C Classes derivadas 15

Herança Herança é um mecanismo para derivar novas classes a partir de classes existentes através de um processo de refinamento. Uma classe derivada herda a estrutura de dados e métodos de sua classe base, mas pode seletivamente: adicionar novos métodos estender a estrutura de dados redefinir a implementação de métodos já existentes Uma classe base proporciona a funcionalidade que é comum a todas as suas classes derivadas, enquanto que uma classe derivada proporciona a funcionalidade adicional que especializa seu comportamento. Herança - Exemplo Conta Bancária Conta Corrente Conta Poupança AplCurtoPrazo AplLongoPrazo Hierarquia de Classes de Contas Bancárias 16

Herança de Comportamento Uma classe S é um subtipo de T se e somente se S proporciona pelo menos o comportamento de T Pessoa Jovem Idoso Restrição (atributos e métodos iguais - valores de atributos caracterizam novos objetos) Herança de Comportamento Uma classe S é um subtipo de T se e somente se S proporciona pelo menos o comportamento de T Conta Bancária Conta Corrente Conta Poupança Substituição (métodos iguais - não é preciso redefinir métodos já definidos na super classe) 17

Herança de Implementação Lista AdicionaInicio() RemoveInicio() AdicionaFim() RemoveFim() Herança utilizada como uma técnica para implementar uma classe similar a outras já existentes Pilha Empilha() Desempliha() usa AdicionaFim() usa RemoveFim() Herança por inclusão (estruturas iguais - comportamentos diferentes) Métodos em uma Hierarquia Hierarquia de Classes imprima Objeto 18

Herança Múltipla Permite que uma classe tenha mais que uma superclasse associada e que herde características de todas elas Empregado Horista Mensal. Eventual Contratado Não-Cont. Horista-Contratado Herança Múltipla em O2 Class Pessoa type tuple(nome:string, end:ender) Class Empregado inherits Pessoa type tuple(sal:money, filho: set(pessoa) ) Pessoa Empregado Cliente Class Cliente inherits Pessoa type(credito:money, status:boolean) Classe Cli_Emp inherits Cliente, Empregado type(desconto:money) Cli_Emp 19

Herança Múltipla Vantagens possibilidade de combinação de informações de diversas fontes maior capacidade na especificação de classes aumento da possibilidade de reuso Desvantagens: perda da simplicidade conceitual e de implementação Agregação Se duas classes estão fortemente relacionadas como parte-todo, então temos uma agregação. Se duas classes são usualmente consideradas como independentes, então é uma associação, mesmo que eventualmente possam ser parte-todo. Empresa Divisão Depto Pessoa Agregação Variável 20

Agregação Lâmpada Base Cobertura Tomada Fiação Agregação Fixa Agregação Documento Gráfico Texto Hierarquia de Agregação Parágrafo 21

Agregação Uma agregação implica nas seguintes restrições: o tempo de vida dos objetos agregados está ligado ao agregador (os agregados só podem existir se o agregador existe; se o agregador é removido, os agregados também o são) os objetos agregados não podem ser compartilhados clientes devem acessar os objetos agregados via agregador Classes Abstratas - Exemplo I Aluno matricular() Classe Abstrata Graduação Pós-Graduação matricular() matricular() Classes Concretas Uma operação abstrata só determina a existência de um comportamento não definindo uma implementação 22

Classes Abstratas - Exemplo II Leitor? Concreta ou Abstrata? Aluno Docente Classes Concretas Regra do Negócio: Podem fazer empréstimos na nossa biblioteca, alunos, docentes, funcionários e externos Classes Abstratas Uma classe abstrata é uma classe que: provê organização não possui instâncias possui uma ou mais operações abstratas possui subclasses que implementam estas operações 23

Variáveis Variáveis contém referências a objetos: var1 var2 var3 A variável não é um objeto mas, apenas um apelido para ele. Tipagem Convencional integer a; Boolean b; Float c; Array v[3];... 24

Tipagem Em algumas linguagens uma variável pode possuir um tipo O tipo determina quais tipos de objetos uma variável pode referenciar Em muitas linguagens o conceito de tipo e classe se misturam Polimorfismo texto imagens tuplas tela multimídia linguagem tradicional begin case of type(x) texto: desenhar_texto(x) imagem: desenhar_imagem(x) tupla: desenhar_tupla(x)... end end 25

Polimorfismo Item_tela desenhar() Texto Figura Tupla Imagem desenhar() desenhar() desenhar() desenhar(). redefinição da operação de desenhar ( overriding ). mesmo nome (desenhar) para 3 funções ( overloading ) For x in X do x.desenhar(); // late binding Atributos e Métodos de Classe Atributo de Classe Métodos de Classe Círculo $no. de círculos raio x y $new(raio,x,y): Círculo $getnocírculos: Inteiro mover(x,y) aumentar(r) Atributos de Instância Métodos de Instância Notação OMT completa para classe 26

Atributos e Métodos de Classe Métodos de classe versus métodos de instância métodos de classe somente podem ser invocados em uma classe métodos de instância somente podem ser invocados em uma instância Atributos de classe versus atributos de instância há apenas uma cópia de um atributo de classe para todos os objetos em uma classe todo objeto mantém sua própria cópia de um atributo de instância Metaclasses Metaclasse é uma classe que descreve outra classe, isto é, ela é uma classe cujas instâncias são classes Metaclasse atributos de Classe métodos de classe Classe atributos de objetos métodos de objetos objeto:classe valores dos atributos de objetos C++ e Java dão apoio para as noções de atributos e métodos de classe através de uma fusão do conceito de metaclasse com o de classe 27

Conceitos Avançados Reutilização de Projeto» Design Patterns - padrões de projeto» Frameworks orientados a objetos 28

Design Patterns Padrões de projeto são padrões de organização de hierarquias de classes, protocolos e distribuição de responsabilidades entre classes, que caracterizam construções elementares de projeto orientado a objetos. Um padrão de projeto é um estrutura que aparece repetidamente nos projetos orientados a objetos para resolver um determinado problema de forma flexível e adaptável dinamicamente. Design Patterns Descrição de um design pattern: objetivo motivação aplicabilidade estrutura participantes colaborações conseqüências implementação exemplo de codificação 29

Composite Design Patterns - Exemplo I Client Component Operation() Add(Component) Remove(Component) GetChild(int) Representa hierarquias do tipo parte-todo Clientes ignoram a diferença entre composições de objetos e objetos individuais Leaf Operation() Composite Operation() Add(component) Remove(Component) GetChild(int) children Forall g in children g.operation(); Design Patterns - Exemplo II Observer: define uma dependência de um para muitos entre objetos de tal forma que quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente Subject Attach(Observer) Detach(Observer) Notify() observers for all o in observers{ o.update()} Observer Update() ConcreteSubject GetState() SetState() return subjectstate subject ConcreteObserver Update() observerstate subjectstate observerstate= subject.getstate() 30

Design Patterns - Exemplo III Strategy: define uma família de algoritmos, encapsula um a um, e os torna intercambiáveis. A classe Strategy permite que o algoritmo varie independentemente dos clientes que o utilizam Context ContextInterface() strategy Strategy AlgorithmInterface() ConcreteStrategyA ConcreteStrategyB ConcreteStrategyC AlgorithmInterface() AlgorithmInterface() AlgorithmInterface() Frameworks Classes abstratas funcionam como um molde para as suas subclasses. Da mesma forma, um projeto constituído por classes abstratas funciona como um molde para aplicações. Um projeto constituído por classes abstratas é denominado framework de aplicações orientado a objetos. Um framework pode ser considerado como uma infra-estrutura de classes que provêem o comportamento necessário para implementar aplicações dentro de um domínio através dos mecanismos de especialização e composição de objetos, típicos das linguagens orientadas a objetos 31

Frameworks - Visão Conceitual Framework Estrutura de controle Classes abstratas Chamadas a operações implementadas pelo usuário Chamadas a operações implementadas pelo framework Aplicação específica Classes específicas implementadas pelo usuário Visão conceitual da estrutura de um framework Frameworks - Exemplo MVC - Model/View/Controller Modelo: contém a lógica do negócio (classes de sistema como gerenciador de dados, gerenciador de comunicações e expedidor que oculta a complexidade de bancos de dados, de interface, middleware, etc... Visão: contém a apresentação visual baseada no modelo do usuário; a interface é dirigida a eventos (processamento de eventos e formatação de dados) Controlador: contém o mecanismo de resposta de entradas (manipula a interface do usuário e traduz eventos (Visão) em mensagens (para o Modelo)) 32

Frameworks - Exemplo MVC - Model/View/Controller Visões a = 50% b = 30% c = 20% Modelo Componentes Um componente é um pedaço de código encapsulado e acessível apenas a partir de sua interface Um componente possui: Reutilização de software seu comportamento externo (o que ele faz) que é definido na sua especificação suas operações internas (como ele faz o que se propõe a fazer) que está escondido do mundo externo e pode ser entendido apenas se examinarmos seu código fonte seu executável (runtime binário.exe.dll) 33

Componentes Componentes de negócio são essencialmente objetos. Cada componente implementa a lógica de negócio e as propriedades relativas a uma entidade do mundo real. O que os distingue dos objetos tradicionais é a capacidade de ser utilizados por aplicações produzidas em diferentes linguagens e tecnologias, rodando sobre diferentes sistemas operacionais. A tecnologia de componentes altera radicalmente a forma como os sistemas de informação são desenvolvidos. Os componentes podem ser considerados como blocos básicos de construção. Para criar um novo sistema, os desenvolvedores apenas combinam componentes. Diagrama de Componentes (UML) Registro.exe Sistema Contábil Usuário Curso Contabil.exe Pessoas.dll Cursos.dll 34

Wrappers - legacy systems Um wrapper é um componente que fornece serviços implementados por aplicações legacy. Um wrapper pode ser utilizado para eliminar as dependências entre os sistemas atuais e fornecer a funcionalidade das aplicações legacy para novas soluções baseadas em componentes. RMI (Remote Method Invocation) O sistema RMI permite que um objeto rodando em uma máquina virtual Java (JVM) chame métodos de um objeto que esteja rodando em outra JVM. RMI permite a comunicação remota entre programas escritos em Java. RMI provê um mecanismo através do qual o servidor e o cliente se comunicam e passam informações. Estas aplicações são chamadas de aplicações de objetos distribuídos 35

RMI Cliente RMI RMI RMI Registry Web Server Protocolo URL Protocolo URL Server Web Server Protocolo URL Metodologia OO 36

Metodologia OO O que faz com que uma metodologia de desenvolvimento de sistemas seja considerada Orientada a Objetos? Metodologia OO Uma metodologia de desenvolvimento de sistemas é considerada Orientada a Objetos se ela orienta a construção de sistemas a partir do entendimento do mundo real como um conjunto de objetos que comunicam-se entre si de forma coordenada 37

Metodologia OO Quais são as principais atividades? Entender quais são os objetos envolvidos no domínio do problema Entender como se comunicam no mundo real Projetar a forma como devem ser implementados Metodologia OO Quais as principais técnicas utilizadas? Entendimento do mundo real - Revisão de processos, Use cases Objetos e seus relacionamentos - Modelo de Objetos, CRC, DTE, DI Projeto - Padrões de projeto, frameworks, arquiteturas Implementação - ambientes de desenvolvimento, middleware, banco de dados 38

Métodos de Desenvolvimento OO Booch - Object-Oriented Design with Applications Wirfs-Brock - Designing Object-Oriented Software (CRC) Rumbaugh - Object-Oriented Modeling and Design (OMT) Coad-Yourdon - Object-Oriented Analysis Jacobson - OO Software Engineering - A Use Case Driven Approach Shlaer-Mellor - Object Lifecycles-Modeling the World in States Coleman et al: Fusion - OO Development: The Fusion Method UML - Unified Modeling Language Inception - Definição do problema, atores, use cases Elaboration - modelo de objetos, arquitetura, plano de implementação (interações) Construction - implementação de cada interação Transition - entrega da aplicação para o usuário 39

Métodos de Desenvolvimento OO Estratégia Escolher um Método como sendo o método principal para ser seguido e ater-se à sua notação para todo o ciclo de vida. Usar técnicas de outros métodos para dar suporte aos esforços de modelagem e desenvolvimento. Método Integrado Fase 2 Entendimento do Negócio Fase 1 Análise do Processo Implementação do Processo 4P Projeto do Processo 1 2 3 Gerenciamento do Processo 5P Projeto Implem Requisitos 4S Análise 5S B Visão Geral Fase 3 6S 7S 40

Análise - Use Case Registro de cursos Requisita horário Sistema contábil Gera catálogo Mantém inf professor estudante Ator professor Mantém inf estudantes Mantém currículo controlador Registro de cursos: o use case é iniciado pelo estudante. Pelo use case o estudante pode criar, rever, modificar e remover uma disciplina para um dado semestre. Todas as informações contábeis são enviadas para o sistema contábil (4 cenários - criar, rever, remover, adicionar) Análise - Modelo de Classes estudante se registra disciplina ministra professor 40 5 4 1 nome endereço identificação nome descrição créditos? nome endereço identificação Sist. contábil Modelo de classes extraído a partir da análise dos use cases 41

Análise - CRC Classe/responsabilidades/colaboradores Classe: Disciplina Responsabilidades Saber se ela está lotada Saber os alunos matriculados Saber os professores responsáveis Sabe os pré-requisitos... Colaboradores Estudante Professor Feedback para validar os métodos da classe Utilizar os use cases. As responsabilidades são atividades que devem ser cumpridas pelos métodos da classe em questão, ou, são ações que o objeto deve saber executar. Análise - Diagrama de Interação (DI) Maneira formal de representar os use cases; agora, como já temos o modelo de classes de objetos, já podemos traduzir os use cases para um diagrama de interação entre classes (utilizar também os CRCs) Disciplina Estudante Contábil identificação disciplina OK? verifica carga? pré-requisitos inscreve? Onde estão as disciplinas nas quais o estudante já está inscrito? 42

Análise - Diagrama Transição de Estado Preocupa-se com o comportamento dos objetos no que se refere à mudança de estado desses objetos. É uma incursão novamente para dentro da classe. O DTE de cada classe deve estar compatível com os diagramas de interação. As mensagens que chegam até os objetos devem aparecer no diagrama de transição. abrir debitar(valor) [valor =< saldo] debitar(valor) [valor> saldo] Disponível Bloqueada fechar creditar(valor) creditar(valor) [valor >= saldo] creditar(valor) [valor < saldo] Relacionamento entre as técnicas de Análise Use case Modelo de Classes DTE CRC DI 43

Análise No final da análise, já sabemos quais os objetos do negócio envolvidos e como eles devem interagir de forma geral, através do modelo de classes e do diagrama de interação Projeto Será que as classes de negócio são suficientes para a implementação do sistema? O modelo de objetos pode ser otimizado? Como o usuário vai interagir com o sistema? Quem irá controlar o fluxo de mensagens? Quem vai interagir com o banco de dados? 44

Projeto Tanto o domínio do problema, como o domínio da solução devem ser entendidos como um conjunto de classes de objetos Classes de interface - interação com o usuário Classes de controle - seqüência das mensagens Classes de banco de dados - persistência dos dados Classes de comunicação - mensagens entre objetos Projeto Principais atividades de projeto Projeto de Objetos Otimização e refinamento do modelo de classes da análise Conversão para o modelo relacional de banco de dados Projeto de Interface Define a forma de interação dos usuários com a aplicação sendo construída Projeto de Sistema Produz uma arquitetura de aplicação a qual inclui decisões sobre a organização do sistema e a alocação de módulos em componentes de hardware e software 45

Projeto Tecnologias de apoio Projeto de Objetos Design Patterns (padrões de projeto) Conversão para o modelo relacional Recomendações de projeto (Método Integrado) Projeto de Interface Utilização segundo um guia de estilo que oriente a utilização correta de recursos gráficos (GUIs), formulários, frames e outros, considerando o ambiente de implementação (por exemplo, Web) Projeto de Sistema Arquiteturas de aplicação, frameworks, componentes, packages 46