일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 논리 메모리
- error
- 백준
- unionfind
- 스택
- DFS
- BFS
- 다익스트라
- Python
- 데드락
- 유니크 키
- 프로세스
- integretion test
- springboot
- 운영체제
- 캡슐화
- 큐
- OOP
- 코딩 테스트
- queue
- SW Expert Academy
- 객체지향 프로그래밍
- stack
- java
- 자료구조
- 백준 #
- DP
- 파이썬
- 디바이스 입출력
- OS
- Today
- Total
목록캡슐화 (2)
middlefitting
이 글은 객체지향 프로그래밍 캡슐화 개념을 모르시거나 모호하다고 느끼는 분들을 위한 글입니다. 다음과 같은 내용으로 시작합니다. 우리는 OOP 4대 원칙인 캡슐화를 준수하기 위해, 흔히 멤버 변수를 접근 제어자를 통해 숨기고 getter, setter 메서드를 통해 우회해서 접근 및 수정하도록 합니다. 근데 이 부분에서 우리는 다음과 같은 의문을 가지게 됩니다. 접근 제어자 걸어도 getter, setter 선언하면 public으로 선언하는 것과 캡슐화 측면에서 무슨 차이가 있는걸까? 그말이 그말인것 같은데 무슨 차이가 있으며, getter setter가 왜 캡슐화를 위해 사용된다는 것인지 의문을 품게 되는 것입니다. 결론을 이야기 하자면 차이가 없습니다. 즉 캡슐화를 위배한다는 것은 다를바가 없는 것이..
캡슐화는 OOP의 4대원칙 중 하나로 원칙인 만큼 매우 중요합니다. 클래스는 서로 관련이 있는 변수와 함수를 하나의 객체로 모아주는 역할을 수행하는데요, 캡슐화는 이러한 클래스의 멤버를 외부에서 쉽게 접근하지 못하게 정보를 은닉하는 것을 말합니다. 정보를 은닉하면 뭐가 좋을까 우선 캡슐화를 하지 않고 객체의 인스턴스 변수를 외부에서 접근하는 것은 객체지향스럽지 않습니다. 4대 원칙에 어긋나니까 당연한 말이지만 어떤 부분에서 그럴지 생각을 해보자면 왜냐하면 객체는 클래스에 있는 메소드로서 자신의 작업을 수행하게 되는데, 클래스에 정의되지 않은 동작으로 객체를 사용하게 되는 것이기 때문입니다. 더불어 그러한 의도되지 않은 동작은 오류의 범위를 크게 만들 것임은 분명합니다. 그래서 클래스의 정보를 은닉함으로써..