«object-oriented-design» 태그된 질문

객체 지향 디자인은 소프트웨어 문제를 해결하기 위해 객체 상호 작용 시스템을 계획하는 프로세스입니다.

3
실제로 열린 원칙을 고수하는 방법
공개 원칙의 의도를 이해합니다. 수정하지 않고 확장하도록 지시함으로써 수정하는 동안 이미 작동하는 것을 깨뜨릴 위험을 줄입니다. 그러나이 원칙이 실제로 어떻게 적용되는지 이해하는 데 어려움이있었습니다. 내 이해에는 두 가지 방법이 있습니다. 변경 전과 후에 : 이전 : 추상화에 프로그래밍하고 가능한 한 '미래를 예측'하십시오. 예를 들어, 향후 시스템에 s가 추가 drive(Car car)되면 …

8
OO 기술 인터뷰에서 디자인 관련 질문 [닫기]
폐쇄되었습니다 . 이 질문은 의견 기반 입니다. 현재 답변을받지 않습니다. 이 질문을 개선하고 싶습니까?이 게시물 을 편집 하여 사실과 인용으로 답변 할 수 있도록 질문을 업데이트하십시오 . 휴일 3 년 전 . 최근에 몇 번의 인터뷰에 참석했으며 회사에서 "[insert model] 디자인"질문에 몇 번 이상 대답하도록 요청했습니다. 요즘 업계에서 이것이 정상입니까? …

2
디자인 : 객체를 매개 변수로 사용하는 별도의 클래스 방법과 객체 방법?
예를 들어 다음을 수행하는 것이 좋습니다. Pdf pdf = new Pdf(); pdf.Print(); 또는: Pdf pdf = new Pdf(); PdfPrinter printer = new PdfPrinter(); printer.Print(pdf); 또 다른 예: Country m = new Country("Mexico"); double ratio = m.GetDebtToGDPRatio(); 또는: Country m = new Country("Mexico"); Country us = new Country("US"); DebtStatistics ds = …

2
LinkedList를 확장하는 스택. Liskov 대체 원칙 위반?
add_first (), add_last (), add_after (), remove_first (), remove_last () 및 remove ()와 같은 함수가있는 LinkedList 클래스가 있습니다. 이제 push (), pop (), peek () 또는 top ()과 같은 기능을 제공하는 클래스 스택이 있으며 이러한 메소드를 구현하기 위해 LinkedList 클래스 메소드를 확장합니다. 이것이 Liskov 대체 원칙을 위반합니까? 예를 들어, 링크 …


