독고솜의 인생일지
C++ OOP 철학 (객체와 클래스 그리고 프로퍼티) 본문
본 게시글은 C++17을 기준으로 작성하였으며, https://google.github.io/styleguide/cppguide.html 의 Google의 코딩 스타일을 준수합니다.
수정및 완본 예정일(2022-11-01) 예전부터, 지금까지, 앞으로의 배울 내용을 이쁘게, 정리하면서 나를 위해 쓰고 다른 누군가가 이 글을 보고 행복을 떠오르기를 빕니다.
글을 한번에 갑작스럽게 올라오거나 멈추거나... 비가 오는 것처럼 내려옵니다.
세상에는 딱 두 가지 프로그래밍 언어가 있다.
사람들이 욕하는 언어와 아무도 사용하지 않는 언어.
-Bjarne Stroustrup-
절차형 사고방식
하나의 작업만 담당한는 프로시저라는 곳에 작은 단위로 여러 코드를 구성.
프로시저 기능이 없다면 코드 전체를 main() 함수 안에 넣어야함.
절차형은 데이터의 표현 방식을 우선시하지 않음.
즉 어떤 구식? 어떠한 거? 이런거 불가능.
객체지향 철학.
"이 프로글매이 무슨 일을 하는가" 라는 질문을 토대로 접근했는데.
객체는 "현실세계의 어떤 대상을 모델링하는가?" 라는 관점에서 접근.
클래스.
그림으로 쉽게 비유하자면 나무에 열려있는 저 맛있는 "사과"랑
쫄라맨이 의자에 앉아서 먹고있는 "사과"를 가리킬 때는 엄연히 다르다.
(눈,눈 이라는 이중적 표현을 가지는 국어시간에 나오는 그 어찌고 랑 다르다)
그래서 저게 뭔 상관인데?
누군가가 사과가 뭐냐고 물어보자.
그러면 우리들은 "사과는.. 나무에서 자라고 빨간색을 띄고 먹을때 마다 아삭아삭 소리를 내는 한 과일의 한 종류(클래스)야" 이 처럼 클래스는 어떤 대상의 유형을 정의하는 것을 정리한 것이다.
반면 어떤 특정한 오렌지를 가리킬 떄는 구체적인 대상(객체)를 의미한다.
모든 객체마다 클래스가 존재한다.
즉.
지금 의자에서 먹고있는 사과(객체)는 사과 클래스에 속해있다고 말할 수 있다.
그래서 지금 "나"는 저 객체가
사과는.. 나무에서 자라고 빨간색을 띄고 먹을때 마다 아삭아삭 소리를 내는 한 과일의 한 종류(클래스)야
라고 알수있다.
구체적인 예시로...
주식종목 추천 Application을 생각해보면.. OOP관점에서 주식시세는 class
시세라는 추상적인 개념을 정의하기 때문.
Apple의 주식은 "시세"라는 클래스에 속하는 구체적인 인스턴스(객체) 이다.
객체란?
객체는 프로퍼티(속성)로 구분한다.
앞에서 우리가 사과를 나무에서 자라고 빨간색을 띄고 먹을때 마다 아삭아삭 소리를 내는 한 과일의 종류 를 사과 클래스로 정의했다. 여기서 말하는 "빨간삭", "아삭아삭"이 프로퍼티같지만 요즘 같은 현대와 시대에는
매우 많은 사과가 존재한다. 그러므로 이건 프로퍼티가 아니다.
즉 사과는 나무에서 자라고, 과일이라는 클래스의 프로퍼티다
하지만 프로퍼티도 과일이란 클래스를 가지지만 독특한 색에 의하여 다른 과일 객체와 구분된다.
클래스에 존재하는 프로퍼티의 값은 그 클래스에 속한 모든 객체에 똑같이 가지지만 객체 프로퍼티의 값을 그 클래스에 속한 객체마다 다를 수있다.
나무 class 프로퍼티 = 나무, 과일
빨간 사과(_객체) = 빨간색
초록 사과(_객체) = 초록
즉. 프로퍼티는 클래스랑 객체로 구분할 수 있다.
동작? MOVE? WORK?
객체가 하는 일.
사과가 하는 일을 별로 없지만.
사과로서 할 수 있는 일은 먹기같은 이런게 있다.
동작도 클래스 관점과 객체 관점으로 분리가 된다.
1줄 요약
개발할때 객체 관점으로 개발하자.
'프로그래밍 언어 > C ++' 카테고리의 다른 글
Class 란? (0) | 2022.10.03 |
---|---|
new 연산자 (0) | 2022.10.03 |
C++ 의 레퍼런스 (참조자 &) (0) | 2022.10.02 |