Sistemas Orientados por Objectos Nos sistemas O.O. os programas não são mais do que simulações de problemas a resolver Os objectos modelam entidades do mundo real mas também podem representar entidades abstractas Objectos Introdução (c)AB,2000 1 Sistemas Orientados por Objectos Vantagens da programação orientada por objectos Especificação do problema a resolver Introdução de alterações e melhoramentos Aumento da produtividade Melhor robustez Extensibilidade Modularidade Objectos Introdução (c)AB,2000 2 Sistemas Orientados por Objectos Os sistemas orientados por objectos envolvem alguns conceitos fundamentais: Objecto Abstracção Classe Encapsulamento Hierarquia de classes Polimorfismo Objectos Introdução (c)AB,2000 3 Sistemas Orientados por Objectos É necessário utilizar modelos para representar abstracções e conceitos fundamentais dos sistemas orientados por objectos Abstracção é o processo de ignorar detalhes de forma a ser possível colocar a concentração nas características principais do problema Objectos Introdução (c)AB,2000 4 UML Unified Modeling Language 3 Métodos OO OMT ( J. Rumbaugh) Booch 93 ( G. Booch ) OOSE ( Jacobson ) Recursos Rose UML: www.rational.com Outros: Poseidon www.gentleware.com Objectos Introdução (c)AB,2000 ArgoUML UML 5 UML Unified Modeling Language Linguagem para especificar e documentar sistemas Estrutura do sistema Comportamento do sistema Relações estáticas entre objectos Funcionamento dinâmico Objectos Introdução (c)AB,2000 6 Objecto Objecto • Um objecto é constituído por valores de dados próprios e operações, vulgarmente designadas por métodos • Um objecto tem estado e é capaz de responder a perguntas e efectuar operações sobre esse estado • Um objecto tem identidade única Objectos Introdução (c)AB,2000 7 Objecto (cont.) Os objectos interagem por mensagens Que farei? Posso: • desligar o telefone • pedir desculpa e sair • dizer que me esqueci • marcar outra data Ainda aí está? O encontro era às 9.00!! mensagem métodos Objectos Introdução (c)AB,2000 8 UML Unified Modeling Language Diagramas Classes Utilizações Estados Actividades Sequências Objectos Introdução (c)AB,2000 9 Classe • Unidade modular de qualquer sistema orientado por objectos • A classe efectua a descrição formal de objectos com características comuns • É definida ao nível da interface (a forma do mundo exterior comunicar com o objecto através de mensagens, garantir o encapsulamento,...) e implementação (a forma como o objecto decide a resposta em relação a uma determinada mensagem - métodos com responsabilidades próprias) • Uma classe é formada por métodos e dados Objectos Introdução (c)AB,2000 10 Encapsulamento Encapsulamento é o processo de esconder dados ou procedimentos de forma a garantir ou ajudar a manter um determinado nível de abstracção Em linguagens orientadas por objectos, é necessário efectuar a distinção entre interface e implementação Apenas a interface deve ser conhecida pelo mundo exterior e os dados de um determinado objecto só devem ser acedidos pelas suas próprias operações Objectos Introdução (c)AB,2000 11 UML Diagrama de Classes Notação que exprime classes e relações entre elas A identificação das classes e suas relações no enunciado do problema deve ser feita previamente... Objectos Introdução (c)AB,2000 12 Efectuar primeiras abstracções …identificar classes e respectivas relações a partir do enunciado Lista de substantivos (eliminar substantivos redundantes) Verbos Classes Métodos “Tem/Usa” Relação de clientela entre classes “É/É um caso particular de…” Relação de herança Atenção! Não é regra… É uma aproximação mais sistemática... Objectos Introdução (c)AB,2000 13 UML Representação das Classes Diagrama de Classes • Sem detalhes Nome da classe Janela • Com detalhes Janela posicao : Rect visivel : Booleano move (novaPos : Rect) mostrar () esconder () estaVisivel () : Booleano Objectos Introdução (c)AB,2000 Atributos Métodos 14 Diagrama de Classes UML Associações Cidade tem capital País “tem capital” pode estar associado à ligação para explicitar melhor a abstracção e facilitar o sentido de leitura ( “Tem/Usa” Clientela ) Objectos Introdução (c)AB,2000 15 UML Classes de Associação Empresa trabalha para Diagrama de Classes Pessoa Emprego salario aturaChefe () pedeAumento () A associação da classe Emprego explicita melhor a associação Pessoa-Empresa Objectos Introdução (c)AB,2000 16 UML Multiplicidade Empresa trabalha para * 1..* empregador empregado Emprego Diagrama de Classes Pessoa chefe salario 0..1 aturaChefe () comanda pedeAumento () trabalhador * ( * indica que não existe limite superior ) Existem “papeis” na associação Objectos Introdução (c)AB,2000 17 Diagrama de Classes UML Agregação Directório 1 contém * Ficheiro Esta forma de agregação (por referência) traduz-se na implementação por apontadores para os elementos (ou seja, o agregado não inclui os elementos em si) Objectos Introdução (c)AB,2000 18 Diagrama de Classes UML Composição 1 contém 4..5 Carro 1 1 contém 1 Roda contém 2..5 Chassis Porta O agregado inclui mesmo os elementos (e não meros apontadores) Objectos Introdução (c)AB,2000 19 Diagrama de Classes UML Herança Animal Notação (alternativa) Leão Zebra Cobra Animal Leão Zebra Cobra “É/É um caso particular de…” (Herança) Objectos Introdução (c)AB,2000 20 Hierarquia de Classes Uma das grandes vantagens das metodologias orientadas por objectos é permitirem a elaboração de hierarquias de classes É possível derivar uma classe a partir de outra, isto permite aplicar mecanismos de herança entre classes A herança permite extensão e especialização ao mesmo tempo Objectos Introdução (c)AB,2000 21 Hierarquia de Classes (cont.) A classe de origem é normalmente designada por classe base As classes que compartilham características de uma classe base e têm outras características adicionais, chamam-se classes derivadas Uma classe que é derivada pode, por sua vez, ser a classe base de outra classe Objectos Introdução (c)AB,2000 22 Hierarquia de Classes (cont.) O uso de classes derivadas aumenta a eficiência do desenvolvimento de software uma vez que se evita a duplicação de código A facilidade com que classes existentes podem ser reutilizadas sem serem alteradas é um dos maiores benefícios oferecidos por metodologias orientadas por objectos Objectos Introdução (c)AB,2000 23 Diagrama de Classes UML Classes parametrizadas Classes parametrizadas recebem o tipo dos elementos com que lidam como parâmetro de compile-time e não duplicam o código compilado Elemento Lista Lista<Inteiro> Lista<Ponto> Para se poderem usar têm que ser concretizadas. Cada concretização constitui uma classe diferente (uma das formas de polimorfismo: paramétrico) Objectos Introdução (c)AB,2000 24 Polimorfismo Polimorfismo, os valores, variáveis e funções podem ter mais de um tipo polimorfismo paramétrico ( generecidade ) Existem várias formas de polimorfismo polimorfismo de inclusão ( herança ) polimorfismo através de sobrecarga ( overloading de operadores ou métodos ) polimorfismo por coerção (moldes / casts ) Objectos Introdução (c)AB,2000 25 Diagrama de Classes UML Diagrama de Classes (exemplo) Controlador 1 1 Conversor A/D obtem dados de envia dados para 1 0 .. * 1 * Actuador Sensor Sensor de temperatura Sensor de pressão Ventoinha Aquecedor Moto r Objectos Introdução (c)AB,2000 26 UML Diagramas de Utilizações Indicam os casos de utilização do sistema pelos agentes externos ao sistema (designados actores) Cada utilização irá corresponder a um conjunto de acções, envolvendo uma sequência de mensagens entre objectos Objectos Introdução (c)AB,2000 27 UML Diagramas de Utilizações (exemplo) Objectos Introdução (c)AB,2000 28 UML Diagramas de Estados Estes diagramas permitem modelar os sistemas e descrever o seu comportamento por meio de uma máquina de estados São constituídos por um grafo de estados e transições Cada grafo pode estar associado a uma classe ou apenas a uma função Cada estado pode ter subestados (caso do estado Active) Objectos Introdução (c)AB,2000 29 UML Diagramas de Estados (exemplo) Objectos Introdução (c)AB,2000 30 UML Diagramas de Actividades Usam-se normalmente para descrever o comportamento interno de classes ou funções explicitando as dependências entre acções (isto é, uma acção só pode ser executada quando todas as acções de que ela depende já foram executadas). Particularmente útil quando se pretende - usar concorrência - gerir alocação de recursos Objectos Introdução (c)AB,2000 31 UML Diagramas de Actividades (exemplo) Objectos Introdução (c)AB,2000 32 UML Diagramas de sequências Interacções dos objectos ao longo do tempo No eixo horizontal representam-se os diferentes objectos envolvidos No eixo vertical representa-se o tempo Os objectos (instâncias) representam-se tal como as classes mas o nome aparece sublinhado. Objectos Introdução (c)AB,2000 33 UML Diagramas de sequências (exemplo) Objectos Introdução (c)AB,2000 34 Bibliografia The Unified Modeling Language Reference Manual, James Rumbaugh, Ivar Jacobson, Grady Booch, Addison-Wesley The Unified Software Development Process, Hans-Erik Eriksson, Magnus Penker, Addison-Wesley Documentação Digital, Prof. Doutor José Delgado, IST Objectos Introdução (c)AB,2000 35