OOP 측면에서 올바른 방식으로 프로젝트에 접근하고 있는지 궁금합니다. 내 프로젝트는 C#의 Windows 콘솔 응용 프로그램으로 구성됩니다. 응용 프로그램의 요점은 사용자 입력을 받아 SQL 쿼리로 변환하고 연결 데이터베이스를 쿼리 한 다음 사용자가 요청한 판독기 친화적 인 형식으로 정보를 추출하는 것입니다. 지금은 다음의 3 종류가 있습니다OOP의 전통적 의미와 관련이없는 클래스의 상속
클래스 : commandLineInterpreter는 사용자가 이용할 수있는 sqlQueries
명령 출력이 클래스의 지문을 확장합니다. 또한 사용자 입력이 필요합니다.
클래스 : sqlQueries는 dbConnect
이 클래스는 사용자가 inputing 내용에 따라 데이터베이스를 조회 할 SQL 쿼리를 보유를 확장합니다.
클래스 : dbConnect 이 클래스는 데이터베이스 연결을 초기화하고 성공했는지 여부를 나타내는 메시지를 인쇄합니다.
나는 db connect 클래스를 확장 한 SQL 쿼리 클래스를 확장하는 commandlineInterpreter 클래스가 있습니다.
main() 함수에서 명령 행 클래스를 초기화 할 때 자동으로 다른 확장 클래스도 intitlizes. DB에 연결하지 않고 커맨드 라인 인터프리터가 아무 대답도하지 못하기 때문에 나는 이것을했다.
내 질문에, 비록 이러한 클래스가 OOP의 상속 의미와 관련이 없어도 클래스 상속을 이런 방식으로 수행하는 것이 좋습니다. 또는 내 코드를 구성하는 더 좋은 방법이 있습니까?
관계 유형의 연관성은 어떻습니까? – john
다릅니다. 클래스 A가 실제로 B 유형의 인스턴스를 소유하고 수명을 관리하는 경우 A는 일반적으로 B의 인스턴스를 생성자에 작성하고이를 private 읽기 전용 속성에 지정합니다. 그러나 클래스 간의 '디자인 타임 관계'가 어떻게 프로그래밍되어야하는지에 대한 구체적인 규칙은 없습니다. 이것은 모두 인스턴스 수명, 인스턴스의 성능/처리, 인스턴스의 소유권, 다른 시점의 정보 가용성 등과 같은 요구 사항에 매우 의존합니다. –