http://www.slideshare.net/plusjune/ss-46109239
내가 본 객체 지향 설명 중에 정말 베스트
1. 인간이 다른 동물과 구별되는 특징은 상징 체계
언어, 음악, 문자, 수학 등 상징 체계를 만들고, 발전시켜 다음세대에 물려줌.
이것을 가능하게 하는 것이 바로 '추상' 화하는 능력
2. 추상이란?
대상에서 특징만을 뽑아낸 것으로
"추상" 들을 만들고, 공유하고. 발전시키는 능력
이 능력이야 말로 다른 동물과 구별되는, 사람만이 가진 고유한 능력
3. 객체지향이란?
객체는 작용의 대상이 되는 쪽
지향은 어떤 목표로 뜻이 쏠리어 향함.
객체지향은 "객체 위주" 라고 이해 또는 "객체 갖고 놀자"
4. 객체지향 키워드 5
1) 클래스 : 추상 (abstract)
클래스는 표현 대상의 특징에 대한 서술을 말한다. 클래스는 표현 대상들의 공통적인 특징을 서술한 것
여기에 내 개인적인 의견을 덧붙이면 하나의 클래스는 하나의 책임만을 진다. Builder라는 클래스가 있으면 Builder가 하는 역할은
뭔가 구성을 하는 책임을 지는 것이다. FacotryBuilder 라면 Factory를 구성하는 것에 대해 이 클래스가 전적으로 담당한다.
계속 프로그래밍 하면서 끊임없이 생각하자. 이것이 하나의 책임을 가지고 있는지 만약 2개 이상의 책임을 가지고 있다면
분리시켜야한다.
2) 오브젝트 : 실체 (instance)
클래스가 실체로 만들어진 것
* attribute = data = member variables = state = field
* behavior = operation = member function = method
* 클래스 = 개념 = 타입
* 객체 = 실체 = 변수
3) 캡슐화
- 데이터 + 데이터에 대한 조작 을 묶는 것
- 관련 있는 것을 묶어서 생각하는 것은 매우 자연스러운 일 / 묶어서 이름을 부여하는 것, 바로 추상화
- 개인적인 의견을 덧붙이면 데이터 / 데이터에 대한 조작에 대한 접근을 제어 하는 것
4) 상속성
- 하나의 클래스가 가지고 있는 특징들을 그대로 다른 클래스가 물려 받는 것
5) 다형성
- 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미
- 오버로딩은 이름은 같지만 서로 다른 동작 방법을 가지고 있기 때문에 다형성의 예라고 할 수 있다.
- A obj = new B();
A obj2 = new B2();
위 예시가 상속과 오버라이딩 그리고 형변환을 이용한 다형성의 예
- 인터페이스를 활용한 다형성
5. 메시지 전달
- 객체지향관점에서 프로그램은 오브젝트에 message 를 보내는 것으로 실행
- d.bark() : "객체 d에 bark라는 메시지를 보낸다" 고 읽는다.
'Language > 자바' 카테고리의 다른 글
[Java] Create and Understand Java HeapDumps (0) | 2016.12.19 |
---|---|
자바 Comparator 구현 (0) | 2016.10.25 |
isInstanceOf vs isAssignable (0) | 2016.09.08 |
Java Stream / marshal, unmarshal / serializable / NIO (0) | 2016.09.05 |
2Phase Commit (0) | 2016.08.17 |