「Land」というクラスがあり、それは学校の親クラスです。すべての土地クラスの総人口を含む別の独立したクラス「City」があります。
ポイントはSchoolがCityから情報を引き継ぐことができないのですが、SchoolクラスからCityの情報にアクセスする方法はありますか?
私の試みは 人口情報private City city = new City();
をcity.Population
抽出することでしたが、これはうまくいきませんでした。助言がありますか?
「Land」というクラスがあり、それは学校の親クラスです。すべての土地クラスの総人口を含む別の独立したクラス「City」があります。
ポイントはSchoolがCityから情報を引き継ぐことができないのですが、SchoolクラスからCityの情報にアクセスする方法はありますか?
私の試みは 人口情報private City city = new City();
をcity.Population
抽出することでしたが、これはうまくいきませんでした。助言がありますか?
is-a
あなたは(継承)とhas-a
(構成)を混同しているようです。ASchool
は にありCity
、これはCountry
またはにありLand
ます。これは私にとって賢明なデザインのように見えます:
class Land
{
public string Name { get; private set; }
public Land(string name)
{
this.Name = name;
}
}
class City
{
public string Name { get; private set; }
public Land Land { get; private set; }
public int Population { get; private set; }
public City(string name, int population, Land land)
{
this.Name = name;
this.Population = population;
this.Land = land;
}
}
class School
{
public string Name { get; private set; }
public City City { get; private set; }
public School(string name, City city)
{
this.Name = name;
this.City = city;
}
}
これは次の方法で使用できます。
var land = new Land("Foo");
var city = new City("BarCity", 9001, land);
var school = new School("BazSchool", city);
これで、学校がある都市の人口に でアクセスできますschool.City.Population
。
ご覧のとおり、Name
プロパティを含む 3 つのクラスができました。これを新しい (抽象) クラス (たとえば ) に抽出し、NamedEntity
他の 3 つのクラスすべてがこのクラスから、それぞれのis-a
名前付きエンティティとして継承できるようにすることができます。
しかし、コメントからわかるように、この質問は、これらの原則を教えることを目的としたプログラミングの課題から提起されました。しかし、あなたはこれを学ぶ時間がないと主張しています。次のプログラミングの割り当てをどのように完了する予定ですか?