Diagrama UML duvidas teoricas

10 respostas
Shponja

Pessoal é o seguinte, num trabalho que tenho de fazer apareceram umas perguntas teóricas e como eu estudo por um livro em ingles ta dificil de responder correctamente à teoria.
Ja respondi a quase todas as questões que vou mostrar mas duvido que esteja certo e como já me ajudaram aqui varias vezes queria saber se alguém me pode ajudar.

1. Complete as seguintes frases:

1.1. Através do diagrama anterior, verifica-se que a classe B _________________ da classe A.

1.2. Em Java, essa intenção é explicitada, colocando a palavra reservada _________________ a seguir ao nome
da classe.

1.3. Podemos afirmar que todos os objectos do tipo B são do tipo___________ e do tipo __________ mas que
nem todos do tipo B são do tipo________________.

2. Complete as seguintes frases de forma a serem verdadeiras:

2.1. Os métodos da classe D não podem chamar o método op3 porque …

2.2. O troço de código E a = new B(); origina um erro de execução porque…

2.3. O troço de código E a = new D(); a.op1(); origina um erro de execução porque …

2.4. O troço de código : A d = new D(); d.op5(); origina um erro de execução porque …

2.5. A definição da classe C é incorrecta porque…

3. Corrija as seguintes frases de forma a serem verdadeiras, justificando a correcção:

3.1. A classe B pode ser definida da forma public class B extends A, E { … }.

3.2. Uma classe abstracta só pode conter métodos abstractos.

3.3. Uma classe que implemente uma interface tem de implementar todos os métodos nela declarados.

3.4. O construtor de uma classe só pode ter acessibilidade pública.

10 Respostas

rodrigo.bossini

Poxa…só faltou pedir pra gente convencer seu professor a te dar um 10…

Se o problema é o inglês…não faltam outras alternativas…como <a href"http://www.guj.com.br/content/articles/uml/guj_uml_java.pdf">essa. E essa.

Shponja

Tal como eu disse eu ja respondi e só preciso de ajuda porque duvido que a maioria das respostas esteja correcta ou com linguagem correcta de programação. Se não acredita ou se não vem ajudar mais vale estar calado :wink:
Se estou a perguntar é porque quero aprender e o forum é para isso mesmo, tal como ja me ajudaram antes.

Shponja

A minha resposta ao exercicio 1:

  1. Complete as seguintes frases:

1.1. Através do diagrama anterior, verifica-se que a classe B é subclasse/herda da classe A.

1.2. Em Java, essa intenção é explicitada, colocando a palavra reservada extends a seguir ao nome
da classe.

1.3. Podemos afirmar que todos os objectos do tipo B são do tipo D e do tipo E mas que
nem todos do tipo B são do tipo A.

Tenho muitas duvidas na 1.3 porque a meu ver todos os objectos do tipo B sao do tipo A.
Se alguém me puder corrigir e explicar agradecia.
Abraço

tnaires

Pelo diagrama, é claro que os objetos do tipo B são dos tipos A e E, mas nem todos do tipo B são do tipo D.

Filipe_A

vc postou:

2.1. Os métodos da classe D não podem chamar o método op3 porque …

Bom, não tenho muita certeza mais ai vai:

os metodos com (-) ex: - op3() - são privados e só podem ser acessados dentro propria classe.

