일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- React 공식문서
- git branch -m
- carouselButton
- javascript 비동기
- js fetch
- react-native-snap-carousel
- 테스크 큐
- 브랜치 이름 변경 명령어
- Styled Components
- java
- Javascript
- Call Stack
- reading 'edgesOut'
- Code Splitting
- vscode extension
- styled-components 버전 문제
- 네트워크 통신 요청
- fetch()
- use-immer
- 1966 프린터큐
- styled-compoents
- styled components 설치 안됨
- 최단거리알고리즘
- styled-components 설치 오류
- reading 'useDebugValue'
- react
- likelion
- react immer
- styled-components extension
- 단일링크드리스트
- Today
- Total
Keep Going
[Java] 객체 지향 프로그래밍 본문
[what is 객체 지향 프로그래밍?]
- 객체지향프로그래밍(Object Oriented Programming)
- 상태(state), 행위(behave)로 이루어진 객체로 만드는 것!
- 변수, 메소드를 그룹핑한것!
- 이 객체들을 조합해서 프로그램을 만드는거야.
점점 사이트의 규모가 커지면서 글목록, 본문, 댓글의 로직들을 다 따로 분류해서 레고 조각(객체.껍데기)(which has 변수, 메소드)으로 만들어. 그룹핑하는거지.
--> 자연스럽게 '객체지향' 개념,문법이 등장하게 된거지.
--> 네이버에서 사용한 댓글 레고조각이 페이스북에 사용하는 댓글 레고조각이 될 수 있어(재활용성)
[설계와 추상화]
지하철 노선도가 '디자인'의 추상화라고 한다면 프로그램을 만드는 것은 '소프트웨어'의 추상화라고 할 수 있다.
즉! 좀 더 프로그래밍을 통해 현실을 잘 반영하기 위해 '객체지향프로그래밍'이 등장한거야.
[부품화]
객체가 다른 곳에서 사용할 수 있는 '재활용성'은 객체를 '부품'으로 만드는 것부터 시작한다. 부품으로 잘 만들어야 재활용하기 좋은 로직이 되는거야.
ex) 노트북은 키보드, 모니터, 마우스, 본체 라는 부품으로 나눌 수 있어. 부품으로 나누게 되면 문제가 발생했을 때 부분적으로 고쳐서 다시 사용할 수 있어.
어떻게 부품화 시킬것인가? 어떻게 설계할 것인가? 가장 적합하게!(가장 어렵지..)
객체지향은 부품화의 정점!!
메소드도 부품화의 예시야. 메소드를 사용하는 기본 취지는 연관되어 있는 로직들을 결합해서 메소드라는 완제품을 만드는 것이야. 그리고 이 메소드들을 부품으로 해서 하나의 완제품인 독립된 프로그램을 만드는거지.
근데, 프로그램이 커지면서 메소드가 엄~청 많아지고, 메소드와 변수를 관리하는게 어려워.....
So, the new thing is came. 객체 지향 프로그램!~!
핵심은 : 연관된 메소드와 그 메소드가 사용하는 변수들을 분류하고 그룹핑하는 것.
ex) 파일과 디렉토리가 있을 때 메소드나 변수가 파일이면 이것들을 그룹핑하는게 디렉토리(객체)지!
[은닉화, 캡슐화]
부품을 생각해봐. 모니터를 새로 샀을 때 그걸 사용하기 위해 본체랑 선만 연결하자나. 사실 모니터가 작동되는데는 수많은 기능들이 탑재되어 있는데 우리는 상세히 알 필요도 없고, 알 방법도 없지. 즉! 부품화를 아주 잘 시킨거지~!~!
[인터페이스]
: 부품들 간의 약속. HDMI케이블을 어떤 규격으로 만들건지는 약속 되어 있는 것 처럼.
'Study > JAVA' 카테고리의 다른 글
[Java] 클래스 멤버와 인스턴스 멤버 (0) | 2019.08.23 |
---|---|
[Java] 클래스와 인스턴스 그리고 객체 (0) | 2019.08.19 |
입력과 출력 (0) | 2019.08.19 |
메소드 (0) | 2019.08.14 |
배열 (0) | 2019.08.14 |