Preview only show first 10 pages with watermark. For full document please download

Engenharia De Software - Aula 6

Engenharia de software Luís A. Alexandre UBI, 25 de Fevereiro de 2008

   EMBED


Share

Transcript

Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Engenharia de software Lu´ıs A. Alexandre UBI, 14 de Abril de 2008 Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Conte´udo I Classes. I Rela¸c˜oes. I Coment´arios. Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Classes Atributos Opera¸c˜ oes Contexto Classes I Elemento mais importante num sistema OO. ´ uma descri¸c˜ao de um conjunto de objectos que partilham os E mesmos atributos, opera¸c˜ oes e rela¸c˜ oes. I Uma classe implementa um ou mais interfaces. I As classes podem representar objectos de software (janela, bot˜ao), objectos de hardware (sensor, interruptor) ou entidades puramente abstractas (forma bidimensional). I Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Classes Atributos Opera¸c˜ oes Contexto Representa¸c˜ao das classes I Em UML a representa¸c˜ao de uma classe pode ser feita a diferentes n´ıveis: o mais simples consiste em representar apenas o nome da classe. NomeDaClasse I Os nomes das classes devem come¸car por mai´ usculas e quando s˜ao compostos por mais de uma palavra, a primeira letra de cada palavra deve ser mai´ uscula. Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Classes Atributos Opera¸c˜ oes Contexto Representa¸c˜ao dos atributos I I Os atributos representam-se por baixo do nome da classe. Pode apenas ser escrito o nome de um atributo ou pode ser colocada tamb´em informa¸c˜ao relativa ao seu tipo. Cliente nome : String morada : String numeroTelefone : long I Os nomes dos atributos devem come¸car por min´ usculas e quando s˜ao compostos por mais de uma palavra, a primeira letra de cada palavra deve ser mai´ uscula (exceptuando a primeira). Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Classes Atributos Opera¸c˜ oes Contexto Representa¸c˜ao das opera¸c˜oes I I As opera¸c˜oes representam-se por baixo dos atributos. Pode apenas ser escrito o nome da opera¸c˜ao ou pode ser colocada tamb´em informa¸c˜ao relativa ao tipo de dados que devolve, ou pode ainda ser colocada informa¸c˜ao relativa aos parˆametros que recebe e seus tipos. Cliente nome : String morada : String numeroTelefone : long getNome() : String setNome(novoNome : String) : void I Os nomes das opera¸c˜ oes seguem as mesmas regras dos nomes dos atributos. Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Classes Atributos Opera¸c˜ oes Contexto Representa¸c˜ao dependente do contexto I A forma usada para representar as classes depende do seu fim. Se estivermos numa fase de an´alise ent˜ao deve ser usada uma representa¸c˜ao simplificada: I Na fase de desenho devem ser inclu´ıdos mais detalhes: Cliente nome : String morada : String numeroTelefone : long Cliente getNome() : String setNome(novoNome : String) : void Cliente Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes entre classes de dependˆ encia de generaliza¸c˜ ao de associa¸c˜ ao de associa¸c˜ ao: nome de associa¸c˜ ao: papel de associa¸c˜ ao: multiplicidade de associa¸c˜ ao: agrega¸c˜ ao Rela¸c˜oes entre classes I As classes est˜ao relacionadas usando as rela¸c˜oes que j´a estud´amos para os casos de uso: dependˆencia, associa¸c˜ao e generaliza¸c˜ao. Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes entre classes de dependˆ encia de generaliza¸c˜ ao de associa¸c˜ ao de associa¸c˜ ao: nome de associa¸c˜ ao: papel de associa¸c˜ ao: multiplicidade de associa¸c˜ ao: agrega¸c˜ ao Rela¸c˜oes de dependˆencia I A rela¸c˜ao de dependˆencia indica que uma classe usa a outra. I Esta rela¸c˜ao ´e normalmente usada quando uma classe ´e usada como argumento numa opera¸c˜ao de outra classe. Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes entre classes de dependˆ encia de generaliza¸c˜ ao de associa¸c˜ ao de associa¸c˜ ao: nome de associa¸c˜ ao: papel de associa¸c˜ ao: multiplicidade de associa¸c˜ ao: agrega¸c˜ ao Rela¸c˜oes de generaliza¸c˜ao I A generaliza¸c˜ao ´e uma rela¸c˜ao entre uma classe geral (a super-classe ou pai) e uma ou mais classes mais espec´ıficas (sub-classes ou filhos). I As classes filho herdam todos os atributos e opera¸c˜oes da classe pai e podem ter mais atributos e opera¸c˜oes que aqueles que herdam. I Se uma opera¸c˜ao num filho tem o mesmo nome da do pai est´a a fazer um override `a do pai. I Exemplo geom´etrico: forma, pol´ıgono, rectˆangulo, quadrado, elipse, circunferˆencia, triˆangulo. Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes entre classes de dependˆ encia de generaliza¸c˜ ao de associa¸c˜ ao de associa¸c˜ ao: nome de associa¸c˜ ao: papel de associa¸c˜ ao: multiplicidade de associa¸c˜ ao: agrega¸c˜ ao Rela¸c˜oes de generaliza¸c˜ao Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes entre classes de dependˆ encia de generaliza¸c˜ ao de associa¸c˜ ao de associa¸c˜ ao: nome de associa¸c˜ ao: papel de associa¸c˜ ao: multiplicidade de associa¸c˜ ao: agrega¸c˜ ao Rela¸c˜oes de associa¸c˜ao I I A associa¸c˜ao ´e uma rela¸c˜ao estrutural entre duas classes. ´ poss´ıvel ter ambas as termina¸c˜ E oes duma associa¸c˜ao na mesma classe: significa que podemos ligar v´arios objectos da mesma classe uns aos outros. I Uma rela¸c˜ao apenas entre duas entidades diz-se bin´aria. I Podem existir rela¸c˜ oes n-´arias. I As rela¸c˜oes de associa¸c˜ao podem ser complementadas por 4 tipos de adornos: nome, papel, multiplicidade e agrega¸c˜ao. Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes entre classes de dependˆ encia de generaliza¸c˜ ao de associa¸c˜ ao de associa¸c˜ ao: nome de associa¸c˜ ao: papel de associa¸c˜ ao: multiplicidade de associa¸c˜ ao: agrega¸c˜ ao Nome I ´ poss´ıvel atribuir um nome a uma associa¸c˜ao para descrever E a natureza da associa¸c˜ao. I Por vezes usa-se uma seta ao lado do nome a indicar em que sentido funciona o nome da associa¸c˜ao: no caso acima poderia ter uma seta da esquerda para a direita. Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes entre classes de dependˆ encia de generaliza¸c˜ ao de associa¸c˜ ao de associa¸c˜ ao: nome de associa¸c˜ ao: papel de associa¸c˜ ao: multiplicidade de associa¸c˜ ao: agrega¸c˜ ao Papel I Quando uma classe participa numa associa¸c˜ao representa um determinado papel. O nome desse papel pode ser colocado explicitamente junto da classe onde a linha da associa¸c˜ao termina. I De notar que uma mesma classe pode representar pap´eis diferentes em associa¸c˜ oes diferentes (a ”Pessoa”pode tamb´em representar o papel de um contribuinte para o estado). Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes entre classes de dependˆ encia de generaliza¸c˜ ao de associa¸c˜ ao de associa¸c˜ ao: nome de associa¸c˜ ao: papel de associa¸c˜ ao: multiplicidade de associa¸c˜ ao: agrega¸c˜ ao Multiplicidade I Pode ser indicada a multiplicidade na rela¸c˜ao de associa¸c˜ao. I A falta de indica¸c˜ao significa que n˜ao foi definida (n˜ao existe nenhum valor atribu´ıdo). I Podem ser combinados v´arios s´ımbolos numa lista (cada s´ımbolo separado por v´ırgula do seguinte): 1..3,5 I Exemplo: edif´ıcio, telhado, chamin´e, porta. Lu´ıs A. Alexandre S´ımbolo 0..1 1 0..∗ 1..∗ n 0..n 1..n n..m n..∗ Significado Zero ou um Apenas um Zero ou mais Um ou mais Apenas n (n> 1) Zero a n (n>1) Um a n (n>1) n a m (n>1,m>n) n ou mais (n>1) Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes entre classes de dependˆ encia de generaliza¸c˜ ao de associa¸c˜ ao de associa¸c˜ ao: nome de associa¸c˜ ao: papel de associa¸c˜ ao: multiplicidade de associa¸c˜ ao: agrega¸c˜ ao Multiplicidade: exemplo Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes Rela¸c˜ oes entre classes de dependˆ encia de generaliza¸c˜ ao de associa¸c˜ ao de associa¸c˜ ao: nome de associa¸c˜ ao: papel de associa¸c˜ ao: multiplicidade de associa¸c˜ ao: agrega¸c˜ ao Agrega¸c˜ao I I Quando queremos representar uma rela¸c˜ao do tipo ”todo/parte”, ou seja, em que as classes n˜ao se encontram ao mesmo n´ıvel e uma delas (o ”todo”) ´e constitu´ıda por v´arias ”partes”, ´e usada a agrega¸c˜ao. ´ uma rela¸c˜ao do tipo ”tem”: E objectos do tipo ”todo” tˆem objectos do tipo ”parte”. Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Coment´arios I Qualquer diagrama UML pode receber um coment´ario (ou nota). I Um coment´ario serve para tornar mais expl´ıcito algum ponto do diagrama. I N˜ao alteram o significado do que est´a representado! Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Leituras complementares Question´ ario Leituras complementares I Booch: cap. 4, 5, 8 I Fowler: cap. 4 I Nunes: sec. 3.1 Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Leituras complementares Question´ ario Question´ario 1. O que significa a indica¸c˜ao 0..1, 3..4, 6..* sobre uma liga¸c˜ao de associa¸c˜ao ? 2. Represente num diagrama de classes a rela¸c˜ao entre a classe que representa os professores e a que representa as disciplinas, considerando que cada disciplina tem de ter pelo menos um docente e que cada docente lecciona pelo menos uma disciplina. 3. Modifique o diagrama anterior para representar o facto de poderem existir disciplinas em que n˜ao existe nenhum docente atribu´ıdo (n˜ao funcionam). 4. Modifique o diagrama anterior para representar o facto de uma disciplina poder ser leccionada no m´aximo por 2 docentes. Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Leituras complementares Question´ ario Question´ario 5. Modifique o diagrama anterior para representar o facto de um departamento ser constitu´ıdo por professores e ser respons´avel por disciplinas. 6. Modifique o diagrama anterior para representar os alunos. Estes podem frequentar uma ou mais disciplinas. 7. Modifique o diagrama anterior para representar a classe faculdade. Os alunos est˜ao inscritos numa s´ o faculdade que pode ter qualquer n´ umero de alunos e ´e constitu´ıda por departamentos. Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Leituras complementares Question´ ario Question´ario 8. Modifique o diagrama de forma a que possam existir disciplinas sem alunos inscritos. 9. Modifique o diagrama de forma a que possam existir professores que sejam presidentes de departamentos. 10. Modifique o diagrama para que possam existir professores que n˜ao leccionam disciplinas. Lu´ıs A. Alexandre Engenharia de software Classes Rela¸c˜ oes Coment´ arios Conclus˜ ao Leituras complementares Question´ ario Question´ario 11. Olhando apenas para o diagrama final, escreva toda a informa¸c˜ao que retira dele. Lu´ıs A. Alexandre Engenharia de software