«object-oriented» 태그된 질문

시스템을 모듈 방식으로 제어 및 조작 할 수있는 일련의 객체로 모델링 할 수있는 방법론

1
정적 메소드를 남용합니까?
몇 달 전에 나는 새로운 프로젝트에서 일하기 시작했으며 코드를 통과 할 때 사용되는 정적 메소드의 양을 획기적으로 나타냅니다. 와 같은 유틸리티 메소드 collectionToCsvString(Collection<E> elements)뿐만 아니라 많은 비즈니스 로직이 유지됩니다. 내가이 이론적 근거에 책임이있는 사람에게 물었을 때, 그는 그것이 봄의 폭정에서 벗어나는 방법이라고 말했다 . 이 사고 과정과 관련이 있습니다. 고객 …

2
어셈블리 언어 측면에서 OOP“개체”와“클래스”는 메모리에서 어떻게 구성됩니까?
객체는 메모리에서 어떻게 구성됩니까? 예를 들어, 함수는 메모리의 코드 조각이며 스택 및 / 또는 레지스터를 통해 매개 변수를 기대하고 자체 스택 프레임을 처리한다는 것을 알고 있습니다. 그러나 객체는 훨씬 더 복잡한 구조입니다. 그들은 어떻게 구성되어 있습니까? 각 객체에는 메소드에 대한 "링크"가 있고 해당 메소드에 주소를 전달합니까? 이 주제에 대한 좋은 …

3
왜“자기”가 필요한가요? 파이썬에서 인스턴스 변수를 참조합니까?
Java, Ruby, Haskell 및 Python과 같은 여러 언어로 프로그래밍했습니다. 다른 프로젝트로 인해 하루에 여러 언어로 전환해야합니다. 이제 문제는 self파이썬에서 함수 정의의 첫 번째 매개 변수가 동일한 객체에서 메서드를 호출하는 것과 마찬가지로 쓰는 것을 잊어 버리는 경우가 많습니다 . 즉, 나는이 파이썬 접근 방식에 상당히 놀랐습니다. 기본적으로 우리는 Java 및 Ruby와 …

3
상속보다는 구성
소프트웨어 엔지니어링을 가르치고 혼란스러워하는 상충되는 정보에 대비하려고합니다. 나는 OOP를 배우고 추상 클래스 / 인터페이스가 무엇인지, 그것들을 사용하는 방법을 배우고 있지만, 상속보다 구성을 선호해야한다는 것을 읽고 있습니다. 나는 한 클래스가 다른 클래스의 객체를 작성 / 생성하여 새로운 객체의 기능을 활용 / 상호 작용할 때 구성을 이해합니다. 그래서 내 질문은 ... 추상 …

8
비동기 함수를 노출하는 인터페이스가 누출 추상입니까?
나는 Dependency Injection Principles, Practices and Patterns 책을 읽고 있으며,이 책 에 잘 설명되어있는 누출 추상화 개념에 대해 읽었습니다. 요즘 나는 의존성 주입을 사용하여 C # 코드베이스를 리팩토링하여 비동기 호출이 차단 호출 대신 사용되도록합니다. 그렇게하면 코드베이스에서 추상화를 나타내는 일부 인터페이스를 고려하고 비동기 호출을 사용할 수 있도록 다시 디자인해야합니다. 예를 들어, …

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

5
함수 호출은 성능에 얼마나 영향을 줍니까?
메소드 또는 함수로 기능을 추출하는 것은 특히 OOP에서 코드 모듈화, 가독성 및 상호 운용성을 위해 반드시 필요합니다. 그러나 이것은 더 많은 함수 호출이 이루어질 것임을 의미합니다. 코드를 메소드 또는 함수로 분리하면 실제로 현대 언어의 성능에 어떤 영향을 미칩니 까? * 가장 인기있는 것 : C, Java, C ++, C #, …

6
DDD가 OOP : 객체 지향 저장소를 구현하는 방법을 충족합니까?
DDD 저장소의 일반적인 구현은 예를 들어 save()메소드와 같이 OO처럼 보이지 않습니다 . package com.example.domain; public class Product { /* public attributes for brevity */ public String name; public Double price; } public interface ProductRepo { void save(Product product); } 인프라 부분 : package com.example.infrastructure; // imports... public class JdbcProductRepo implements …

1
친구 클래스를 사용하여 C ++에서 개인 멤버 함수를 캡슐화-우수 사례 또는 남용?
따라서 다음과 같이하여 개인 함수를 헤더에 넣지 않는 것이 가능하다는 것을 알았습니다. // In file pred_list.h: class PredicateList { int somePrivateField; friend class PredicateList_HelperFunctions; public: bool match(); } // In file pred_list.cpp: class PredicateList_HelperFunctions { static bool fullMatch(PredicateList& p) { return p.somePrivateField == 5; // or whatever } } bool …

4
무의미한 기본값을 가진 구조체
내 시스템에서 나는 자주 공항 코드 (작동 "YYZ", "LAX", "SFO", 등), 그들은 (대문자로 표시 3 문자) 정확한 항상 동일한 형식. 이 시스템은 일반적으로 API 요청 당 25-50 개의 이러한 (다른) 코드를 처리하며 총 1,000 개가 넘는 할당을 처리하며 응용 프로그램의 여러 계층을 통해 전달되며 평등을 위해 자주 비교됩니다. 우리는 문자열을 …

3
라이브러리에서 가시성을 처리하는 일반적인 방법은 무엇입니까?
개인 사용시기와 클래스에서 protected 사용시기에 관한 이 질문 은 저를 생각하게했습니다. (이 질문은 최종 클래스 및 메소드와 관련이 있기 때문에 확장 할 것입니다. Java로 프로그래밍 중이지만 모든 OOP 언어와 관련이 있다고 생각합니다) 허용되는 대답은 다음과 같습니다. 경험상 가장 좋은 방법은 모든 것을 가능한 한 비밀로 만드는 것입니다. 그리고 또 하나 …



7
매개 변수 목록에서 로거의 위치는 무엇입니까?
폐쇄되었습니다 . 이 질문은 의견 기반 입니다. 현재 답변을받지 않습니다. 이 질문을 개선하고 싶습니까? 이 게시물 을 편집 하여 사실과 인용으로 답변 할 수 있도록 질문을 업데이트하십시오 . 휴일 오년 전에 . 내 코드에서는 생성자의 매개 변수 목록을 통해 많은 클래스에 로거를 주입합니다. 나는 그것을 무작위로 넣는 것을 알아 차렸다 …

6
다운 캐스팅을 피하는 방법?
내 질문은 슈퍼 클래스 동물의 특별한 경우에 관한 것입니다. 내 Animal캔 moveForward()과 eat(). Seal확장 Animal합니다. Dog확장 Animal합니다. 그리고 Animal이라고 불리는 특별한 생물이 있습니다 Human. Human에 speak()의해 구현되지 않은 메소드도 구현합니다 Animal. 수락하는 추상 메소드의 구현에서 메소드 Animal를 사용하고 싶습니다 speak(). 다운 캐스트를하지 않으면 불가능한 것 같습니다. 제레미 밀러 (Jeremy Miller)는 …

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