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

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

4
개인 게터가 아닌 공개 결선 사용
불변의 POJO는 다음과 같이 작성되었습니다. public class MyObject { private final String foo; private final int bar; public MyObject(String foo, int bar) { this.foo = foo; this.bar = bar; } public String getFoo() { return foo; } public int getBar() { return bar; } } 그러나 나는 이것을 다음과 같이 …

7
체인 세터가 왜 전통적인가?
Bean에 체인을 구현하면 생성자, 메가 생성자, 팩토리를 오버로드 할 필요가없고 가독성이 향상됩니다. 객체를 불변으로 만들고 싶지 않다면 어떤 단점도 생각할 수 없습니다 .이 경우 어쨌든 setter가 없습니다. 그렇다면 이것이 OOP 규칙이 아닌 이유가 있습니까? public class DTO { private String foo; private String bar; public String getFoo() { return foo; …

4
예외 전파 : 언제 예외를 포착해야합니까?
MethodA는 MethodB를 호출하여 MethodC를 호출합니다. MethodB 또는 MethodC에는 예외 처리가 없습니다. 그러나 MethodA에는 예외 처리가 있습니다. MethodC에서는 예외가 발생합니다. 이제 예외는 MethodA까지 버블 링되어 적절하게 처리됩니다. 이것에 무슨 문제가 있습니까? 내 마음에, 어떤 시점에서 호출자는 MethodB 또는 MethodC를 실행할 것이고, 그 메소드에서 예외가 발생하면 해당 메소드 내에서 예외를 처리하여 얻을 …

3
MVC 설계에서 비즈니스 로직을 어디에 배치해야합니까?
데이터 형식을 통해 레코드를 데이터베이스에 추가하는 간단한 MVC Java 응용 프로그램을 만들었습니다. 내 앱은 데이터를 수집하고 데이터를 확인하고 저장합니다. 데이터가 다른 사용자로부터 온라인으로 제공되기 때문입니다. 데이터는 본질적으로 숫자입니다. 이제 데이터베이스 (SQL 서버)에 저장된 숫자 데이터에서 앱이 계산을 수행하고 결과를 표시하기를 원합니다. 사용자는 계산 방법에 관심이 없으므로 캡슐화해야합니다. 사용자는 단순 계산 …

10
단위 테스트는 어떻게 설계를 용이하게합니까?
우리 동료는 실제로 단위 디자인 테스트를 장려하여 실제로 디자인을 개선하고 리팩토링하는 데 도움을 주지만 방법을 알지 못합니다. CSV 파일을로드하고 파싱하는 경우 단위 테스트 (필드의 값 확인)가 디자인을 확인하는 데 어떻게 도움이됩니까? 그는 커플 링 및 모듈성 등을 언급했지만 나에게는별로 이해가되지 않지만 이론적 인 배경은별로 없습니다. 그것은 당신이 중복으로 표시 한 …

8
아무것도 나타내지 않는 클래스-맞습니까?
응용 프로그램을 설계하고 있는데 SOLID와 OOP를 올바르게 이해하고 있는지 잘 모르겠습니다. 수업은 한 가지 일을하고 잘해야하지만 다른 한편으로는 우리가 다루는 실제 사물을 나타내야합니다. 필자의 경우 데이터 세트에서 기능 추출을 수행 한 다음 기계 학습 분석을 수행합니다. 세 개의 클래스를 만들 수 있다고 가정합니다. 특징 추출기 데이터 세트 분석기 그러나 FeatureExtractor …

9
향후 인터페이스 사용을위한 프로그래밍
내 옆에 다음과 같은 인터페이스를 디자인 한 동료가 있습니다. public interface IEventGetter { public List<FooType> getFooList(String fooName, Date start, Date end) throws Exception; .... } 문제는 현재 코드의 어느 곳에서나이 "종료"매개 변수를 사용하지 않고 있다는 것입니다. 차후에 시간이 지나야 할 수도 있기 때문입니다. 우리는 지금 매개 변수를 인터페이스에 넣는 것이 …

6
함수가 복잡하고 변수가 많은 경우 클래스를 만들어야합니까?
이 질문은 언어에 구애받지 않지만 완전히 다릅니다. 예를 들어, 객체 지향 프로그래밍 (OOP)은 파이썬 과는 달리 일류 함수가없는 Java 와 다릅니다 . 다시 말해서, Java와 같은 언어로 불필요한 클래스를 작성하는 데는 죄책감이 적지 만 Python과 같이 덜 언어적인 언어에는 더 나은 방법이 있다고 생각합니다. 내 프로그램은 여러 번 비교적 복잡한 …

5
매개 변수로 다른 함수에 함수를 전달하는 것은 나쁜 습관입니까?
AS3 애플리케이션이 백엔드와 통신하는 방식을 변경하는 과정에 있으며 이전 시스템을 대체하기 위해 REST 시스템을 구현하는 중입니다. 안타깝게도 작업을 시작한 개발자는 현재 장기 병가에 있으며 나에게 넘겨졌습니다. 나는 지난 주 정도 동안 그 일을 해왔고 시스템을 이해하지만 걱정되는 것이 하나 있습니다. 함수에 함수가 많이 전달되는 것 같습니다. 예를 들어 서버를 호출하는 …

6
Java 상속“확장”을 피해야하는 이유
제임 고슬링은 말했다 "가능한 경우 구현 상속을 피해야합니다." 대신 인터페이스 상속을 사용하십시오. 그런데 왜? 키워드 "extends"를 사용하여 객체의 구조를 상속받지 않고 동시에 객체 지향 코드를 만들려면 어떻게해야합니까? 누군가 "서점에서 책을 주문"과 같은 시나리오에서이 개념을 설명하는 객체 지향 예제를 제시해 주시겠습니까?

5
왜 클래스를 상속하고 속성을 추가하지 않습니까?
우리의 코드베이스에서 다음과 같은 상속 트리를 찾았습니다. public class NamedEntity { public int Id { get; set; } public string Name { get; set; } } public class OrderDateInfo : NamedEntity { } 내가 수집 할 수있는 것으로부터, 이것은 주로 프론트 엔드에 물건을 묶는 데 사용됩니다. 나에게 이것은 generic에 의존하는 …

13
부울 매개 변수를 사용하여 값을 결정하는 것은 잘못입니까?
에 따르면 이 동작을 결정하는 부울 매개 변수를 사용하는 것이 잘못인가? 부울 매개 변수를 사용하여 동작을 결정하지 않는 것이 중요하다는 것을 알고 있습니다. 원본 버전 public void setState(boolean flag){ if(flag){ a(); }else{ b(); } c(); } 새로운 버전: public void setStateTrue(){ a(); c(); } public void setStateFalse(){ b(); c(); } …

9
객체 지향 코드를 작성할 때 항상 디자인 패턴을 따라야합니까?
객체 지향 프로그램에 대해 생각할 수있는 디자인 패턴이 있습니까? 최근에으로 Door클래스 의 구현을 보았 기 때문에 이것을 묻습니다 Lock. 테스트의 일부였으며 코드가 Null Object 패턴을 따른다고 답했습니다. class Lock { public: virtual void close() = 0; virtual void open() = 0; virtual bool is_open() const = 0; virtual ~Lock() { …

8
OOP가 쉬워 지거나 어려워지고 있습니까? [닫은]
프로그래머에게 Object Oriented Programming의 개념이 소개되었을 때 흥미로워 보였고 프로그래밍이 더 깨끗했습니다. 이런 식으로 Stock stock = new Stock(); stock.addItem(item); stock.removeItem(item); 그것은 자기 묘사 적 이름으로 이해하기가 더 쉬웠습니다. 그러나 이제는 데이터 전송 개체, 값 개체, 리포지토리, 종속성 주입 등과 같은 패턴을 가진 OOP가 더욱 복잡해졌습니다. 위의 내용을 달성하기 위해 …

6
객체를 조롱하기 어려운 시스템을 어떻게 테스트합니까?
다음 시스템으로 작업하고 있습니다. Network Data Feed -> Third Party Nio Library -> My Objects via adapter pattern 우리는 최근에 내가 사용하고있는 라이브러리의 버전을 업데이트 한 문제가 있었는데, 그중에서도 타임 스탬프 (제 3 자 라이브러리가로 반환 long)가 에포크 후 밀리 초에서 에포크 후 나노 초로 변경되었습니다. 문제 : 타사 라이브러리 …

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