is-a
(상속)과 has-a
(구성)을 혼동하는 것 같습니다. A School
은 Country
또는 Land
에있는 City
에 있습니다. 이것은 나에게 감각적 인 디자인과 같을 것이다 : 당신은이를 통해 사용할 수 있습니다
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
속성을 포함하는 세 가지 클래스가 있습니다. 이를 새로운 (추상) 클래스, 예를 들어 NamedEntity
으로 추출 할 수 있으며, 다른 하나의 클래스는 모두 is-a
이라는 이름의 엔티티로서이 클래스에서 상속받습니다.
그러나이 의견은 프로그래밍 원칙에서 제기되었으므로 이러한 원칙을 가르쳐줍니다. 그러나 당신은 이것을 배울 시간이 없다고 주장합니다. 다음 프로그래밍 과제를 어떻게 마무리 할 계획입니까?
구체적인 정보는 전체적으로 클래스에 속하지 않지만 해당 클래스의 _ 인스턴스 _에 속합니다. City 클래스는 "Population"속성을 가질 수 있지만 어떤 값을 "보편적으로"알 수는 없습니다. 시의 인스턴스는 1,000,000의 인구를 가질 수 있고 다른 인스턴스는 3,000,000의 인구를 가질 수 있습니다. 이 사실을 알고 있습니까? 당신은 당신의 질문을 읽은 후에도 그렇게 보이지 않습니다. 나는 당신이이 개념들을 잘 배울 수있는 기본적인 프로그래밍 책을 읽는 것을 제안한다. –
예, 동의하지만, 불행히도 지금은 할 일이 없습니다. 너를 도울 수 있으면 정말 고마워,이 과제는 5 시간 안에 끝날거야. "City"클래스의 인구를 보유하는 변수는 Public입니다. 이것이 도움이된다면. – algoBaller
할 수 없습니다. 수업과 실례의 차이점을 완전히 이해하고 지식을 반영하는 방식으로 질문의 문안을 수정하는 것이 그 전제 조건입니다. 그것이 그대로 의미있는 대답을 줄 수는 없습니다. –