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

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

10
우리는 생성자없이 살 수 있습니까?
어떤 이유로 든 모든 객체가 $ obj = CLASS :: getInstance () 방식으로 생성되었다고 가정 해 봅시다. 그런 다음 setter를 사용하여 종속성을 주입하고 $ obj-> initInstance ()를 사용하여 초기화 시작을 수행합니다. 생성자를 전혀 사용하지 않으면 해결할 수없는 실제 문제 나 상황이 있습니까? 추신 :이 방법으로 객체를 생성하는 이유는 일부 규칙에 …


12
객체 지향 디자인
다음이 있다고 가정하십시오. +--------+ +------+ | Animal | | Food | +-+------+ +----+-+ ^ ^ | | | | +------+ +-------+ | Deer | | Grass | +------+ +-------+ Deer에서 상속 Animal및 Grass상속합니다 Food. 여태까지는 그런대로 잘됐다. Animal물건을 먹을 수 Food있습니다. 이제 조금 섞어 봅시다. Lion에서 상속되는 a 를 추가 …

6
객체가 자신의 ID를 알아야합니까?
obj.id상당히 흔하게 보이며 물체 자체에 대해 알 수있는 범위 내에있는 것 같습니다. 내 객체가 왜 자신의 ID를 알아야하는지 묻습니다. 그것을 가질 이유가없는 것 같습니까? 그것이 존재하는 주된 이유 중 하나는 그것을 검색하기 때문에 내 저장소 는 그것을 알아야하므로 데이터베이스 상호 작용에 사용해야합니다. 또한 ID가 페이로드에 맞지 않는 것처럼 보이지만 URI와 …

4
C #에서 추상 클래스를 정의로 사용
C ++ 개발자는 C ++ 헤더 파일에 익숙하며 코드 내에 일종의 "문서화"를하는 것이 유리합니다. 나는 보통 그 때문에 C # 코드를 읽어야 할 때 나쁜 시간을 보낸다. 내가 작업하는 클래스에 대한 그런 정신지도가 없다. 소프트웨어 엔지니어로서 프로그램의 프레임 워크를 설계한다고 가정 해 봅시다. C ++ 헤더로하는 것과 비슷하게 모든 클래스를 …

9
언제 개인 / 이너 클래스를 사용해야합니까?
명확히하기 위해, 내가 묻는 것은 public class A{ private/*or public*/ B b; } vs. public class A{ private/*or public*/ class B{ .... } } 나는 분명히 하나 또는 다른 것을 사용해야하는 몇 가지 이유를 생각할 수 있지만 실제로보고 싶은 것은 장단점이 학문이 아니라는 것을 보여주는 설득력있는 예입니다.


3
공통 기능을 공유 할 Windows 양식을위한 최고의 디자인
과거에는 상속을 사용하여 응용 프로그램에서 Windows 양식을 확장 할 수있었습니다. 모든 양식에 공통 컨트롤, 아트 워크 및 기능이있는 경우 공통 컨트롤 및 기능을 구현하는 기본 양식을 만든 다음 다른 컨트롤이 해당 기본 양식에서 상속 할 수 있습니다. 그러나 그 디자인에 몇 가지 문제가 있습니다. 컨트롤은 한 번에 하나의 컨테이너에만있을 수 …

3
공개 회원을 가상 / 추상화하지 마십시오.
2000 년대에 제 동료는 공개 방법을 가상 또는 추상적으로 만드는 것이 반 패턴이라고 말했습니다. 예를 들어, 그는 잘 설계되지 않은 다음과 같은 클래스를 고려했습니다. public abstract class PublicAbstractOrVirtual { public abstract void Method1(string argument); public virtual void Method2(string argument) { if (argument == null) throw new ArgumentNullException(nameof(argument)); // default implementation …

9
init () 메소드는 코드 냄새가 있습니까?
init()유형에 대한 메소드를 선언 할 목적이 있습니까? 나는 우리가 생성자를 선호init() 해야하는지 또는 선언을 피하는 방법을init() 묻지 않습니다 . 이 경우 내가 부탁 해요 어떤 선언 뒤에 이론적 init()방법 (그것이 얼마나 일반적인보고를) 또는 코드 냄새의 경우 피해야한다. init()관용구는 매우 일반적이지만, 나는 실제 혜택을 볼 아직. 메소드를 통한 초기화를 장려하는 유형에 …


4
데이터베이스가 제대로 설계되지 않은 관계형 데이터베이스 기반 응용 프로그램에서 더 나은 OO 코드를 만드는 방법
모든 페이지에 여러 테이블과 해당 테이블에 적용되는 필터가있는 유사한 페이지로 구성된 Java 웹 응용 프로그램을 작성하고 있습니다. 이 테이블의 데이터는 SQL 데이터베이스에서 가져옵니다. myBatis를 ORM으로 사용하고 있는데 데이터베이스가 제대로 설계되지 않았고 mybatis가 더 데이터베이스 지향 도구이기 때문에 내 경우에는 최선의 선택이 아닐 수 있습니다. 데이터베이스의 열악한 디자인으로 인해 유사한 쿼리에 …

7
C 프로그램에 대한 OO 모범 사례 [닫기]
휴무 . 이 질문은 더 집중되어야 합니다. 현재 답변을받지 않습니다. 이 질문을 개선하고 싶습니까? 이 게시물 을 편집 하여 한 가지 문제에만 집중할 수 있도록 질문을 업데이트하십시오 . 휴일 3 년 전 . "당신이 정말로 OO 설탕을 원한다면-C ++을 사용하십시오" -나는 이것을 물었을 때 내 친구 중 한 사람으로부터 얻은 …

1
Bertrand Meyer (/ did)가 왜 서브 클래 싱이 "클로즈드"모듈을 확장 할 수있는 유일한 방법이라고 생각합니까?
Meyer의 Object-Oriented Software Construction (1988)에서 개방 / 폐쇄 원칙 을 다음과 같이 정의합니다 . 확장이 가능한 모듈은 열려 있다고합니다. 예를 들어, 포함 된 데이터 구조에 필드를 추가하거나 수행하는 기능 세트에 새 요소를 추가 할 수 있어야합니다. 다른 모듈에서 사용할 수있는 모듈은 닫혀 있다고합니다. 이것은 모듈에 잘 정의되고 안정적인 설명이 제공되었다고 …

7
데이터 전송 객체를위한 인터페이스를 만들어야합니까?
데이터 전송 개체에 대한 인터페이스를 만드는 것이 좋은 생각입니까? 객체가 일반적으로 변경 가능한 것으로 가정합니다. 내 예제는 Java로되어 있지만 유사한 개념을 가진 다른 언어에도 적용 할 수 있어야합니다. interface DataTransferObject { String getName(); void setName(String name); } class RealDataTransferObject implements DataTransferObject { String name; String getName() { return name; } …

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