«object-oriented» 태그된 질문

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

3
상속이없는 OO 언어가 있습니까?
오늘 코드 검토 중에 내 동료가 흥미로운 것을 말했습니다. prototype상속이 필요할 때만 유용합니다. 상속이 언제 좋은 아이디어 입니까? 나는 이것에 대해 생각했고 처음에는 잘못 설계 된 코드를 피하기 위해 상속을 사용한다는 것을 깨달았습니다. 현대의 OO 스타일은 상속보다 구성을 선호하지만, 이것을 마음에 새기고 실제로 시행 하는 언어는 모릅니다 . 클래스 기반 …

7
전파 패턴은 개체 모델을 변경합니다 ..?
여기에 내가 다루기가 항상 좌절하는 일반적인 시나리오가 있습니다. 부모 개체가있는 개체 모델이 있습니다. 부모는 자식 개체를 포함합니다. 이 같은. public class Zoo { public List<Animal> Animals { get; set; } public bool IsDirty { get; set; } } 각 자식 개체에는 다양한 데이터와 메서드가 있습니다 public class Animal { public …

9
OOP 원칙 및 방법 이름
class Boxer: def punch(self, punching_bag, strength): punching_bag.punch(strength) class PunchingBag: def punch(self, strength): print "Punching bag punched with strength", strength boxer = Boxer() punching_bag = PunchingBag() boxer.punch(punching_bag, 2) 의심 할 여지없이 그것은 punch권투 선수의 경우 좋은 방법 이름입니다. 그러나 이름 punch은 펀치 백 방법에도 좋습니다? 두 경우 모두 펀치를 명령으로 의미합니다 …

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

1
Alan Kay가이 용어를 발명하기 전에 무엇을 객체 지향 프로그래밍이라고 했습니까?
Alan Kay는 ""객체 지향 "이라는 용어를 만들었으며 C ++을 염두에두고 있지 않다는 것을 알 수 있습니다." 물론 그가 염두에 둔 것은 스몰 토크였습니다. 그러나 그는 객체 지향 프로그래밍 자체를 구성하지 않았다. 그는 Simula로부터 기본 아이디어를 얻었습니다. 따라서이 용어가 아직 발명되지 않았다면 원래 Simula에서 객체 지향 프로그래밍이라고 부르는 것은 무엇입니까?

6
사용 사례가없는 느슨한 커플 링은 안티 패턴입니까?
느슨한 커플 링은 일부 개발자에게 잘 설계된 소프트웨어의 성배입니다. 가까운 미래에 발생할 수있는 변경에 직면하여 코드를 더 유연하게 만들거나 코드 복제를 피할 때 확실히 좋습니다. 반면에, 구성 요소를 느슨하게 결합하려는 노력은 프로그램에서 간접적 인 양을 증가 시켜서 복잡성을 증가 시키며, 종종 이해하기 어렵고 종종 효율성을 떨어 뜨립니다. 느슨한 커플 링 …

3
C ++ 클래스 생성자에서 실패 사례를 처리하는 방법은 무엇입니까?
생성자가 일부 작업을 수행하는 CPP 클래스가 있습니다. 이러한 작업 중 일부가 실패 할 수 있습니다. 생성자가 아무것도 반환하지 않는다는 것을 알고 있습니다. 내 질문은 생성자에서 멤버를 초기화하는 것 외에 다른 작업을 수행 할 수 있습니까? 생성자에서 일부 작업이 실패했음을 호출 함수에 알릴 수 있습니까? new ClassName()생성자에서 오류가 발생하면 NULL 을 …

4
“너무 객체 지향”
나는 강력한 OO 배경에서 왔으며 최근에 코드가 Java로 작성되었지만 익숙한 것보다 좋은 OO 디자인에 중점을 둔 조직에서 일하기 시작했습니다. 나는 "너무 많은 추상화"를 도입한다고 말했고, 대신 항상 수행되었던 방식을 코딩해야한다고하는데, 이는 Java의 절차 적 스타일이다. TDD도 여기서 많이 연습하지는 않지만 테스트 가능한 코드를 원합니다. 대규모 "하나님 클래스"(이 팀의 표준 인 …

5
거대한 접착제 방법을 피하는 방법?
현재 직장에서는 몇 번이나 오래된 코드를 정리해야했습니다. 종종 코드는 미로이며 그 뒤에있는 데이터는 훨씬 더 얽혀 있습니다. 나는 멋지고 깔끔한 모듈 방식으로 것들을 빗나가고 있습니다. 각 방법은 한 가지 일을 잘 수행합니다. 그때가 남쪽으로 가기 시작합니다 ... 필자는 항상 깨끗한 API로 끝내고 실제로 묶을 방법이 없습니다. 해결책은 결국 모든 "깨끗한"방법을 …

5
네임 스페이스로 정적 클래스 사용
이 질문은 Software Engineering Stack Exchange에서 답변을 얻을 수 있기 때문에 Stack Overflow에서 마이그레이션 되었습니다. 8 년 전에 이주했습니다 . 정적 클래스를 네임 스페이스로 사용하는 다른 개발자를 보았습니다. public static class CategoryA { public class Item1 { public void DoSomething() { } } public class Item2 { public void DoSomething() …

12
게임을 개발하는 것이 프로그래밍을 배우는 가장 좋은 방법입니까? [닫은]
닫은. 이 질문은 주제에 맞지 않습니다 . 현재 답변을받지 않습니다. 이 질문을 개선하고 싶습니까? Software Engineering Stack Exchange에 대한 주제가 되도록 질문을 업데이트하십시오 . 휴일 3 년 전 . 최근에 교수 개발 팀이 게임 개발이 프로그래밍을 배우는 가장 좋은 방법이라고 들었습니다. 그는 모든 것이 코드로 작성되어야한다는 사실 외에도 프로그램에서 OOP를 …

4
코드 범위를 크게 향상시키는 방법은 무엇입니까?
단위 테스트에서 레거시 응용 프로그램을 얻는 작업을 맡았습니다. 응용 프로그램에 대한 첫 번째 배경 : 600k LOC Java RCP 코드 기반으로 이러한 주요 문제가 있습니다. 대규모 코드 복제 캡슐화가없고 대부분의 개인 데이터는 외부에서 액세스 할 수 있으며 일부 비즈니스 데이터도 싱글 톤으로 만들어 외부에서뿐만 아니라 어디에서나 변경할 수 있습니다. 추상화 …

5
폴 백이있는 특수 사례가 Liskov 대체 원칙을 위반합니까?
FooInterface다음과 같은 서명을 가진 인터페이스 가 있다고 가정 해 봅시다 . interface FooInterface { public function doSomething(SomethingInterface something); } 그리고 ConcreteFoo그 인터페이스를 구현 하는 구체적인 클래스 : class ConcreteFoo implements FooInterface { public function doSomething(SomethingInterface something) { } } ConcreteFoo::doSomething()특별한 유형의 SomethingInterface객체 가 전달되면 고유 한 작업을 수행 하고 싶습니다 …

3
제네릭과 일반적인 인터페이스?
지난번에 일반 수업을 썼을 때 기억이 나지 않습니다. 내가 생각한 후에 생각이들 때마다 나는 그렇지 않다는 결론을 내린다. 이 질문에 대한 두 번째 대답 은 설명을 요구하게 만들었습니다 (아직 말할 수 없기 때문에 새로운 질문을했습니다). 제네릭이 필요한 경우를 예로 들어 주어진 코드를 보자. public class Repository<T> where T : class, …

5
거의 모든 사람이 공통 데이터 구조에 액세스해야하는 경우 종속성 주입의 이점은 무엇입니까?
OOP에서 글로벌 이 악한 이유는 많이 있습니다 . 공유가 필요한 객체의 수 또는 크기가 너무 커서 함수 매개 변수에서 효율적으로 전달할 수없는 경우 일반적으로 전역 객체 대신 의존성 주입을 권장 합니다. 그러나 거의 모든 사람이 특정 데이터 구조에 대해 알아야 할 경우 의존성 주입이 전역 객체보다 더 나은 이유는 무엇입니까? …

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