5
정적 메서드를 재정의 할 수없는 이유는 무엇입니까?
이 질문에 대한 답변 에서 일반적인 합의는 정적 메서드를 재정의해서는 안된다는 것입니다 (따라서 C #의 정적 함수는 가상 또는 추상적 일 수 없음). C #의 경우에만 해당되는 것은 아닙니다. Java도 이것을 금지하고 C ++도 좋아하지 않는 것 같습니다. 그러나 자식 클래스에서 재정의하려는 정적 함수 (예 : 팩토리 메서드)의 많은 예를 …

1
객체 수명 불변량 대 이동 의미론
C ++을 오래 ​​전에 배웠을 때, C ++의 요점 중 하나는 루프에 "루프 불변"이있는 것처럼 클래스에도 객체의 수명과 관련된 불변이 있다는 것입니다. 개체가 살아있는 동안 생성자에 의해 확립되고 메소드에 의해 보존되어야하는 것들. 인 캡슐 레이션 / 액세스 제어는 변하지 않는 것을 적용하는 데 도움이됩니다. RAII는이 아이디어로 할 수있는 일입니다. C …

4
소프트웨어 파이프 라인에서 공유 데이터를 캡슐화하기위한 우수한 구현 전략
기존 웹 서비스의 특정 측면을 리팩토링하려고 노력하고 있습니다. 서비스 API가 구현되는 방식은 일종의 "프로세싱 파이프 라인"을 갖는 것입니다. 여기서는 작업이 순서대로 수행됩니다. 당연히, 나중의 작업에는 이전 작업에 의해 계산 된 정보가 필요할 수 있으며 현재이 방법은 "파이프 라인 상태"클래스에 필드를 추가하는 것입니다. 나는 zillion 필드가있는 데이터 객체를 갖는 것보다 파이프 …

7
디자인 : 부모 클래스로 다시 전화
자식으로 개체를 모델링 할 때 부모 클래스의 구성원으로 컴포지션을 통해 자식을 포함하는 것이 일반적입니다. 그러나 때때로 아이들은 부모에게 무언가를 말해야하고 부모의 기능을 호출해야합니다. C ++를 사용하여 어떻게이 작업을 수행 할 수 있습니까? 일부 옵션은 다음과 같습니다. 부모 클래스를 전역 클래스로 만들면 자식 개체가 부모 개체의 멤버 함수를 호출 할 수 …

2
DDD에서 도메인 서비스는 본질적으로 단지 외관 및 / 또는 중재자 패턴입니까?
도메인 기반 디자인에서 도메인 계층은 여러 가지 (전통적인) 서비스를 가질 수 있습니다. 예를 들어, 사용자 도메인의 경우 다음이있을 수 있습니다. 다른 방법으로 User 객체를 빌드하는 UserFactory 인프라 계층에서 지속성 서비스와의 상호 작용을 담당하는 UserRepository 도메인 계층의 UserService는 단순히이 두 서비스 및 인프라 계층에 대한 중재자 및 / 또는 외관입니까?

2
앱의 일부가 다른 언어로 작성된 경우 데이터 구조의 중복을 피하는 방법은 무엇입니까?
예를 들어, Java 로 앱을 작성한다고 가정하십시오 . 앱은 Python으로 작성된 API 서버와 통신합니다 . Python 서버는 SQL 데이터베이스 와 통신 합니다. JavaScript로 작성된 앱 웹 사이트도 있습니다 . 4 개의 다른 언어를 사용하면 본질적으로 동일한 데이터 구조를 4 개의 다른 시간으로 반복하는 것이 쉽습니다. 예를 들어, User유형은 다음과 같습니다 …

2
객체 지향 디자인에서 수행해야 할 작업을 실제로 찾는 방법은 무엇입니까?
먼저 면책 조항 :이 질문 이이 웹 사이트에 적합한 지 잘 모르겠지만 초보자뿐만 아니라 다른 사람들에게도 여전히 관련 질문이 있습니다. 여기에 맞게 질문을 개선 할 수 있다면 int 의견을 지적하십시오. 그것이 맞지 않는다면, 나에게도 알려주십시오. 가능한 경우 이것에 대한 좋은 포럼을 찾지 못했기 때문에 이것이 논의 될 수있는 곳을 알려주십시오. …

5
캐싱을 관리하기 위해 클래스에서 SRP를 위반하지 않는 방법은 무엇입니까?
참고 : 코드 샘플은 C #으로 작성되었지만 중요하지 않습니다. 더 적합한 태그를 찾을 수 없기 때문에 C #을 태그로 넣었습니다. 이것은 코드 구조에 관한 것입니다. Clean Code를 읽고 더 나은 프로그래머가 되려고 노력하고 있습니다. 나는 종종 특히 기능에서 단일 책임 원칙 (클래스와 함수가 한 가지만 수행해야 함)을 따르는 데 어려움을 …

1
OCP (Open Closed Principle) 및 DIP (Dependency Inversion Principle)
OCP ( Open Closed Principle )와 DIP ( Dependency Inversion Princible ) 의 차이점을 이해하려고했습니다 . 지금까지 인터넷에서 수행 한 연구를 바탕으로 'DIP는 OCP를 달성 할 수있는 하나의 옵션'이라는 결론에 도달했습니다. 나는 이것에 맞습니까? DIP를 따르지 않지만 OCP를 따르는 예를 들어 주시겠습니까?

4
모델과 뷰를 다룰 때 스위치 대 다형성
내 문제에 대한 더 나은 해결책을 찾을 수 없습니다. 요소 목록을 제공하는 뷰 컨트롤러가 있습니다. 이러한 요소는 B, C, D 등의 인스턴스가 될 수 있고 A에서 상속 할 수있는 모델입니다. 따라서 해당보기 컨트롤러에서 각 항목은 응용 프로그램의 다른 화면으로 이동하여 사용자가 그 중 하나를 선택하면 일부 데이터를 전달해야합니다. . 내 …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.