Prévia do material em texto
U N ID A D E 4 CLASSES E objEtoS Em umL Carga horária Nove horas• EAD. Objetivo Conhecer, identificar e modelar classes e objetos em • diagramas da UML. Conteúdos Representação de Classes: nomenclatura, atributos, • operações e relacionamentos. Representação de Objetos.• Claretiano – Batatais74 Cursos de graduação CRC • • • © Análise e Projeto de Sistemas UNIDADE 4 1 Introdução Na unidade anterior, você conheceu os conceitos básicos de uma UML e compreendeu todos os passos para organizar um diagrama de Caso de Uso. Nesta unidade, você aprenderá a identificar e modelar classes e objetos em diagramas da UML. Além disso, você estudará em detalhes a modelagem das classes, que são os elementos mais importantes da Orientação a Objeto. Problematizando o tema Como se configura uma classe de objetos em um domínio de estudo de determinado sistema? Por que as classes são tão importantes? É possível uma classe existir sozinha, ou ela pode se relacionar com outras? Reflita sobre estas questões, considerando o conhecimento prévio que possui, e fique atento ao texto desta unidade, buscando a resposta para elas. 2 IntroduzIndo os conceItos de classe, objeto, atrIbutos e métodos Para iniciar nosso estudo de Análise e Projeto Orientados a Objeto, devemos entender o conjunto de informações específicas ao âmbito do projeto que desejamos desenvolver, propondo uma solução em termos de software. Esse conjunto é chamado de domínio do problema, o qual é composto por um conjunto de objetos que têm atributos e comportamentos específicos. Por exemplo, se quisermos propor um software para armazenar uma questão de múltipla escolha, da disciplina Matemática, do professor Paulo, para o aluno Joel, o domínio da informação será o conjunto de fatos que abrange a questão de múltipla escolha da disciplina, o professor e o aluno. Nessa situação, teremos os seguintes objetos envolvidos: questão de múltipla escolha; matemática; Paulo; Joel. Desta forma, percebemos que todos esses objetos possuem atributos ou elementos descritivos qualificadores que podem ser específicos para cada tipo de objeto. Um aluno, por exemplo, possui os atributos: nome, idade e número da matrícula. Os objetos identificados no domínio do problema deverão ser manipulados por meio de uma coleção de funções, também chamadas de métodos, operações ou serviços. Para tanto, será preciso inserir dados do professor, da questão e do aluno. É possível que realizemos, também, alguma alteração ou, ainda, que tenhamos que excluir dados de algum objeto. Dessa forma, os métodos identificados no domínio do problema para esses objetos serão os seguintes: inserir, alterar e excluir. Todavia, além da questão de múltipla escolha, da disciplina Matemática e do aluno Paulo, é possível que, com o passar do tempo, sejam registradas outras questões, outras disciplinas e outros alunos. Portanto, novos objetos poderão eventualmente ser criados. Para resolver este problema, vamos, inicialmente, categorizar os objetos em classes e em subclasses. Você saberia definir o que é uma classe? Pois bem, uma classe é um conjunto de objetos que compartilham uma estrutura e um comportamento comum. Um objeto é simplesmente uma instância de uma classe. Cursos de graduação © Análise e Projeto de Sistemas • • • CRC Batatais – Claretiano 75 UNIDADE 4 Veja que a Figura 1, disposta a seguir, representa a idéia de classe como gabarito para instanciar objetos. Figura 1 Representação abstrata de uma classe. Mas, voltando ao nosso problema anterior, as classes identificadas para ele são: QUEsTõEs, ALUNOs, DisCiPLiNAs, PROFEssOREs. Ao inserir o aluno Paulo, criamos ou instanciamos um novo objeto da classe ALUNOs. Ao criar outro novo aluno, por exemplo, Pedro, teremos outro objeto, que também é outra instância dessa mesma classe, com os mesmos atributos e métodos dos outros objetos que foram criados com base na classe ALUNOs. A utilização do conceito de classes permite que o Analista de sistemas abstraia características de um problema, que propicia à modelagem a capacidade de generalizar componentes de software a partir de alguns casos específicos. Por exemplo, em um dado caso, identificamos as classes: carro de passeio, carro esportivo e carro rural. Esses três tipos podem ser abstraídos em uma classe genérica chamada veículo. É possível, também, que algum objeto tenha que se comunicar com outro, o que pode acontecer por diversas razões. Essa comunicação ocorre por meio de um protocolo de mensagens. Mas, não se preocupe com isso neste momento, pois este assunto será detalhado na próxima unidade. 3 conceItos fundamentaIs no paradIgma da orIentação a objetos O paradigma da Orientação a Objetos apresenta os seguintes conceitos fundamentais: identificação.1) Classificação.2) Herança.3) Polimorfismo.4) Encapsulamento.5) A seguir, observe, de maneira detalhada, a descrição desses conceitos. atenção! Se encontrar dificuldades, não desanime. Entre em contato com seus colegas de curso e com seu tutor. Faça parte desta comunidade colaborativa de conhecimento. Claretiano – Batatais76 Cursos de graduação CRC • • • © Análise e Projeto de Sistemas UNIDADE 4 Identificação Cada objeto tem identidade própria, ou seja, dois objetos são diferentes, mesmo que seus dados e suas operações sejam idênticos, pois dois objetos, mesmo que idênticos, não ocupam o mesmo lugar no espaço. Essa correspondência, também, existe em um sistema computacional, visto que cada objeto deverá ocupar um endereço único de memória e possuir um nome (identificador) único. Por exemplo, de acordo com o nosso problema, o objeto Paulo deverá ser único para o sistema. Classificação É um processo inerente ao dia-a-dia do ser humano. se você parar para pensar, descobrirá que hoje utilizou o processo de classificação inúmeras vezes. Por exemplo: na escolha da roupa que vestiu (roupa esporte, social, de inverno, de verão etc.);• na escolha do alimento que ingeriu etc• . Na Orientação a Objetos, classificar significa agrupar objetos em classes, uma vez que se observou que eles possuem dados e operações semelhantes. Portanto, o processo de classificação é importante dentro da Orientação a Objetos, dado que é por meio dessa classificação que serão criadas as classes do software. Conforme vimos em um exemplo anteriormente, os objetos do software serão instanciados a partir das classes criadas. Herança O conceito de Herança nada mais é do que o compartilhamento de atributos e operações entre classes. isso acontece a partir de um relacionamento hierárquico. Por exemplo, uma classe pode ser definida de maneira abrangente (superclasse) e depois ser refinada em subclasses. Portanto, há uma hierarquia ou subordinação da subclasse para a classe mais abrangente. Atente-se para o fato de que as propriedades de uma superclasse não precisam ser repetidas em uma subclasse, visto que elas, automaticamente, herdam todas estas propriedades. Agora, vamos voltar ao exemplo dos alunos. Poderíamos generalizar as classes ALUNOs e PROFEssOREs na superclasse PEssOAs. Então, ALUNOs e PROFEssOREs seriam as subclasses. Portanto, a classe PEssOAs é a classe hierarquicamente superior (superclasse), mais genérica, e as classes ALUNOs e PROFEssOREs, as classes hierarquicamente inferiores, mais específicas (subclasses). Observe que a classe PEssOAs possui os seguintes atributos: nome, data de nascimento e número da identidade. E os métodos dessa classe são: inserir, alterar e excluir pessoas. Baseados nessa classe, criamos a subclasse ALUNOs, que, por sua vez, herdaria os mesmos atributos e métodos, já que um aluno não deixa de ser uma pessoa. Dessa forma, a subclasse ALUNOs teria, também, outros atributos específicos de um aluno, como númeroda matrícula e curso, e, além dos métodos herdados da classe PEssOAs, teria um método específico: fazer prova. O mesmo vale para a subclasse PROFEssOREs, que herda os atributos e os métodos da classe PEssOAs e poderia ter atributos específicos, como, por exemplo, a sua titulação, e um método específico seria: montar questão de múltipla escolha. Polimorfismo Polimorfismo é uma palavra derivada do grego que significa muitas (poli) formas (morfos). atenção! Você pode verificar no seu dia-a-dia que cada objeto tem identidade própria, na qual duas coisas, mesmo que exatamente iguais, não podem ser consideradas idênticas, pois, minimamente, não ocupam o mesmo lugar no espaço. VocÊ sabIa Que... A classificação somente é possível graças a nossa capacidade de abstração. Cursos de graduação © Análise e Projeto de Sistemas • • • CRC Batatais – Claretiano 77 UNIDADE 4 Em Orientação a Objetos, o conceito de polimorfismo significa que uma mesma operação pode se comportar de maneira diferente, dependendo do estímulo recebido e das classes nas quais se encontra. De acordo com esse conceito, as classes derivadas de uma mesma superclasse podem herdar operações que tenham comportamentos diferentes em cada subclasse, produzindo resultados diferentes, dependendo de como cada objeto implementa a operação. Veja o exemplo de uma superclasse APLiCAÇÃO, com um método chamado “saldo”. suponha que esta superclasse dê origem às classes POUPANÇA e RENDA FixA. O método saldo terá comportamentos diferentes em cada classe. Portanto, no ambiente polimórfico, todas as classes podem conter uma mesma operação, mas ela pode ser implementada por métodos particulares em cada classe. Encapsulamento Lembrando do significado da palavra cápsula, que significa “recipiente”, compreendemos que encapsular é como uma operação na qual guardamos algo, promovendo o isolamento desse objeto, o que possibilita a proteção do objeto em relação ao comportamento de outro objeto implementado, e isso é uma vantagem em termos de proteção e propagação de erros, favorecendo até a diminuição no esforço de manutenção. O encapsulamento também promove a ocultação do usuário dos detalhes de implementação do objeto. 4 classes Estudaremos agora, com mais profundidade, um dos elementos mais importantes da Orientação a Objetos: as classes. Como você viu anteriormente, em uma visão simplificada, é como se uma classe fosse um gabarito ou molde, a partir do qual os objetos do sistema são criados. Formalmente, uma classe é a descrição de um tipo de objeto. Em outras palavras, uma classe são agrupamentos, também chamados de categorias ou grupos, de tipos de objetos com os quais interagimos no nosso dia-a-dia. Um diagrama de classes é construído por um Analista de sistemas para descrever a visão estática do sistema em termos de classes e relacionamentos entre elas. Pode-se dizer que o diagrama de classes ajuda a definir a base, para que os demais diagramas apresentem outras visões do sistema. Representação gráfica de uma classe Uma classe é representada graficamente por um retângulo dividido em três compartimentos: o primeiro para identificação, ou seja, o nome da classe;• o segundo para a especificação da relação de seus atributos; • o terceiro para especificar os métodos ou operações de manipulação de dados • e de comunicação de uma classe com outras classes do sistema. para VocÊ refletIr: Este tópico apresentou uma visão inicial da tecnologia de Orientação a Objetos, seus principais conceitos e sua utilização. O objetivo principal do desenvolvimento de software é produzir um programa funcionando, e os diagramas são, em primeira instância, apenas figuras bonitas. Portanto, quando você estiver pensando em utilizar a tecnologia de Orientação a Objetos é importante que se pergunte por que está fazendo isso e como isso irá ajudá-lo a escrever códigos e produzir softwares com qualidade? Claretiano – Batatais78 Cursos de graduação CRC • • • © Análise e Projeto de Sistemas UNIDADE 4 Figura 2 Representação gráfica de uma classe. A sintaxe utilizada para descrever o conteúdo de cada compartimento é independente de linguagem, embora possam ser utilizadas outras sintaxes, como a do C++, Java etc. Por exemplo: Em programação Java, adota-se o padrão em que as classes devem ter todas as palavras que formam o seu nome iniciadas em letra maiúscula (ExemploNomeClasse) observando a ausência de espaço ( ) ou (_) entre as palavras. Para o caso de atributos e métodos, convém que eles tenham a primeira letra minúscula e a primeira letra da segunda palavra em diante, maiúscula; observa-se, também, a ausência de espaço ( ) ou (_) entre as palavras. Veja a sintaxe a seguir: exemploAtributo;• exemploMetodo().• A seguir, você verá a descrição de cada compartimento de uma classe, conforme foi apresentado na Figura 2. Nome da classe É conveniente que o identificador (nome) da classe seja: derivado do domínio da aplicação;• menos ambíguo possível;• substantivo e que não contenha prefixos ou sufixos.• Depois de identificar os objetos (ou conceitos) pertinentes ao domínio do problema, é necessário definir as propriedades que queremos representar. Essas propriedades podem ser dados (atributos) ou operações. Atributos de uma classe De maneira geral, pode-se afirmar que os atributos são tipos de informações específicas de um dado objeto, instanciado ou categorizado, a partir de uma classe. Um atributo representa uma propriedade que todos os objetos da classe têm (por exemplo: todas as mesas têm altura, número de pernas, posição na sala etc.), mas cada objeto possui valores particulares para seus atributos (continuando nosso exemplo: algumas mesas são muito baixas, outras são altas, de madeira, de plástico etc.). Vale a pena ressaltar que somente os atributos que interessam ao sistema devem ser representados. Veja, a seguir, quatro propriedades importantes que os atributos podem apresentar: Cursos de graduação © Análise e Projeto de Sistemas • • • CRC Batatais – Claretiano 79 UNIDADE 4 Visibilidade1) – é o escopo do atributo: pode-se especificar o quão acessível é um atributo de um objeto a partir de outros objetos. Os valores possíveis são: Tabela 1 Símbolos e seus significados na visibilidade. SINAL OU SÍMBOLO DE VISIBILIDADE DESCRIÇÃO DA VISIBILIDADE - Privativo – nenhuma visibilidade externa, ou seja, não é visível às outras classes. + Público – visibilidade externa total. Todos têm acesso, e o atributo pode ser utilizado por operações declaradas dentro de outras classes. # Protegido – visibilidade externa limitada. nomeDoAtributo – 2) é um identificador para o atributo. tipicamente a nomeação de um atributo se inicia com uma letra minúscula;• concatena-se com as demais palavras que compõem o nome, iniciando • com letras maiúsculas. Propriedade – 3) apresenta características aplicáveis ao elemento. Observe, a seguir, os itens que devem ser informados: descrição• – informe descrição sucinta da propriedade; tipo de dado• – informe o tipo do atributo (inteiro, real, caractere, outra classe etc.; tipo de atributo• – informe se o tipo de atributo é estático, constante, normal (não estático e não constante), matriz, atributo final (utilizado em Java); domínio de valores• – informe o valor mínimo e o valor máximo (finito ou infinito), bem como a restrição, se houver. Valor_default4) (ou valor inicial) – pode-se especificar um valor inicial para o atributo. Operações de uma classe Uma operação também é referida como método. Entretanto, temos que a palavra método é mais adequada à implementação ou programação. Quanto ao termo operação, é mais abstrato e designa um serviço que os objetos devem cumprir. Veja, então, que as operações podem mudaros valores dos atributos do objeto que a efetua, ou não. Por exemplo, podemos inserir, alterar ou excluir dados de alunos etc. Uma classe, também, pode ter qualquer número de operações. Observe a seguir, na Figura 3, os exemplos das classe Usuários, Avaliações e Questões. Vamos retomar o caso proposto na unidade anterior sobre um software educacional, relebrando que o objetivo é desenvolver um software educacional que auxilie no processo de avaliação de conteúdos ensinados pelo professor, oferecendo funcionalidades de montagem e aplicação de avaliações com questões de múltipla escolha, disponibilizando, também, a correção automática da avaliação para o professor e para os alunos, bem como a geração de relatórios de desempenho de alunos, e que, além disso, controle o acesso aos usuários por questões de segurança. atenção! A visibilidade é uma informação, e é opcional. atenção! A propriedade é uma informação, e é opcional. atenção! O Valor_default é uma informação, e é opcional. Informação complementar: Em termos computacionais, operação é algo invocado por um objeto (procedimento de chamada), e método é a implementação de uma operação. Portanto, as operações são executadas sempre que um objeto recebe uma mensagem de outro objeto. Informação: Como os atributos, duas operações em duas classes podem ter o mesmo nome. Isso se chama polimorfismo, ou seja, a mesma operação está implementada em dois métodos diferentes, em duas classes. Claretiano – Batatais80 Cursos de graduação CRC • • • © Análise e Projeto de Sistemas UNIDADE 4 Três classes foram identificadas: Usuários (generalização das classes: Aluno, Professor, Administrador). • Avaliação.• Questão.• O Diagrama de Classes preliminar do sistema está representado na figura a seguir. CURsO: LiCENCiATURA EM COMPUTAÇÃO DisCiPLiNA: ANALisE E PROJETOs DE sisTEMAs AUTOR: WAINE TEIXEIRA JÚNIOR UNiDADE 4 – VERsÃO 1- COPY PREPARAÇÃO: CAMiLA sANTOs REVisÃO: MARiNA APARECiDA BARUFALDi 8 avaliação de conteúdos ensinados pelo professor, oferecendo funcionalidades de montagem e aplicação de avaliações com questões de múltipla escolha, disponibilizando, também, a correção automática da avaliação para o professor e para os alunos, bem como a geração de relatórios de desempenho de alunos, e que, além disso, controle o acesso aos usuários por questões de segurança. Três classes foram identificadas: Usuários (generalização das classes: Aluno, Professor, Administrador). Avaliação. Questão. O Diagrama de Classes preliminar do sistema está representado na figura a seguir. ����������� ����������� ����������� ����������� ����������� usuário - codigoUsuario: int - emailUsuario: int - loginUsuario: int - nomeUsuario: int - senhaUsuario: int - tipoUsuario: int + alterarUsuario() : void + consultarUsuario() : void + excluirUsuario() : void + inserirUsuario() : void + logarSistema() : void av aliações - codigoAvaliacao: int - dataAval iacao: int - ti tuloAvaliacao: int + al terarAval iacao() : void + consultarAvaliacao() : void + excluirAvaliacao() : void + inserirAval iacao() : void + l iberarAval iacao() : void + l istarDesempenhoAluno() : void + l istarDesempenhoAval iacao() : void Questões - alternativaA: int - alternativaB: int - alternativaC: int - alternativaD: int - codigoQuestao: int - respostaCorreta: int - tituloQuestao: int + alterarQuestao() : void + consultarQuestao() : void + excluirQuestao() : void + inserirQuestao() : void Figura 3 Representação gráfica das classes do sistema gerenciador de avaliações. Relacionamentos entre classes Ao elaborarmos um diagrama de classes, procuramos representar todas as classes do sistema, bem como todos os relacionamentos que existem entre elas. Veja, a seguir, os tipos de relacionamentos existentes: 1) associação; 2) agregação e composição; 3) generalização e especialização; 4) realização. Observe esses tipos de associação com atenção. Você verá uma grande correspondência com a modelagem de dados do tipo entidade-relacionamento. Associação Uma associação é a ligação entre classes. A partir de uma associação, na qual são conectadas duas classes, você é capaz de navegar do objeto de uma classe até o objeto de outra classe. Podemos encontrar este tipo de associação, também, em nosso cotidiano. É praticamente impossível não encontrar algum tipo de ocorrência que possa conectar um objeto a outros. Por exemplo, uma pessoa trabalha para uma companhia; uma companhia tem vários escritórios, e assim por adiante. A associação, portanto, é a documentação do relacionamento entre dois objetos. Para melhor documentar uma relação, podem-se incluir nomes, destacar os papéis que cada objeto executa na relação, indicar a direção e, também, a multiplicidade desse relacionamento. Vamos, a seguir, verificar os itens de informações que documentam uma relação. Começaremos pelo nome de uma associação, ele é importante porque descreve a própria natureza do relacionamento. Figura 3 Representação gráfica das classes do sistema gerenciador de avaliações. Relacionamentos entre classes Ao elaborarmos um diagrama de classes, procuramos representar todas as classes do sistema, bem como todos os relacionamentos que existem entre elas. Veja, a seguir, os tipos de relacionamentos existentes: associação;1) agregação e composição;2) generalização e especialização;3) realização.4) Observe esses tipos de associação com atenção. Você verá uma grande correspondência com a modelagem de dados do tipo entidade-relacionamento. Associação Uma associação é a ligação entre classes. A partir de uma associação, na qual são conectadas duas classes, você é capaz de navegar do objeto de uma classe até o objeto de outra classe. Podemos encontrar este tipo de associação, também, em nosso cotidiano. É praticamente impossível não encontrar algum tipo de ocorrência que possa conectar um objeto a outros. Por exemplo, uma pessoa trabalha para uma companhia; uma companhia tem vários escritórios, e assim por adiante. A associação, portanto, é a documentação do relacionamento entre dois objetos. Para melhor documentar uma relação, podem-se incluir nomes, destacar os papéis que cada objeto executa na relação, indicar a direção e, também, a multiplicidade desse relacionamento. Vamos, a seguir, verificar os itens de informações que documentam uma relação. Cursos de graduação © Análise e Projeto de Sistemas • • • CRC Batatais – Claretiano 81 UNIDADE 4 Começaremos pelo nome de uma associação, ele é importante porque descreve a própria natureza do relacionamento. Em uma associação, muitas vezes a informação é melhor documentada quando indicamos o papel que cada classe executa na relação. Por exemplo, uma relação “Pessoa trabalhar Empresa” poderia ser melhor explicada indicando-se o papel de Pessoa, que é trabalhador, e o papel da Empresa, que é de empregador. A representação gráfica dessa situação seria conforme mostra a figura a seguir: Figura 4 Representação gráfica de papéis em uma associação de classes. Em seguida, temos a questão da direção. A direção de uma associação é importante porque orienta a navegação da informação. É possível que haja apenas um sentido (unidirecional) ou, então, que a associação seja navegável em duas direções (bidirecional). Desta forma, o traço que une as duas classes passa a ser uma seta que apontará para uma ou para as duas classes. Por último, temos a multiplicidade. A multiplicidade, também chamada de cardinalidade, é o número de ocorrências entre um objeto qualquer da classe e os demais objetos da outra classe envolvida. Portanto, a multiplicidade determinará a quantidade de objetos que podem ser conectados ou participar de um relacionamento. A multiplicidade é a quantidadede vezes em que se repete o papel de uma associação, e é escrita como uma expressão equivalente a um valor explícito ou a um intervalo de valores. Ela pode ser apresentada de várias maneiras, veja a seguir: (0) – zero; (1) – exatamente uma ocorrência (no mínimo e no máximo); (N) – sendo N um número exato; (*) – muitas ocorrências (no mínimo e no máximo); (0 .. 1) – zero (nenhuma) ou, então, no máximo uma ocorrência; (0 .. *) – zero (nenhuma) ou, então, várias ocorrências; (1 .. N) – no mínimo uma ou, então, um número exato; (1 .. *) – no mínimo uma ou, então, várias ocorrências. No caso do sistema Gerenciador de Avaliações de Questões de Múltipla Escolha, o professor cria questões de múltipla escolha. Veja como ficaria a representação gráfica na Figura 5. Claretiano – Batatais82 Cursos de graduação CRC • • • © Análise e Projeto de Sistemas UNIDADE 4 Figura 5 Representação gráfica do relacionamento das classes professor e questões. Podemos ler a multiplicidade da figura anterior da seguinte forma: Um professor cadastrado no sistema pode não ter nenhuma questão cadastrada, como também, pode ter infinitas (0 .. *). Todavia, havendo uma questão cadastrada, é obrigatório que tenha um único professor que a cadastrou (1). Associação Recursiva Agora que você compreendeu o que é uma associação, definiremos a associação recursiva. A recursividade em uma relação é um caso bem interessante, pois ela ocorre quando a outra classe associada é a própria classe. Por exemplo: imagine que tenhamos a seguinte situação para modelar: João é casado com Maria. João e Maria foram abstraídos em uma classe PEssOA. Portanto, PEssOA é casada com PEssOA. Graficamente, representamos a recursividade com um traço apontado para a própria classe. Observe o exemplo a seguir, para que você compreenda melhor a informação de como acontece a representação de papéis. CURsO: LiCENCiATURA EM COMPUTAÇÃO DisCiPLiNA: ANALisE E PROJETOs DE sisTEMAs AUTOR: WAINE TEIXEIRA JÚNIOR UNiDADE 4 – VERsÃO 1- COPY PREPARAÇÃO: CAMiLA sANTOs REVisÃO: MARiNA APARECiDA BARUFALDi 10 Figura 5 Representação gráfica do relacionamento das classes professor e questões. Podemos ler a multiplicidade da figura anterior da seguinte forma: Um professor cadastrado no sistema pode não ter nenhuma questão cadastrada, como também, pode ter infinitas (0 .. *). Todavia, havendo uma questão cadastrada, é obrigatório que tenha um único professor que a cadastrou (1). Associação Recursiva Agora que você compreendeu o que é uma associação, definiremos a associação recursiva. A recursividade em uma relação é um caso bem interessante, pois ela ocorre quando a outra classe associada é a própria classe. Por exemplo: imagine que tenhamos a seguinte situação para modelar: João é casado com Maria. João e Maria foram abstraídos em uma classe PEssOA. Portanto, PEssOA é casada com PEssOA. Graficamente, representamos a recursividade com um traço apontado para a própria classe. Observe o exemplo a seguir, para que você compreenda melhor a informação de como acontece a representação de papéis. pessoa +Marido casar com +Esposa Figura 6 Representação gráfica de uma associação recursiva. Agregação e Composição A agregação é um tipo de relacionamento no qual duas classes estão inseridas em um contexto “todo-parte”. As classes deste tipo de relacionamento podem viver de forma independente, de forma que os objetos da parte constituinte ou da agregada sejam independentes em termos de vida, porém ambas pertencem a um único todo. Para chegarmos a esse nível de análise, dependeremos de um estudo aprofundado do domínio do problema. Graficamente, a agregação é representada por um losango sem preenchimento, conforme demonstra a Figura 7. Figura 6 Representação gráfica de uma associação recursiva. Cursos de graduação © Análise e Projeto de Sistemas • • • CRC Batatais – Claretiano 83 UNIDADE 4 Agregação e Composição A agregação é um tipo de relacionamento no qual duas classes estão inseridas em um contexto “todo-parte”. As classes deste tipo de relacionamento podem viver de forma independente, de forma que os objetos da parte constituinte ou da agregada sejam independentes em termos de vida, porém ambas pertencem a um único todo. Para chegarmos a esse nível de análise, dependeremos de um estudo aprofundado do domínio do problema. Graficamente, a agregação é representada por um losango sem preenchimento, conforme demonstra a Figura 7. CURsO: LiCENCiATURA EM COMPUTAÇÃO DisCiPLiNA: ANALisE E PROJETOs DE sisTEMAs AUTOR: WAINE TEIXEIRA JÚNIOR UNiDADE 4 – VERsÃO 1- COPY PREPARAÇÃO: CAMiLA sANTOs REVisÃO: MARiNA APARECiDA BARUFALDi 11 Figura 7 Representação gráfica de uma agregação. Entretanto, há um caso particular de agregação que é muito utilizado. Trata-se do caso composição. Ele ocorre quando duas classes só têm sentido no momento em que estiverem associadas. isso implica que, se uma instância da classe deixar de existir, todas as outras associadas por composição “deixarão” de existir também. Exemplos comuns desse tipo de associação no nosso dia-a-dia são a Nota Fiscal e o Recibo de Locação de Filme. Nesses exemplos, há uma agregação entre um bloco de informação mais genérico, que relaciona, por exemplo, a identificação, a organização e a data, e outro bloco de informações mais específicas, que são os itens relacionados nesses tipos de documentos. Na Nota Fiscal, por exemplo, agregamos cabeçalho e item de nota fiscal. Graficamente, o símbolo que representa a composição é um losango preenchido. No caso do sistema Gerenciador de Avaliações, há uma relação de agregação entre Avaliação e Questão. Afinal, uma avaliação só tem sentido se houver questões a serem respondidas. As questões não podem ser respondidas individualmente, sem estarem vinculadas a uma avaliação específica. Observe a demonstração da composição na Figura 8. Figura 8 Representação gráfica da composição no sistema gerenciador de avaliações – Avaliações e Questões. Generalização e Especialização De acordo com os conteúdos estudados você pode estar ser perguntando: o que é generalização e especialização? Você, possivelmente, deve ter aprendido esses conceitos na disciplina Banco de Dados, na Modelagem Entidade-Relacionamento, na notação conhecida como “extendida”. Generalização é um tipo de associação que modela o conceito de herança entre classes, indicando quais objetos foram abstraídos em classes e, com um estudo mais aprofundado, percebeu-se que essas classes poderiam ser abstraídas em uma classe mais genérica, daí o nome generalização. Portanto, a generalização é um relacionamento entre as superclasses e suas subclasses. Essas subclasses também podem ser chamadas de classes-filha, pertencendo a uma hierarquia inferior à classe-mãe. Nesse relacionamento, a subclasse herda todas as propriedades da superclasse, seus atributos e operações. No caso do sistema Gerenciador de Avaliações, percebemos que os atores do sistema foram generalizados no ator usuários. Os atores de um sistema em UML são diretamente modelados em classes. Analise a representação gráfica na Figura 9. Figura 7 Representação gráfica de uma agregação. Entretanto, há um caso particular de agregação que é muito utilizado. Trata-se do caso composição. Ele ocorre quando duas classes só têm sentido no momento em que estiverem associadas. isso implica que, se uma instância da classe deixar de existir, todas as outras associadas por composição “deixarão” de existir também. Exemplos comuns desse tipo de associação no nosso dia-a-dia são a Nota Fiscal e o Recibo de Locação de Filme. Nesses exemplos, há uma agregaçãoentre um bloco de informação mais genérico, que relaciona, por exemplo, a identificação, a organização e a data, e outro bloco de informações mais específicas, que são os itens relacionados nesses tipos de documentos. Na Nota Fiscal, por exemplo, agregamos cabeçalho e item de nota fiscal. Graficamente, o símbolo que representa a composição é um losango preenchido. No caso do sistema Gerenciador de Avaliações, há uma relação de agregação entre Avaliação e Questão. Afinal, uma avaliação só tem sentido se houver questões a serem respondidas. As questões não podem ser respondidas individualmente, sem estarem vinculadas a uma avaliação específica. Observe a demonstração da composição na Figura 8. CURsO: LiCENCiATURA EM COMPUTAÇÃO DisCiPLiNA: ANALisE E PROJETOs DE sisTEMAs AUTOR: WAINE TEIXEIRA JÚNIOR UNiDADE 4 – VERsÃO 1- COPY PREPARAÇÃO: CAMiLA sANTOs REVisÃO: MARiNA APARECiDA BARUFALDi 11 Figura 7 Representação gráfica de uma agregação. Entretanto, há um caso particular de agregação que é muito utilizado. Trata-se do caso composição. Ele ocorre quando duas classes só têm sentido no momento em que estiverem associadas. isso implica que, se uma instância da classe deixar de existir, todas as outras associadas por composição “deixarão” de existir também. Exemplos comuns desse tipo de associação no nosso dia-a-dia são a Nota Fiscal e o Recibo de Locação de Filme. Nesses exemplos, há uma agregação entre um bloco de informação mais genérico, que relaciona, por exemplo, a identificação, a organização e a data, e outro bloco de informações mais específicas, que são os itens relacionados nesses tipos de documentos. Na Nota Fiscal, por exemplo, agregamos cabeçalho e item de nota fiscal. Graficamente, o símbolo que representa a composição é um losango preenchido. No caso do sistema Gerenciador de Avaliações, há uma relação de agregação entre Avaliação e Questão. Afinal, uma avaliação só tem sentido se houver questões a serem respondidas. As questões não podem ser respondidas individualmente, sem estarem vinculadas a uma avaliação específica. Observe a demonstração da composição na Figura 8. Figura 8 Representação gráfica da composição no sistema gerenciador de avaliações – Avaliações e Questões. Generalização e Especialização De acordo com os conteúdos estudados você pode estar ser perguntando: o que é generalização e especialização? Você, possivelmente, deve ter aprendido esses conceitos na disciplina Banco de Dados, na Modelagem Entidade-Relacionamento, na notação conhecida como “extendida”. Generalização é um tipo de associação que modela o conceito de herança entre classes, indicando quais objetos foram abstraídos em classes e, com um estudo mais aprofundado, percebeu-se que essas classes poderiam ser abstraídas em uma classe mais genérica, daí o nome generalização. Portanto, a generalização é um relacionamento entre as superclasses e suas subclasses. Essas subclasses também podem ser chamadas de classes-filha, pertencendo a uma hierarquia inferior à classe-mãe. Nesse relacionamento, a subclasse herda todas as propriedades da superclasse, seus atributos e operações. No caso do sistema Gerenciador de Avaliações, percebemos que os atores do sistema foram generalizados no ator usuários. Os atores de um sistema em UML são diretamente modelados em classes. Analise a representação gráfica na Figura 9. Figura 8 Representação gráfica da composição no sistema gerenciador de avaliações – Avaliações e Questões. Claretiano – Batatais84 Cursos de graduação CRC • • • © Análise e Projeto de Sistemas UNIDADE 4 Generalização e Especialização De acordo com os conteúdos estudados você pode estar ser perguntando: o que é generalização e especialização? Pois bem, Generalização é um tipo de associação que modela o conceito de herança entre classes, indicando quais objetos foram abstraídos em classes e, com um estudo mais aprofundado, percebeu-se que essas classes poderiam ser abstraídas em uma classe mais genérica, daí o nome generalização. Portanto, a generalização é um relacionamento entre as superclasses e suas subclasses. Essas subclasses também podem ser chamadas de classes-filha, pertencendo a uma hierarquia inferior à classe-mãe. Nesse relacionamento, a subclasse herda todas as propriedades da superclasse, seus atributos e operações. No caso do sistema Gerenciador de Avaliações, percebemos que os atores do sistema foram generalizados no ator usuários. Os atores de um sistema em UML são diretamente modelados em classes. Analise a representação gráfica na Figura 9. CURsO: LiCENCiATURA EM COMPUTAÇÃO DisCiPLiNA: ANALisE E PROJETOs DE sisTEMAs AUTOR: WAINE TEIXEIRA JÚNIOR UNiDADE 4 – VERsÃO 1- COPY PREPARAÇÃO: CAMiLA sANTOs REVisÃO: MARiNA APARECiDA BARUFALDi 12 Figura 9 Representação gráfica de generalização de classes–Usuários. Especialização é como se o processo de generalização ocorresse ao contrário. Para você entender melhor, imagine que objetos foram abstraídos em uma classe genérica e, com um estudo mais aprofundado, percebeu-se que essa classe poderia ser desdobrada em duas outras mais específicas. Daí o nome de especialização. (!) atenção! Observe, no caso da generalização, que as operações de manutenção de dados de usuários são específicas para a classe Administrador. Graficamente, não há diferença entre a generalização e especialização. É praticamente uma questão de ponto de partida da abstração, se as classes foram generalizadas ou foram especializadas. Portanto, a representação gráfica do processo é idêntica. (!) atenção! Se encontrar dificuldades não desanime. Entre em contato com seus colegas de curso e com seu tutor. Eles estarão sempre prontos para ajudar você. Figura 9 Representação gráfica de generalização de classes–Usuários. Especialização é como se o processo de generalização ocorresse ao contrário. Para você entender melhor, imagine que objetos foram abstraídos em uma classe genérica e, com um estudo mais aprofundado, percebeu-se que essa classe poderia ser desdobrada em duas outras mais específicas. Daí o nome de especialização. Graficamente, não há diferença entre a generalização e especialização. É praticamente uma questão de ponto de partida da abstração, se as classes foram generalizadas ou foram especializadas. Portanto, a representação gráfica do processo é idêntica. atenção! Observe, no caso da generalização, que as operações de manutenção de dados de usuários são específicas para a classe Administrador. atenção! Se encontrar dificuldades não desanime. Entre em contato com seus colegas de curso e com seu tutor. Eles estarão sempre prontos para ajudar você. Cursos de graduação © Análise e Projeto de Sistemas • • • CRC Batatais – Claretiano 85 UNIDADE 4CURsO: LiCENCiATURA EM COMPUTAÇÃO DisCiPLiNA: ANALisE E PROJETOs DE sisTEMAs AUTOR: WAINE TEIXEIRA JÚNIOR UNiDADE 4 – VERsÃO 1- COPY PREPARAÇÃO: CAMiLA sANTOs REVisÃO: MARiNA APARECiDA BARUFALDi 13 Figura 10 Diagrama de classes do sistema gerenciador de avaliações. 5 Objetos Um diagrama de objetos apresenta um conjunto de objetos e seus relacionamentos em determinado ponto no tempo. Estes diagramas mostram os objetos de um sistema funcionando em uma determinada ocasião temporal. Com isso, temos uma visão estática do projeto ou de um processo do sistema. Vamos fazer uma analogia com um jogo de futebol: são 22 jogadores correndo atrás de uma bola em um campo limitado, seguindo regras estabelecidas. se você congelar a imagem em certo momento do jogo e analisar cada jogador individualmente, você poderá determinar o que cada um está fazendo naquele instante. Perceba que estes jogadores colaboram uns com osoutros, seguindo uma estratégia, para marcar o gol. Tentar visualizar, analisar, construir ou documentar um sistema complexo, é semelhante à situação do jogo de futebol. se tentarmos entender apenas um processo do sistema de forma isolada, podemos perder a visão global, quanto ao modo como as partes do sistema estão organizadas e interagem entre si. Ao contrário disso, é necessário estudar um retrato do objeto, seus vizinhos e seus relacionamentos entre eles. Graficamente, os objetos são diferenciados de suas classes por terem seus nomes sublinhados. Cada objeto tem o nome da seguinte forma: nome da instância: nome da classe. Embora menos importante que o diagrama de classes, o diagrama de objetos pode ajudar a compreender diagramas complexos que não estejam muito claros. Figura 10 Diagrama de classes do sistema gerenciador de avaliações. 5 objetos Um diagrama de objetos apresenta um conjunto de objetos e seus relacionamentos em determinado ponto no tempo. Estes diagramas mostram os objetos de um sistema funcionando em uma determinada ocasião temporal. Com isso, temos uma visão estática do projeto ou de um processo do sistema. Vamos fazer uma analogia com um jogo de futebol: são 22 jogadores correndo atrás de uma bola em um campo limitado, seguindo regras estabelecidas. se você congelar a imagem em certo momento do jogo e analisar cada jogador individualmente, você poderá determinar o que cada um está fazendo naquele instante. Perceba que estes jogadores colaboram uns com os outros, seguindo uma estratégia, para marcar o gol. Tentar visualizar, analisar, construir ou documentar um sistema complexo, é semelhante à situação do jogo de futebol. se tentarmos entender apenas um processo do sistema de forma isolada, podemos perder a visão global, quanto ao modo como as partes do sistema estão organizadas e interagem entre si. Ao contrário disso, é necessário estudar um retrato do objeto, seus vizinhos e seus relacionamentos entre eles. Claretiano – Batatais86 Cursos de graduação CRC • • • © Análise e Projeto de Sistemas UNIDADE 4 Graficamente, os objetos são diferenciados de suas classes por terem seus nomes sublinhados. Cada objeto tem o nome da seguinte forma: nome da instância: nome da classe. Embora menos importante que o diagrama de classes, o diagrama de objetos pode ajudar a compreender diagramas complexos que não estejam muito claros. Para tanto, os diagramas de objetos costumam conter os seguintes elementos: objetos;• vínculos.• Um diagrama de objetos é essencialmente uma instância de um diagrama de classes, portanto, é comum incluir nestes diagramas as classes do sistema que estão por trás de cada instância. CURsO: LiCENCiATURA EM COMPUTAÇÃO DisCiPLiNA: ANALisE E PROJETOs DE sisTEMAs AUTOR: WAINE TEIXEIRA JÚNIOR UNiDADE 4 – VERsÃO 1- COPY PREPARAÇÃO: CAMiLA sANTOs REVisÃO: MARiNA APARECiDA BARUFALDi 14 Para tanto, os diagramas de objetos costumam conter os seguintes elementos: objetos; vínculos. Um diagrama de objetos é essencialmente uma instância de um diagrama de classes, portanto, é comum incluir nestes diagramas as classes do sistema que estão por trás de cada instância. Figura 11 Representação de um diagrama de objetos. Em Booch et al. (2000, p. 197), são apresentadas algumas dicas para modelar uma estrutura de objetos: 1) identifique o mecanismo cuja modelagem você deseja fazer. saiba que um mecanismo representa uma função ou comportamento da parte do sistema cuja modelagem você está realizando, e que é resultante da interação de um conjunto de classes. 2) Para cada mecanismo, identifique as classes e outros mecanismos que participam desta colaboração. Também, identifique os relacionamentos. 3) Analise um único cenário neste mecanismo, congelando-o em um determinado momento. 4) Exponha o estado e os valores dos atributos de cada um destes objetos para compreensão do cenário. Do mesmo modo, exponha os vínculos existentes entre estes objetos. (!) atenção! Adquira o hábito da leitura e da pesquisa. Leia livros, artigos, revistas, pesquise em sites e quando encontrar algo interessante, compartilhe com seus colegas de curso. Lembre-se de que na Educação a Distância sua colaboração é fundamental para o seu aprendizado. (CAixA) INFORMAÇÃO COMPLEMENTAR: Veja algumas dicas e sugestões de um diagrama de objetos bem estruturado: 1) ter o foco voltado para comunicar um único aspecto da visão estática; 2) conter somente aqueles elementos essenciais para compreensão desse aspecto; 3) ter um nome capaz de comunicar seu propósito; 4) distribuir seus elementos para minimizar a ocorrência de linhas cruzadas; 5) possuir anotações e cores para chamar a atenção das características importantes no seu diagrama. (FiM CAixA) (?) para VocÊ refletIr: Esta unidade apresentou um estudo detalhado sobre as classes e os tipos de relacionamentos entre elas. Este estudo é importante porque os diagramas de classe são a base das metodologias orientadas a objetos. Convidamos você a refletir sobre as classes de um software. Em cada estágio de elaboração dos modelos da UML, você deverá, de alguma forma, garantir que fez corretamente. Pense em estratégias que você utilizaria para revisar seus modelos quanto à clareza, correção, completeza e consistência com os requisitos. Figura 11 Representação de um diagrama de objetos. Em Booch et al. (2000, p. 197), são apresentadas algumas dicas para modelar uma estrutura de objetos: 1) identifique o mecanismo cuja modelagem você deseja fazer. saiba que um mecanismo representa uma função ou comportamento da parte do sistema cuja modelagem você está realizando, e que é resultante da interação de um conjunto de classes. 2) Para cada mecanismo, identifique as classes e outros mecanismos que participam desta colaboração. Também, identifique os relacionamentos. 3) Analise um único cenário neste mecanismo, congelando-o em um determinado momento. 4) Exponha o estado e os valores dos atributos de cada um destes objetos para compreensão do cenário. Do mesmo modo, exponha os vínculos existentes entre estes objetos . INFORMAÇÃO COMPLEMENTAR: Veja algumas dicas e sugestões de um diagrama de objetos bem estruturado: ter o foco voltado para comunicar um único aspecto da visão estática;1) conter somente aqueles elementos essenciais para compreensão desse 2) aspecto; ter um nome capaz de comunicar seu propósito;3) distribuir seus elementos para minimizar a ocorrência de linhas cruzadas;4) possuir anotações e cores para chamar a atenção das características 5) importantes no seu diagrama. para VocÊ refletIr: Esta unidade apresentou um estudo detalhado sobre as classes e os tipos de relacionamentos entre elas. Este estudo é importante porque os diagramas de classe são a base das metodologias orientadas a objetos. Convidamos você a refletir sobre as classes de um software. Em cada estágio de elaboração dos modelos da UML, você deverá, de alguma forma, garantir que fez corretamente. Pense em estratégias que você utilizaria para revisar seus modelos quanto à clareza, correção, completeza e consistência com os requisitos. Cursos de graduação © Análise e Projeto de Sistemas • • • CRC Batatais – Claretiano 87 UNIDADE 4 6 consIderações Com o estudo desta unidade você teve a oportunidade de compreender a modelagem dos diagramas mais importantes da Orientação a Objetos: classes e objetos. A modelagem de classes é fundamental para a implementação do software em uma linguagem de programação Orientada a Objetos. Assim, pratique bastante e construa uma base de experiências de modelagem para seu futuro profissional. Resumindo: Domínio do problema é o conjunto de informações específicas ao âmbito de um projeto de software. Os conceitosde classe e objeto são interdependentes, na qual uma classe é um conjunto de objetos que compartilham uma estrutura e um comportamento comum, e um objeto é simplesmente uma instância de uma classe. O paradigma da Orientação a Objetos apresenta alguns conceitos fundamentais: identificação, Classificação, Herança, Polimorfismo e Encapsulamento. Dessa forma, as classes podem se relacionar entre si por meio de diversos tipos de associação. E para concluir, um diagrama de objetos apresenta um conjunto de objetos e seus relacionamentos em determinado ponto no tempo. 7 referÊncIas bIblIográfIcas BOOCH, Grady et al. UML: guia do usuário. Rio de Janeiro: Campus, 2000. FURLAN, J. D. Modelagem de objetos através da UML. são Paulo: Makron Books, 1998. PREssMAN, R. s. Engenharia de software. 6. ed. são Paulo: McGraw-Hill, 2006. atenção! Adquira o hábito da leitura e da pesquisa. Leia livros, artigos, revistas, pesquise em sites e quando encontrar algo interessante, compartilhe com seus colegas de curso. Lembre-se de que na Educação a Distância sua colaboração é fundamental para o seu aprendizado. Anotações