티스토리 뷰
객체지향(object oriented) 언어란? 클래스(class)와 객체란(object?) 알기 쉽게 설명 하기
KS짱짱맨 2020. 3. 15. 13:24오늘은 객체지향 언어의 의미와 특징에 대해 알아 봐야겠다.
객체 지향이란?
객체 지향이란 사람이 세상을 인식하는 하나의 방법론이다.
이는 '추상화' 능력과 관련이 깊다.
추상화 능력은 어떤 대상의 '공통점'을 추출해 그것을 하나의 대상을 인식하는 '틀'로 만드는 능력이다.
예를들면
사람은 위의 사진에 보이는 모든 동물을 '개'라고 한다. 하지만 개라고 해서 다 같은 것은 아니다.
만약 인간에게 '추상화 하는 능력'이 없었다면, 우리는 저 위에 있는 동물들 모두 전혀 다른 동물로 인식 할 것이다.
저 위에 있는 개들은 생김새도 다 다르고, 저마다의 특징이 있겠지만 우리 인간은 그 와중에도 '공통적 특징'을 찾아내어
그것을 굳이 정의한다. (발이 4개고, 털이 있고, 심장에 해롭고, 개 짖는 소리를 내고 등등)
이제 그러한 공통적인 특징을 지닌 무엇에 '개'라는 이름을 부여하게 되면, 이제 사람들은 1)발이 4개이고 2)털이있으며, 3)멍멍 소리를 내면서 4)심장에 해로운 녀석들을 모두 동일하게 '개'라고 인식할 수 있는 것이다.
만약에 일정부분 동일한 특징을 가지지만, 구별해야하는 다른 특징들이 있는 경우에는 더 큰 묶음으로 묶을 수도 있다.
객체 지향 프로그래밍 이란?
객체 지향 프로그래밍은 위에서 언급한 '추상화'의 개념을 이용한 프로그램 방식이라고 생각해도 될 것같다.
새롭게 익혀야할 용어가 있는데 클래스(class) 와 객체(object)이다.
class와 object의 가장 큰 차이는 실제 존재여부이다. 이해가 어려울 수 있으니, 표로 정리해 보자.
Class (개념) | '개' | '고양이' | '자동차' | '치킨' |
Object (실제) | 옆집에 있는 개 | 길에서 만난 고양이 | 주차장에 있는 차 | 어제 저녘 먹은 치킨 |
즉, 클래스(class)라는 것은 내 앞에 있는 어떤 물건이 음식인지 아닌지를 구분 할 수 있는 '기준'과 같은 것이고
오브젝트(object)는 실제 존재하는 어떤 것이라고 생각하면 될 것같다.
추가적으로 몇가지 용어를 정리해보면, 클래스와 오브젝트는 다음과 같은 내용을 담고 있다.
1. 속성(Attribute) = 기본 정보라고 생각하면 될 것 같다. 속성은 Data 타입/ Data 이름/ Data 값을 가진다.
ex) 인간이 가지는 속성에는 키, 몸무게, 성별 등이 있을 수 있다.
2. 함수(function) = 수행 할 수 있는 특정한 기능, 행동을 뜻 한다.
ex) 인간이 가지는 함수는 먹는다(밥), 잔다(), 걷는다(), 탄다(지하철) 등 이 있을 수 있다.
<아직 풀어서 설명 안한 부분>
※ 함수(Function) VS 메서드(Method)
- 함수(Function)는 특정한 기능과 행동을 수행하는 모든 것을 지칭한다.
- 메서드(Method)는 어떤 class안에서 동작하는 함수를 말한다. (메서드는 함수이다.)
- 프로그램에서의 차이는 접근성에 있다. 메서드인 함수를 실행하려면 우선 class를 특정한 후 실행 해야 한다.
객체 지향 프로그래밍의 특징
1. 캡슐화(encapsulation) = class에 속성과 함수를 정의 할 수 있는 기능.
인간이 하는 추상화와 같다.
2. 상속(inheritance) = 어떤 class의 특징을 다른 class가 물려 받도록 하는 기능
여기서 특징을 물려준 class가 부모, 물려 받은 class는 자식이라고 한다.
3. 다형성(polymorphism) = 부모에게 물려 받은 특징이 변할 수 있다.
결론
1. 객체 지향은 인간이 세상을 인식하고 이해하는 하나의 방법이다. (feat, 추상화)
2. class는 특징(data, 함수)만 가진다. object는 class의 특징을 가진 실체이다.
(옆집 누렁이가 개의 특징을 가진 실체인 것처럼)
3. 객체지향 프로그램 언어는 인간이 인식하는 것처럼 프로그래밍이 될 수 있도록 여러가지 특징을 지닌다.
끝
'IT > IT 이것 저것' 카테고리의 다른 글
컴퓨터는 어떻게 작동할까?(2) - 컴퓨터의 언어 "2진수" (0) | 2020.04.06 |
---|---|
컴퓨터는 어떻게 작동할까?(1) - 컴퓨터 작동원리 기본 (0) | 2020.04.04 |
MCV 패턴? MCV모델? 뭘까 - 코드이그나터, php, 개발패턴, 디자인 (0) | 2020.03.29 |
웹 개발자는 무슨 일을 하는 걸까? - 프론트앤드(front end), 백앤드(back end), 풀스택(full stack) (0) | 2020.03.05 |
늦으막히 코딩 배우기(1) - git과 github란?? (0) | 2020.02.11 |
- Total
- Today
- Yesterday
- 강화학습
- beautifulsoup
- 스타트업
- ET5X
- 알고리즘
- 랜덤맵
- 크롤링
- 가격데이터
- 시스템투자
- It
- 심리학
- 파이썬
- 경영학
- Unity
- 비전공자
- 유니티
- 프로그래머스
- 터틀트레이딩
- IT기초
- PYTHON
- 주식투자
- json
- 사진크롤링
- 일자별
- C#
- Anet
- 머신러닝
- 주식
- 마케팅
- requests
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |