«encapsulation» 태그된 질문

OOP에서 개체의 일부 구성 요소에 대한 액세스를 제한하는 메커니즘 또는 구현 세부 정보에서 분리를 장려하는 설계 원칙.


12
파이썬의 '비공개'메소드가 실제로 비공개가 아닌 이유는 무엇입니까?
파이썬은 다음과 같이 이름에 이중 밑줄을 추가하여 클래스 내에서 '비공개'메소드와 변수를 작성할 수있는 기능을 제공합니다 __myPrivateMethod(). 그렇다면 어떻게 이것을 설명 할 수 있습니까? >>> class MyClass: ... def myPublicMethod(self): ... print 'public method' ... def __myPrivateMethod(self): ... print 'this is private!!' ... >>> obj = MyClass() >>> obj.myPublicMethod() public method …

30
C ++에서 'friend'를 언제 사용해야합니까?
나는 C ++ FAQ를 읽고 friend선언 에 대해 궁금했다 . 나는 개인적으로 사용하지는 않았지만 언어 탐구에 관심이 있습니다. 사용하는 좋은 예는 무엇입니까 friend? FAQ를 조금 더 읽으면 << >>연산자가 과부하되어 해당 클래스의 친구로 추가되는 아이디어가 마음에 듭니다 . 그러나 이것이 캡슐화를 어떻게 깨뜨리지 않는지 잘 모르겠습니다. 이러한 예외가 OOP 인 …
354 c++  oop  encapsulation  friend 


4
__getattr__과 __getattribute__의 차이점 이해
나는 사이의 차이를 이해하려고 __getattr__하고 __getattribute__, 그러나, 나는 그것을 실패하고있다. 대답 스택 오버플로 질문에 차이 __getattr__대는__getattribute__ 말합니다 : __getattribute__객체의 실제 속성을보기 전에 호출되므로 올바르게 구현하기가 까다로울 수 있습니다. 무한 재귀로 매우 쉽게 끝날 수 있습니다. 나는 그것이 무엇을 의미하는지 전혀 모른다. 그런 다음 계속 말합니다. 당신은 거의 확실하게 원합니다 __getattr__. …

22
추상화 VS 정보 숨기기 VS 캡슐화
소프트웨어 개발에서 추상화 와 정보 숨기기 의 차이점은 무엇 입니까? 혼란 스러워요. 추상화는 세부 구현을 숨기고 정보 숨기기는 무언가의 전체 세부 사항을 추상화합니다. 업데이트 : 이 세 가지 개념에 대한 좋은 대답을 찾았습니다. 거기 에서 가져온 몇 가지 인용에 대해서는 아래의 별도 답변을 참조하십시오 .

9
컬렉션이나 스트림을 반환해야하나요?
읽기 전용 뷰를 멤버 목록으로 리턴하는 메소드가 있다고 가정하십시오. class Team { private List < Player > players = new ArrayList < > (); // ... public List < Player > getPlayers() { return Collections.unmodifiableList(players); } } 또한 모든 클라이언트가 즉시 목록을 한 번 반복한다고 가정하십시오. 플레이어를 JList 또는 다른 …

9
자바 : 서브 패키지 가시성?
나는 내 프로젝트에서 두 패키지를 가지고 odp.proj와 odp.proj.test. 이 두 패키지의 클래스에만 표시하려는 특정 메소드가 있습니다. 어떻게해야합니까? 편집 : Java에 하위 패키지 개념이 없으면이 방법이 있습니까? 테스터 및 해당 패키지의 다른 멤버에게만 제공되는 특정 방법이 있습니다. 모든 것을 동일한 패키지에 넣어야합니까? 광범위한 반사를 사용하십니까?

21
의존성 주입은 캡슐화를 희생해야합니까?
올바르게 이해하면 Dependency Injection의 일반적인 메커니즘은 클래스 생성자를 통해 또는 클래스의 공용 속성 (구성원)을 통해 주입하는 것입니다. 이것은 주입되는 의존성을 드러내고 캡슐화의 OOP 원칙을 위반합니다. 이 트레이드 오프를 식별하는 것이 정확합니까? 이 문제를 어떻게 처리합니까? 아래의 내 질문에 대한 답변도 참조하십시오.

7
전략 패턴 및 명령 패턴 사용
두 디자인 패턴 모두 알고리즘을 캡슐화하고 호출 클래스에서 구현 세부 사항을 분리합니다. 내가 알아볼 수있는 유일한 차이점은 전략 패턴은 실행을위한 매개 변수를 사용하지만 명령 패턴은 그렇지 않다는 것입니다. 명령 패턴은 생성 될 때 사용할 수있는 모든 정보를 필요로하며 호출을 지연시킬 수 있습니다 (아마도 스크립트의 일부로). 한 패턴을 사용할 것인지 다른 …

25
Integer.parseInt ()를 캡슐화하는 좋은 방법
Integer.parseInt()String을 int로 변환하는 데 자주 사용하는 프로젝트가 있습니다. 무언가 잘못되었을 때 (예를 들어, String숫자가 아니라 문자 a등)이 메서드는 예외를 발생시킵니다. 그러나 모든 곳에서 내 코드에서 예외를 처리해야한다면 이것은 매우 빠르게보기 흉하게 보이기 시작합니다. 나는 이것을 메소드에 넣고 싶지만 변환이 잘못되었음을 보여주기 위해 깨끗한 값을 반환하는 방법에 대한 단서가 없습니다. C …

16
캡슐화와 추상화의 차이점
오늘 인터뷰를 했어요. 캡슐화 와 추상화 의 차이점에 대해 OOP 에서 질문을 받았습니다 . 나는 Encapsulation 이 기본적으로 데이터 멤버와 멤버 함수를 Class 라는 단일 단위로 바인딩 하는 것이라는 내 지식에 대해 그녀에게 대답했습니다 . 반면 추상화 및 구현의 숨기기 복잡성 기본적으로 사용자에 대한 접근의 용이성 제공합니다. 나는 그녀가 내 …

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