SóProvas


ID
906331
Banca
FCC
Órgão
TRT - 9ª REGIÃO (PR)
Ano
2013
Provas
Disciplina
Engenharia de Software
Assuntos

O diagrama de classes da UML descreve os tipos de objetos presentes no sistema e os vários tipos de relacionamentos estáticos existentes entre eles. Mostram também as propriedades e as operações de uma classe e as restrições que se aplicam à maneira como os objetos estão conectados. Em relação aos termos utilizados no desenho do diagrama de classes, é correto afirmar:

Alternativas
Comentários
  • Comentando as alternativas:

    a) Agregação é uma forma de associação em que um objeto agregado é composto de partes constituintes. O agregado é semanticamente um objeto estendido, tratado como uma unidade em muitas operações, embora fisicamente ele seja composto por vários objetos menores. Por exemplo, um carro consiste em rodas, motor, lataria etc. Carro para motor é uma agregação. (Correta)b) As classes abstratas permitem definir métodos em um local para serem usadas por várias subclasses. Todos os métodos em uma classe abstrata devem ter corpo (não somente a assinatura), mesmo aqueles que serão implementados pelas subclasses. (Não necessariamente todos os métodos de uma classe abstrata devem possuir implementações (corpo)).c) Multiplicidade é uma restrição sobre a cardinalidade de um conjunto. Ela se aplica a associações, porém, não se aplica a atributos. A multiplicidade para uma associação restringe o número de objetos relacionados a determinado objeto. (A multiplicidade pode ser aplicada a atributos).d) A herança múltipla permite que uma superclasse tenha mais de uma subclasse e que essas subclasses herdem todas as características da superclasse. As subclasses, por sua vez, não podem estar associadas a mais de uma superclasse. (Pelo contrário, o conceito de herança múltipla é uma subclasse herdar de mais de uma superclasse).e) Composição é uma forma de associação em que uma parte constituinte pode pertencer a várias classes de montagem. No diagrama de classes a notação para a composição é um pequeno losango vazio ao lado da classe de montagem. (O conceito mostrado é o de agregação).Bons estudos!
  • Qual a fonte .... obrigado.

  • não entendi muito bem para mim o item A é um exemplo de composição, ao meu ver se vc remover um carro não faria sentido ter motor, como se fosse um pedido e itens do pedido, removendo pedido, iria remover junto os itens do pedido.. uma explicação sintetizada a baixo:
    http://imasters.com.br/artigo/18901/uml/uml-composicao-x-agregacao/

  • Típica pegadinha. O item (a) descreve, até o final a agregação e no final dá um exemplo muito duvidoso, que dependendo do ponto de vista pode ser chamado de composição. De fato você pode considerar que um motor pode ser retirado de um carro e usado em outro. Dessa forma o motor existe sem o carro. Mas daí a dizer que um carro existe sem o motor e chamar a relação carro-motor de agregação de agregação é no mínimo maldosa. Matar essa questão só por eliminação mesmo. Os outros ítens estão flagrantemente errados.

    Há, uma polêmica quanto ao item (c), por conta da multiplicidade de atributos, mas ele está correto. Um exemplo simples é imaginar um atributo que seja um array. 

    Exemplo: Classe XPTO com dois atributos privados de multiplicidade 0..5

    - atributo_1: int [0..5]

    - atributo_2: int [0..5]

  • Concordo que o exemplo da letra A é duvidoso e poderíamos considerar a relação Carro-motor como uma Composição, porém temos que lembrar que toda Composição também é uma Agregação. Então se Carro-motor é uma Composição, também é uma agregação.

    Além disso, há erros explícitos em todas as outras alternativas, deixando essa como a única plausível.

    Lembrando os nomes dos relacionamentos:

    -> Associação simples

    -> Agregação, também poder ser chamada de Associação agregada ou Associação por agregação.

    -> Composição, também pode ser chamada de Agregação por composição ou ainda Associação por agregação composta ou ainda Associação agregada composta.

    Todos esses nomes já apareceram em provas.

  • FCC e suas questões tiradas da Wikipédia! #Parabéns


    http://pt.wikipedia.org/wiki/Diagrama_de_classes

  • Herança Múltipla

    A herança múltipla permite que uma classe possua mais de uma superclasse e herde características de todos os seus ancentrais.Isso permite a mesclagem de informações de duas ou mais origens.

  • Não concordo com a alternativa B.

    A questão refere--se à classe abstrata.

    Exemplo de declaração  de um método em uma interface, que será implementado por uma classe concreta:

    void TesteQuestaoErrada(int x , int y)

    Caso, tentássemos criar um método com um corpo,na interface teríamos:

    void TesteQuestaoErrada(int x , int y) {

    //Implemenção de algo, ou não (...)

    }   //Nesse caso já teriamos uma exceção, pois não podemos ter um corpo de método dentro de uma interface.

     

    BOM, o inverso da ánalise é verdadeiro, NÃOOOO podemos ter métodos dentro de uma classe abstrata, apenas com assinaturas.

    class abstract TesteQuestao {

    void TesteQuestaoErrada(int x , int y) //Aqui seria lançada uma exceção. Devido ao metódo não ter um corpo "{ }", mesmo que não existisse sequer alguma implementação.

    }

     

    Por isso, para mim, a assertiva B está CORRETA.

  • A multiplicidade também se aplica aos atributos. Você pode especificar a multiplicidade de um atributo, escrevendo uma expressão adequada entre colchetes logo após o nome do atributo. Ex: portaDoConsole: Porta [2..*]

    UML - Guia do Usuário - Grady Booch, J ames Rumbaugh, Ivar Jacobson - pag. 129