os metodos com (#) ex # op2() - são do tipo protected e são acessados pelas subclasses e classes no mesmo pacote.

os metodos com (+) ex: + op1() - são publicos e podem ser acessados por suas referencias nas demais classes.

Espero ter Ajudado, se escrevi algo errado o pessoal do GUJ por favor corrijam :smiley:

Ate+

Shponja

obrigado ao tnaires por me esclarecer a duvida do 1.3
Eu pensei ser isso mas nao sei porque todos os objectos do tipo B são do tipo E, se alguém me puder explicar isso agradecia.

Obrigado também ao Filipe A. por responder à 2.1
Sei os métodos públicos e privados mas por acaso desconhecia os protected.
peço uma explicação para a 2.2 2.3 e 2.4 pois nao compreendo mesmo e a 2.5 penso que a classe c é incorrecta porque apresenta o método op1 como sendo privado enquanto que na classe A é publico e a classe C herda da classe A.

Peço também desculpa se não me sei explicar bem mas como já disse estudo por livros em inglês na faculdade então não sei os termos correctos.
Obrigado

tnaires

Shponja:
obrigado ao tnaires por me esclarecer a duvida do 1.3
Eu pensei ser isso mas nao sei porque todos os objectos do tipo B são do tipo E, se alguém me puder explicar isso agradecia.

Segundo o diagrama, objetos B são do tipo E porque B implementa a interface E. Herança e interfaces são duas formas de expressar um relacionamento É-UM em Java - e em outras linguagens também, como o Object Pascal ( sim, tem interfaces! ) e o C#.

Sabendo disso, você poderá responder as questões 2.2, 2.3 e 2.4.

rodrigo.bossini

Shponja:
Tal como eu disse eu ja respondi e só preciso de ajuda porque duvido que a maioria das respostas esteja correcta ou com linguagem correcta de programação. Se não acredita ou se não vem ajudar mais vale estar calado :wink:
Se estou a perguntar é porque quero aprender e o forum é para isso mesmo, tal como ja me ajudaram antes.

Estudar ninguém quer não…

Shponja

rod.attack:
Shponja:
Tal como eu disse eu ja respondi e só preciso de ajuda porque duvido que a maioria das respostas esteja correcta ou com linguagem correcta de programação. Se não acredita ou se não vem ajudar mais vale estar calado :wink:
Se estou a perguntar é porque quero aprender e o forum é para isso mesmo, tal como ja me ajudaram antes.

Estudar ninguém quer não…

Para de ser parvo e chato. Ao estudar surgem duvidas, duvidas essas que sao postas aqui. Nem toda a gente pode tirar duvidas com professores ou amigos. Mais uma vez te digo, se nao vens ajudar escusas de chatear.

Vou agora fazer o resto do exercicio 2 que ainda nao tinha conseguido e mais logo posto tambem o 3. Se alguem me puder corrigilos agradeço.
Mais uma vez obrigado

Shponja

2. Complete as seguintes frases de forma a serem verdadeiras:

2.1. Os métodos da classe D não podem chamar o método op3 porque … é um método privado da classe A.

2.2. O troço de código E a = new B(); origina um erro de execução porque… a classe E é um interface implementado pela classe B logo não é possivel num interface criar objectos.

2.3. O troço de código E a = new D(); a.op1(); origina um erro de execução porque … Dei a mesma resposta da pergunta 2.2

2.4. O troço de código : A d = new D(); d.op5(); origina um erro de execução porque … Não sei justificar o erro e gostava que alguém me explica-se mas penso que o possivel seria o contrario, ou seja: D d= new A(); d.op1();

2.5. A definição da classe C é incorrecta porque… a classe C herda da classe A, esta ultima existe o método op1() como sendo publico e na classe C é definido como privado.

3. Corrija as seguintes frases de forma a serem verdadeiras, justificando a correcção:

3.1. A classe B pode ser definida da forma public class B extends A, E { … }.

A classe B pode ser definida da forma public class B extends A implements E

3.2. Uma classe abstracta só pode conter métodos abstractos.

Uma classe abstracta pode conter métodos de vários tipos.

3.3. Uma classe que implemente uma interface tem de implementar todos os métodos nela declarados.

Uma classe que implemente uma interface não necessita implementar todos os métodos declarados nessa interface pois ela pode ser implementada por várias outras classes que implementam os restantes métodos ou até outra versão dos mesmos métodos.

3.4. O construtor de uma classe só pode ter acessibilidade pública.

O construtor de uma classe pode ter acessibilidade pública e private. (??)
Ao pesquisar na net encontrei construtores private mas não compreendo para que serviria um construtor privado.

Se alguém me puder corrigir as respostas e tirar as dúvidas que permanecem agradeço.
Cumprimentos e obrigado

Criado 17 de abril de 2009
Ultima resposta 19 de abr. de 2009
Respostas 10
Participantes 4