2016-09-20 3 views
0

override 메서드를 사용하여 속성에 설정된 값을 동적으로 추가 할 수 있는지 궁금합니다. 나는 속성에서 값 (점수)을 추가하여 결국 전체 점수를 얻을 수있게하려고합니다.동적으로 속성에서 값 추가

여기 내 코드

public abstract class player 
    { 
     public string nickName { get; set; } 


     public virtual int computeScore() 
     { 
      throw new NotImplementedException(); 
     } 
    } 

public class Bes : player 
    { 
     public int initScore =0; 

     public int score { get; set; } 
     public int ttlScore { get; set; } 


     public override int computeScore() 
     { 
      return this.ttlScore += this.score; 
     } 
    } 
+0

코드에 어떤 문제가 있습니까? 모든 예외 또는 예기치 않은 동작? – Peter

+0

매번 데이터 (bes1.score = 30)를 넣을 때 computeScore에 의해 반환되는 값은 항상 최근에 입력 한 값입니다. 나는 총점을보기를 기대하고 있었다. 3 개의 값을 입력하여 시도해 보았습니다. bes1.score = 10; bes1.score = 20; bes1.score = 30; 총 점수는 30입니다. 내가해야 할 일을 모른다. – KuysChan

+0

당신이해야 할 일은 점수를 할당하는 대신 점수에 추가하는 것입니다. 'bes1.score = bes1.score + 10; '과 비슷합니다. –

답변

0

그것은 당신이 원하는 것인지 의심 스럽다은 좋은 생각이다. 그러나 실제로는, 그것은 정말로 명확하지 않습니다. 무엇을하고 싶은지.

나는 score 속성이 설정 될 때마다 ttlScore 속성에 값을 추가하기를 원하는 모호한 감각을 가지고 있습니다. 그렇다면 확실히 ... 당신은 그렇게 할 수 있지만 끔찍한 생각입니다. 해당 작업을 나타내는 속성을 사용하면 매우 혼란 스러울 수 있습니다. 대신에 메소드가 있어야합니다. AddScore()으로 명명되었으므로 점수를 메서드에 전달할 때마다 누적 합계에 코드가 추가된다는 것이 분명합니다. 예를 들어

, 이런 식으로 뭔가 :

public class Bes : player 
{ 
    public int MostRecentScore { get; private set; } 
    public int TotalScore { get; private set; } 

    public int AddScore(int score) 
    { 
     this.MostRecentScore = score; 
     return this.TotalScore += score; 
    } 
} 

는 그 다음 MostRecentScore 속성이 여전히 TotalScore 속성이 누적 합계를 보여 주지만, 반면 가장 최근의 점수, 반원 분명히 것을 확인했다 어떤 표시됩니다 새로운 점수를보고하려면 AddScore()으로 전화해야하며, 관심있는 두 가지 속성을 모두 업데이트해야합니다.

이 예제에서는 물론 코드 예제의 virtual 부분을 사용하지 않습니다. 사실상 computescore() 메소드가 사실상 가상화 된 이유는 분명치 않으며, 기본 클래스에서 점수를 알고 싶다면 점수가 관련된 속성도 여기에 속하기를 원할 경우 — 일 필요는 없습니다. 회원 중 누구도 virtual — 일 필요가 없으므로 삭제했습니다.

질문에 답변이되지 않는 경우 edit your question을 입력하여 수행하려는 작업이 무엇인지 명확하게 알려주십시오. 코드가하는 일에 대한 자세하고 구체적인 설명과 함께 무엇을 시도했는지 명확하게 보여주는 좋은 결과를 Minimal, Complete, and Verifiable code example에 제공하십시오.

+0

고마워요! :) 솔직히, 나는 정말로 무엇을 물어야할지 모른다. 난 그냥 이런 원칙을 사용하여 점수를 추가해야했습니다. – KuysChan

+0

@KuysChan : _ "이 점수는 oop 원칙을 사용하여 추가해야했습니다."_ 매우 모호한 요구 사항입니다. 학교 과제물인가요? 그렇다면 가장 훌륭한 자료는 교사입니다. 그들은이 운동으로 어떤 개념을 가르치려고하는지 정확하게 알고 있으며, 과제와 그 해결책을 이해하는 데 도움을 줄 수 있습니다. 프로그램이 "OOP 원칙을 사용하여 점수를 추가 할 수있는"다양한 방법이 있습니다. –

+0

예. 어쨌든, 고마워! – KuysChan

관련 문제