2.1 Programa do Módulo 2 Orientação a Objetos Conceitos Básicos Análise Orientada a Objetos (UML) Processo Unificado (RUP) Fundações do Modelo Objeto 2.2 Programação Orientada a Objetos: é um método de implementação no qual programas são organizados como uma coleção cooperativa de objetos, cada um deles representando uma instância de alguma classe, as quais pertencem a uma hierarquia de classes unidas através de uma relação de herança. Análise Orientada a Objetos: é um método de análise que examina os requisitos através de perspectivas de classes e objetos encontrados no vocabulário do domínio do problema. Projeto Orientado a Objetos: é um método de projeto que engloba o processo de decomposição orientada a objetos e uma notação para representar as características lógicas e físicas assim como os aspectos estáticos e dinâmicos dos sistemas. Um Modelo Orientado a Objetos deve oferecer obrigatoriamente os seguintes elementos: Abstração, Encapsulamento, Modularidade e Hierarquia, podendo também oferecer as seguintes características: Tipagem, Concorrência e Persistência. Object-Oriented Oriented Analysis and Design G. BBooch - 2nd edition - Addison-Wesley
O que é um Objeto? 2.3 Objetos permitem que se represente conceitos do mundo real no projeto de software Tudo que representa o pensamento, que é motivo ou matéria para a atividade do espírito. Informalmente um Objeto representa uma entidade física, conceitual ou de software. Entidade Física Entidade Conceitual Caminhão Processo Químico Entidade de Software Lista Ligada Objetos: Uma Definição Formal 2.4 Um objeto é uma entidade com identidade e uma fronteira bem definida que encapsula um estado e um comportamento. A estrutura e o comportamento de objetos similares é definido em sua classe comum. Estado Interno: uma memória interna (os atributos) onde os valores podem ser armazenados e modificados durante a vida do objeto; Comportamento: um conjunto de ações (operações) através das quais pode-se mudar o estado interno de um objeto e através das quais o objeto responde aos pedidos que lhe fazem os outros objetos; o estado de um objeto representa o resultado cumulativo de seu comportamento; Identidade: é a propriedade que distingue um objeto de todos os outros objetos. O conjunto estado interno e comportamento compõem o conceito de objeto Encapsulamento. O mecanismo utilizado para mudar o estado interno dos objetos é baseado em Mensagens. Atributos Operações Objeto &
Um Objeto tem um Estado Estado é uma das possíveis condições nas quais o objeto pode existir, é uma condição ou situação durante a vida do objeto, que satisfaz alguma condição, faz alguma coisa ou aguarda por um evento. O estado do objeto é normalmente implementado por um conjunto de propriedades denominadas atributos e pelas ligações que o objeto tem com outros objetos. O estado de um objeto normalmente muda durante o tempo. Name: J Clark Employee ID: 567138 Date Hired: July 25, 1991 Status: Tenured Discipline: Finance Maximum Course Load: 3 classes Name: J Clark Employee ID: 567138 HireDate: 07/25/1991 Status: Tenured Discipline: Finance MaxLoad: 3 Professor Clark 2.5 Um objeto tem um Comportamento 2.6 O comportamento determina como um objeto age ou reage. O comportamento visível de um objeto é modelado pelo conjunto de mensagens as quais ele pode responder (as operações que o objeto pode executar). Comportamento do Professor Clark Submit Final Grades Accept Course Offering Take Sabbatical Set Max Load SubmitFinalGrades() SetMaxLoad() AcceptCourseOffering() TakeSabbatical() Professor Clark
Um Objeto tem Identidade 2.7 Cada objeto tem uma identidade única, mesmo se seu estado for idêntico ao de outro objeto. Professor J Clark ensina Biologia Professor J Clark ensina Letras Princípios Básicos da Orientação a Objetos 2.8 Abstração Orientação a Objetos Encapsulamento Modularidade Hierarquia
Princípios Básicos da Orientação a Objetos 2.9 Elementos do Modelo Objeto: Abstração Denota as características essenciais de um objeto que o distinguem de todos os outros objetos e portanto oferece limites conceituais bem definidos, relativos a perspectiva do observador A abstração possibilita o gerenciamento da complexidade pois possibilita que o foco seja dirigido unicamente às características de uma entidade que a distinguem de todas as outras. Abstração Orientação a Objetos Encapsulamento Modularidade Hierarquia Object-Oriented Analysis and Design G. Booch -2nd edition - Addison-Wesley & Princípios Básicos da Orientação a Objetos Abstração: Exemplo 2.10 Estudante Professor Oferecimento do curso (9:00, Segunda Quarta Sexta) Curso (ex:. Álgebra)
Princípios Básicos da Orientação a Objetos Encapsulamento Abstração Orientação a Objetos É o processo de compartimentação dos elementos de uma abstração Estes elementos constituem sua estrutura e comportamento. Abstração e encapsulamento são conceitos complementares: a abstração representa o comportamento observável do objeto e o encapsulamento, a implementação que dá origem a este comportamento. O encapsulamento é também chamado de ocultamento da informação esconde-se os segredos de um objeto que não contribuem para a definição de suas características essenciais (seus dados e operações) Cliente só conhece a interface. Clientes não são influenciados por alterações na implementação e portanto alterações em uma operação não se repercutem no cliente Manutenção facilitada e menos onerosa. Encapsulamento oferece duas proteções: (a) evita que o estado do objeto seja alterado pelos clientes do mesmo modo que (b) o código do cliente pela implementação do objeto. Encapsulamento Modularidade Hierarquia 2.11 & Object-Oriented Analysis and Design G. BBooch -2nd edition - Addison-Wesley Encapsulamento: Exemplo 2.12 O Professor Clark deve ensinar 4 cursos no semestre. SetMaxLoad(4) A chave para o encapsulamento é o conceito de interface. Interfaces definem que a comunicação com o objeto se dá através de operações pré-definidas Os dados do objeto são acessíveis unicamente através das operações. SubmitFinalGrades() SetMaxLoad() Professor Clark AcceptCourseOffering() Name: J Clark Employee ID: 567138 HireDate: 07/25/1991 Status: Tenured Discipline: Finance MaxLoad:4 TakeSabbatical()
Princípios Básicos da Orientação a Objetos Modularidade É a propriedade que um sistema tem de poder ser decomposto em um conjunto de módulos coesos e fortemente ligados facilitando sua compreensão. Divide um sistema complexo em módulos menores e melhor gerenciáveis individualmente. Abstração Orientação a Objetos O conceito de Pacotes será utilizado para a implementação da modularidade. Encapsulamento Modularidade Hierarquia 2.13 & Object-Oriented Analysis and Design G. Booch -2nd edition - Addison-Wesley Princípios Básicos da Orientação a Objetos Modularidade: Exemplo 2.14 Divisão de um sistema complexo em módulo menores. Sistema de Controle Acadêmico Sistema de Pagamento Sistema de Cadastro de Cursos Sistema de Controle de Estudantes
Princípios Básicos da Orientação a Objetos Hierarquia É a categorização ou ordenamento de abstrações em uma estrutura do tipo árvore. Hierarquias permitem que se implemente ordenamentos que respeitam uma ordem particular, segundo uma perspectiva qualquer. A utilização de hierarquias permite que se defina abstrações mais descritivas e coesas com melhor alocação de responsabilidades. Abstração Orientação a Objetos Encapsulamento Modularidade Hierarquia Hierarquia é uma organização taxonômica que facilita que se reconheça semelhanças ou diferenças. 2.15 Object-Oriented Analysis and Design G. Booch -2nd edition - Addison-Wesley & Benefícios do Modelo Objeto 2.16 O modelo objeto permite a utilização das poderosas linguagens de programação orientadas a objetos. A utilização do modelo objeto encoraja, por suas características, a reutilização não somente do software mas de todo o trabalho de projeto. A utilização dos modelos objeto leva à produção de sistemas que são mais resistentes às mudanças. O modelo objeto utiliza conceitos naturais a maneira humana de pensar.
O que é uma Classe? 2.17 Uma classe é um padrão para uma categoria de itens estruturalmente idênticos e um mecanismo para criar estes itens, as instâncias, baseando-se neste padrão. Uma classe é a descrição de um conjunto de objetos que compartilham os mesmos atributos, operações, relacionamentos e semântica A classe agrega as características estáticas (os atributos) e dinâmicas (as operações) de suas instâncias. Um objeto único é simplesmente uma instância de uma classe. Uma classe é uma abstração que: Enfatiza as características relevantes enquanto; Suprime as outras características. Uma Classe Simples 2.18 Propriedades Nome Local Alunos Dias de aula Créditos # Vagas Hora início Hora de fim Classe Curso Comportamento Adicionar um estudante Suprimir um estudante Recuperar a lista Determinar se há vagas
Conceitos do Paradigma Objeto Generalização É uma relação do tipo generalização/especialização na qual os objetos de um elemento especializado (um filho) podem ser substituídos por objetos do elemento geral (o pai) [BOO99]. É uma maneira natural de modelar o mundo real (o Domínio da Aplicação) de maneira a fornecer um modelo conciso para a análise, o projeto e também para a implementação orientada a objetos. Este tipo de modelagem é implementada no paradigma de objetos através de uma estrutura hierárquica de classes, baseada em uma relação que é transitiva e antisimétrica entre classes e que é denominada Herança. A modelagem pode ser testada verificando se o elemento especializado é do tipo do elemento geral. Normalmente os termos generalização e herança são usados no mesmo sentido, mas uma diferenciação pode ser realizada: generalização é o nome do relacionamento enquanto herança é o mecanismo que implementa o relacionamento. 2.19 Conceitos do Paradigma Objeto Generalização: Herança Herança é o mecanismo através do qual elementos mais específicos incorporam a estrutura e comportamento de elementos mais gerais [BOO99]. Super-Classe (classe mãe ou classe base) Elemento mais geral utilizado para evitar as redundâncias de descrição. Sub-Classe (classe filha ou classe) Elemento mais específico utilizado para descrever as particularidades das classes. A sub-classe pode ser utilizada onde a super-classe é mas não o contrário. O processo de criação de super-classes é chamado Generalização e o de criação das sub-classes é chamado de Especialização. Quando se criam sub-classes partindo de uma super-classe emprega-se o conceito de herança A herança é portanto uma propriedade que possibilita a criação de uma classe partindo de outra classe. Atributos, operações e relacionamentos comuns devem ser representados no mais alto nível da hierarquia. O que é herdado: As sub-classes criadas herdam o estado (atributos e relacionamentos) e o comportamento (operações) da(s) super-classe(s) associada(s) (herança simples ou múltipla). As sub-classes podem incluir, alterar ou suprimir atributos, operações e relacionamentos da super-classe. 2.20
Conceitos do Paradigma Objeto 2.21 Polimorfismo O Polimorfismo é uma propriedade que caracteriza o compartilhamento de uma ação única através de uma hierarquia de classes Uma função pode agir sobre dados inteiros, reais, gráficos, etc. O polimorfismo permite que se esconda diferentes implementações de uma mesma operação sob a mesma interface Encapsulamento. A operação é definida em uma super-classe e o código é definido nas sub-classes. O mecanismo que suporta o conceito de polimorfismo é denominado Ligação Dinâmica ou Resolução Tardia ( Late Binding ). Conceitos do Paradigma Objeto Polimorfismo: Exemplo 2.22 financialinstrument.getcurrentvalue() getcurrentvalue() getcurrentvalue() getcurrentvalue() Stock Bond Mutual Fund
Conceitos do Paradigma Objeto 2.23 Mensagem Utiliza-se Mensagens com a finalidade de representar a comunicação entre um usuário e um objeto ou entre objetos. Uma mensagem é composta do nome do objeto que a receberá, de um seletor que representa o nome da operação que será executada e de parâmetros definidos pela assinatura da operação de destino. Após o envio de uma mensagem, o objeto receptor deve definir qual operação será executada segundo a interface de sua classe ou de uma das sub-classes desta classe Polimorfismo. Conceitos do Paradigma Objeto 2.24 Relações Instanciação: é uma relação existente entre um padrão e qualquer coisa que é definida a partir deste padrão Classe Objeto. Associação: é uma relação que descreve uma conexão entre classes ou entre objetos As associações podem ter atributos que as caracterizam. Alguns Métodos Orientados a Objetos MOO fazem uma distinção entre relações entre classes e entre objetos. Utilização: é uma relação que aparece nos MOO para representar relações do tipo cliente/servidor: o cliente depende do servidor para cumprir com suas responsabilidades: ele utiliza os serviços do servidor Envio de mensagens. Agregação: é uma relação do tipo todo-parte, onde o todo é composto de suas partes É uma relação transitiva e anti-simétrica. Este tipo de relação estabelece uma ligação entre um composto e seus componentes e é chamada também Relação de Composição.
Conceitos do Paradigma Objeto Histórico das Linguagens 2.25 Developing Software with UML B. Oestereich Addison-Wesley Conceitos do Paradigma Objeto O que é um objeto? Revisão 2.26 Quais são os quatro princípios da orientação a objetos? Descreva-os. O que é uma classe? Qual o relacionamento que existe entre classes e objetos? O que é um atributo? O que é uma operação? Defina polimorfismo. Forneça um exemplo de polimorfismo. O que é generalização?