본문 바로가기

Language/자바

객체지향의 개념

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