일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- programmers
- 이것이 코딩테스트다 with 파이썬
- 코딩테스트
- Baekjoon
- bfs/dfs
- node.js
- Java
- Next.js
- 그리디
- Lv1
- js
- 자바
- 백준
- greedy
- 연습문제
- 네트워크
- 코딩테스트 입문
- 프로그래머스
- 자바스크립트
- CLASS
- javascript
- Typescript
- React
- 프로그래머스 JS
- 알고리즘
- CSS
- Python
- SWEA
- 정렬
- Lv2
Archives
- Today
- Total
개발야옹
객체 지향 프로그래밍 본문
본 포스팅은 eddy_song.log 블로그 내용을 참고하여 작성하였습니다.
객체 지향을 왜 사용하는가?
객체 지향은 "좋은 코드"를 작성하기 위해 사용한다.
"좋은 코드"는 무엇인가?
1. 변경하기 쉬운 코드
2. 이해하기 쉬운 코드
좋은 코드란 기능 추가 및 수정이 쉽고, 다른 개발자나 미래의 내가 보더라도 쉽게 이해할 수 있는 코드를 의미한다.
좋은 코드를 작성하려면?
복잡한 프로그램을 작은 단위로 나누고, 묶어서 정리햐야 하다. ➡️ 구조화, 추상화
Why OOP? 왜 객체지향을 써야 하는가?
- "좋은 코드"를 작성하기 위해서
- 즉, 이해하기 쉽고, 수정이 쉬운 코드를 작성하기 위해서
- "좋은 코드"를 만들려면 일정한 기준을 가지고 코드를 구조화하고 정리해야 한다.
"객체 지향 프로그래밍(OOP)"라는 용어를 만들고 대중화 시킨 앨런 케이가 생각한 OOP의 본질은?
- 메시징
- 다른 객체의 데이터나 프로시져가 필요할 때는 메시지 요청을 한다.
- 메시지를 받는 객체는 스스로 처리 방법을 선택한다.
- 캡슐화
- 관련있는 데이터와 프로시져를 찾아서 묶고 다른 객체가 내부를 건드리지 못하게 한다.
- 동적 바인딩
- 메시지를 받느 객체는 그때 그때 달라질 수 있다.
메시징 + 캡슐화 + 동적 바인딩 = ⭐️
- 변경 가능한 공유 데이터 최소화
- 관련있는 프로시져와 데이터를 묶은 다음, 다른 객체는 접근할 수 없게 하기 때문이다.
- 다른 객체의 상태를 알아내거나 바꾸려면, 해당 객체가 정해놓은 형식으로 메시지를 보내는 방식밖에 없다.
- 이걸 "캡슐화"라고 한다.
- How(구현) 부분을 쉽게 바꿀 수 있다.
- "메시지"를 받는 부분만 일관되게 유지한다면, 실제로 그걸 처리하는 코드는 바뀌어도 실행에 문제가 없다.
- "메시지를 보내는 것"은 메서드(함수)를 호출하는 것과 다르다.
- 다른 객체가 돈을 달라는 메시지를 보내면, 돈을 어떻게 주는지는 받는 객체가 알아서 결정한다.
- 메시지를 실제로 처리하는 객체를 쉽게 바꿀 수 있다.
- 기능의 변경이 쉬워진다.
- 메시지를 보내는 코드는 컴파일 타임에 이미 결정되지만, 실제로 어떤 객체가 그 메시지를 받아서 처리할지는 런타임에 결정된다. 이걸 "동적 바인딩"이라고 한다.
728x90
'프로그래밍' 카테고리의 다른 글
[협업 도구] Jira 기본 사용법 (0) | 2024.07.03 |
---|---|
[우아한테크코스 - 프리코스(BE)] 3주차 미션 과정 (0) | 2023.11.09 |
[우아한테크코스 - 프리코스(BE)] 2주차 미션 과정 (0) | 2023.11.01 |
MVC (Model, View, Controller) (0) | 2023.10.29 |
Java Naming Convention (0) | 2023.10.24 |