Difference between revisions of "Problema das moléculas da vida"

From AdonaiMedrado.Pro.Br
Jump to: navigation, search
(New page: == Dificuldade única == Crie uma classe abstrata de nome '''AcidoNucleico''' que deverá ter os elementos membros: *BasesNitrogenadas - propriedade pública de leitura e escrita do tipo s...)
 
(Dificuldade única)
 
(2 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
*BasesNitrogenadas - propriedade pública de leitura e escrita do tipo string.
 
*BasesNitrogenadas - propriedade pública de leitura e escrita do tipo string.
 
*Acucar - propriedade pública abstrata, somente leitura, do tipo string.
 
*Acucar - propriedade pública abstrata, somente leitura, do tipo string.
*AdicionarBase - método público abstrato sem retorno que receberá uma char como parâmetro.
+
*AdicionarBase - método público abstrato sem retorno que receberá um char como parâmetro.
  
 
Herde da classe '''AcidoNucleico''' duas classes '''Helice''' e '''Rna'''.
 
Herde da classe '''AcidoNucleico''' duas classes '''Helice''' e '''Rna'''.
Line 15: Line 15:
 
*Acucar: deve-se retornar a string "desoxirribose".
 
*Acucar: deve-se retornar a string "desoxirribose".
  
A classe '''Helice''' deve implementar também um método público de nome '''GerarIrma''' que não receberá parâmetros, mas retornará uma objeto do tipo '''Helice'''. O comportamento deste método deve ser como o que se segue:
+
A classe '''Helice''' deve implementar também um método público de nome '''GerarIrma''' que não receberá parâmetros, mas retornará um objeto do tipo '''Helice'''. O comportamento deste método deve ser como o que se segue:
 
*Instanciar um objeto '''Helice'''.
 
*Instanciar um objeto '''Helice'''.
*Para cada caractere em this.BasesNitrogenadas chamar o método AdicionarBase do novo objeto criado substituindo 'G' por 'C', 'C' por 'G', 'T' por 'A' e 'A' por 'T'.
+
*Para cada caractere em this.BasesNitrogenadas, chamar o método AdicionarBase do novo objeto criado substituindo 'G' por 'C', 'C' por 'G', 'T' por 'A' e 'A' por 'T'.
*Retornar o objeto '''Helice'''. (Deve-se começar o processamento do primeiro caractere e seguir um por um até o último). Assim, se this.BasesNitrogenadas for 'GCTA' o objeto retornado terá BasesNitrogenadas igual a 'CGAT'.
+
*Retornar o objeto '''Helice''' instanciado inicialmente. (Deve-se começar o processamento do primeiro caractere e seguir um por um até o último). Assim, se this.BasesNitrogenadas for 'GCTA' o objeto retornado terá BasesNitrogenadas igual a 'CGAT'.
  
 
Crie uma classe '''Programa''' com o ''entry point'' (o método Main) que execute os seguintes procedimentos:
 
Crie uma classe '''Programa''' com o ''entry point'' (o método Main) que execute os seguintes procedimentos:
Line 26: Line 26:
 
*Imprima no console as bases nitrogenadas da "irmã" através da chamada <objeto_helice>.GerarIrma().BasesNitrogenadas.
 
*Imprima no console as bases nitrogenadas da "irmã" através da chamada <objeto_helice>.GerarIrma().BasesNitrogenadas.
  
Caso o usuário informe uma base inválida deve ser informada uma mensagem a escolha e solicitado um novo dado (o programa não deve encerrar no caso de um erro).
+
Caso o usuário informe uma base inválida deve ser informada a mensagem gerada pela exceção e solicitado um novo dado (o programa não deve encerrar no caso de um erro).
  
 
Caso seja necessário crie outros elementos membros necessários, bem como construtores padrões e campos.
 
Caso seja necessário crie outros elementos membros necessários, bem como construtores padrões e campos.
  
Todas as classes devem pertencer ao espaço de nome (namespace) Lac.Prova1.Questao3.
+
'''Todas as classes devem pertencer ao espaço de nome (namespace) Lac.Prova1.Questao3'''.
 +
 
 +
'''Não imprima mensagens instruindo ao usuário o que fazer ou outra informação qualquer não solicitada'''.
 +
 
 +
== Exemplo ==
 +
G
 +
U
 +
A
 +
C
 +
T
 +
Base inválida. Deve ser guanina (G), citosina (C), uracila (U) ou adenina (A).
 +
G
 +
A
 +
A
 +
C
 +
C
 +
T
 +
Base inválida. Deve ser guanina (G), citosina (C), uracila (U) ou adenina (A).
 +
X
 +
Base inválida. Deve ser guanina (G), citosina (C), uracila (U) ou adenina (A).
 +
U
 +
GUACGAACCU
 +
A
 +
T
 +
C
 +
G
 +
A
 +
A
 +
U
 +
Base inválida. Deve ser guanina (G), citosina (C), timina (T) ou adenina (A).
 +
M
 +
Base inválida. Deve ser guanina (G), citosina (C), timina (T) ou adenina (A).
 +
A
 +
T
 +
T
 +
A
 +
TAGCTTTAAT

Latest revision as of 23:19, 14 April 2009

Dificuldade única

Crie uma classe abstrata de nome AcidoNucleico que deverá ter os elementos membros:

  • BasesNitrogenadas - propriedade pública de leitura e escrita do tipo string.
  • Acucar - propriedade pública abstrata, somente leitura, do tipo string.
  • AdicionarBase - método público abstrato sem retorno que receberá um char como parâmetro.

Herde da classe AcidoNucleico duas classes Helice e Rna.

A classe Rna deverá implementar o método AdicionarBase e a propriedade Acucar da seguinte forma:

  • AdicionarBase: caso o parâmetro char seja um 'G', 'C', 'U' ou 'A' ele deverá ser concatenado à propriedade BasesNitrogenadas, caso contrário uma exceção InvalidOperationException deve ser lançada com a mensagem "Base inválida. Deve ser guanina (G), citosina (C), uracila (U) ou adenina (A)".
  • Acucar: deve-se retornar a string "ribose".

A classe Helice deverá implementar o método AdicionarBase e a propriedade Acucar da seguinte forma:

  • Caso o parâmetro char seja um 'G', 'C', 'T' ou 'A' ele deverá ser concatenado à propriedade BasesNitrogenadas, caso contrário uma exceção InvalidOperationException deve ser lançada com a mensagem "Base inválida. Deve ser guanina (G), citosina (C), timina (T) ou adenina (A)".
  • Acucar: deve-se retornar a string "desoxirribose".

A classe Helice deve implementar também um método público de nome GerarIrma que não receberá parâmetros, mas retornará um objeto do tipo Helice. O comportamento deste método deve ser como o que se segue:

  • Instanciar um objeto Helice.
  • Para cada caractere em this.BasesNitrogenadas, chamar o método AdicionarBase do novo objeto criado substituindo 'G' por 'C', 'C' por 'G', 'T' por 'A' e 'A' por 'T'.
  • Retornar o objeto Helice instanciado inicialmente. (Deve-se começar o processamento do primeiro caractere e seguir um por um até o último). Assim, se this.BasesNitrogenadas for 'GCTA' o objeto retornado terá BasesNitrogenadas igual a 'CGAT'.

Crie uma classe Programa com o entry point (o método Main) que execute os seguintes procedimentos:

  • Solicite do usuário e adicione 10 bases a uma objeto Rna utilizando o método AdicionarBase.
  • Imprima no console as bases nitrogenadas de Rna.
  • Solicite do usuário e adicione 10 bases a uma objeto Helice utilizando o método AdicionarBase.
  • Imprima no console as bases nitrogenadas da "irmã" através da chamada <objeto_helice>.GerarIrma().BasesNitrogenadas.

Caso o usuário informe uma base inválida deve ser informada a mensagem gerada pela exceção e solicitado um novo dado (o programa não deve encerrar no caso de um erro).

Caso seja necessário crie outros elementos membros necessários, bem como construtores padrões e campos.

Todas as classes devem pertencer ao espaço de nome (namespace) Lac.Prova1.Questao3.

Não imprima mensagens instruindo ao usuário o que fazer ou outra informação qualquer não solicitada.

Exemplo

G
U
A
C
T
Base inválida. Deve ser guanina (G), citosina (C), uracila (U) ou adenina (A).
G
A
A
C
C
T
Base inválida. Deve ser guanina (G), citosina (C), uracila (U) ou adenina (A).
X
Base inválida. Deve ser guanina (G), citosina (C), uracila (U) ou adenina (A).
U
GUACGAACCU
A
T
C
G
A
A
U
Base inválida. Deve ser guanina (G), citosina (C), timina (T) ou adenina (A).
M
Base inválida. Deve ser guanina (G), citosina (C), timina (T) ou adenina (A).
A
T
T
A
TAGCTTTAAT