1

OOP の概念 (抽象化、カプセル化、継承、ポリモーフィズム) は初めてです。

サブクラス (サッカー、ラグビー、クリケット、ボクシング、スヌーカーなど) を持つことができる Sport などの SPORTS の例を使用して、誰かが OOP を説明してください。

また、アスリート管理システムの基本構造は何でしょうか。

どんな助けでも大歓迎です。

どうもありがとう。

4

1 に答える 1

4

これは非常に一般的な質問であり、正確に答えるのは簡単ではありませんが、少なくとも継承とポリモーフィズムについてのアイデアを得ることができれば幸いです。

  • 実際、すべてのスポーツ (概念) はSport(クラス) のインスタンスです。これは、クラスFootballBoxingなどはすべてクラス から継承することを意味しSportます。
  • で実行できることは、実際にはスポーツであるため、Sportのどのサブクラスでも実行できます。Sportたとえば、Cheer()Score()、およびwin()が でメソッドとして定義されている場合、Sport各サブクラスもこれらを実行できます。これが継承です。
  • ただし、スポーツごとに得点方法が異なる場合があります。その場合、 からのメソッドをオーバーライドしSport、独自のロジックを提供できます。ただし、. Score()_ これがポリモーフィズムです!SportSport
  • 応援することと勝つことは、すべてのスポーツで同じ概念かもしれないので、単に継承することができます。Sport

簡単な疑似コードの例。これはかなりばかげているかもしれません (スポーツ用語では技術的にも正しくないかもしれませんが、要点を理解していただければ幸いです:))

public class Sport{

    public function score(){ 
        print("Scored!");
    }

    public function Win(){
        print("Won!");
    }

    public function Cheer(){
        print("Cheeeeeeeeer!!!");
    }
}

public class Soccer Inherits Sport{
    public override function score(){
        print("One goal!");
    }
}

public class Boxing Inherits Sport{
    public override function score(){
        print("Knockout!");
    }
}


// Using the classes:
Sport generalSport = new Sport(); // generalSport is just a non-specific sport
Sport soccerSport = new Soccer(); // soccerSport is a Soccer, but also a Sport!
Sport boxingSport = new Boxing(); // boxingSport is a Boxing, but also a Sport!

generalSport.Win(); // This should output: "Won!" (from Sport)
soccerSport.Win(); // ... "Cheeeeeeeeer!!!" (inherited from Sport)
boxingSport.Cheer() // ... "Cheeeeeeeeer!!!" (inherited from Sport)

generalSport.score(); // "Scored!"
soccerSport.score(); // "One Goal", since it was overridden in Soccer
boxingSport.score() // "Knockout!", since overridden in Boxing

ヒント: 実生活で「ある」ものを考えてみてください。X が Y を継承する場合、X は具体的に X として定義できますが、それでも Y であり、そのように扱うことができます (いくつかの追加プロパティを追加する可能性がある場合のみ)。

于 2013-01-04T15:49:58.800 に答える