객체 지향의 4대 특성
캡 - 캡슐화 : 정보 은닉
상 - 상속 : 재사용
추 - 추상화 : 모델링
다 - 다형성 : 사용 편의
객체 지향에서 Inheritance 즉 상속은 가장 중요하고 강력한 특성임은 분명하다.
지금까지 객체지향을 한번쯤이라도 공부한 사람이라면 클래스와 객체의 관계를 붕어빵틀과 붕어빵 이라는 비유를 많이 봤을 것이다. 하지만 이 비유가 적절한 지 생각해보자(이러한 개념을 일단 버려라!)
클래스 객체명 = new 클래스();
일반적 객체를 생성하는 문법이다 이 문법을 붕어빵틀과 붕어빵에 적용시켜 보자
붕어빵틀 붕어빵 = new 붕어빵틀();
!!!! 위 논리가 맞다고 생각되는가? 붕어빵틀을 생산하는 기계가 있다고 하자. 그럼 붕어빵틀이 붕어빵을 찍어내서 클래스라고 한다면! 같은 논리로 기계는 붕어빵틀을 찍어내는 클래스가 된다.
기계 붕어빵틀 = new 기계(); => 새로운 기계를 만들었는데 붕어빵틀이 되었다.
붕어빵틀은 붕어빵을 만드는 팩토리일 뿐이였던 것이다.
클래스는 분류에 대한 개념이지 실체가 아니다. 하지만 객체는 실체다.
추상화 : 모델링
공통되는 특성이나 속성 따위를 추출하여 파악하는 것! 즉 추상화란 구체적인 것을 분해해서 관찰자가 관심있는 특성만 가지고 재조합하는 것이며 이는 곧 모델링이라고 할 수 있다.
객체 - 세상에 존재하는 유일무이한 사물
클래스 - 분류, 집합, 같은 속성과 기능을 가진 객체를 총칭하는 개념
세상에 존재하는 유일무이한 객체를 특성(속성 + 기능) 에 따라 분류해 보니 객체를 통칭할 수 있는 집합적 개념, 즉 클래스가 나오게 된다. 따라서 클래스는 같은 특성을 지닌 여러 객체를 총칭하는 집합의 개념이다.
애플리케이션 경계 - Context
내가 만들고자 하는 애플리케이션은 어디에서 사용될 것인가?에 대한 답이 바로 Context다.
즉 Context에 따라 클래스의 설계가 달라질 수 있다는 것이다.
여기까지 다시 개념정리를 했다면 추상화를 다시 정의해 보도록 하겠다.
추상화란 구체적인 것을 분해해서 관심 영영(Context) 있는 특성만 가지고 재조합하는 것이다. == 모델링
이러한 모델링은 실제 사물을 정확히 복제하는 것이 아니라 목적에 맞게 관심있는 특성만을 추출해서 표현하는 것이다. 클래스를 설계하거나 데이터베이스 테이블을 설계할 때 필요한 기법이기도 하다.
자바에서는 이러한 추상화를 class 키워드를 통해 지원하고 있다.
추상화 = 모델링 = class키워드
'CS 지식' 카테고리의 다른 글
[Git] SSL certificate problem : self signed certificate 에러 (0) | 2019.08.19 |
---|---|
[운영체제] 프로세스와 쓰레드 (0) | 2019.02.21 |
[CS기초지식] REST API의 특징 (0) | 2018.12.13 |
[C/S 기초] 미들웨어와 웹 서버(Middle Ware and Web Server) (0) | 2018.11.26 |
[RESTful이란?] RESTful? 간략히 알아보기 (2) | 2018.09.20 |