오늘은 객체지향 프로그래밍의 초초초 기초를 간단히 설명해볼 예정이다. 무엇이든 기본을 탄탄히 다지는 것이 중요한 법! 객체와 객체지향 프로그래밍의 개념에 대해 살펴보고, 객체와 class의 관계를 살펴보도록 하자. (보다 더 흥미로운 개념은 다음 포스팅에서..!)
목차
객체란?
객체지향 프로그래밍이란?
객체 틀, 클래스
01. 객체란?
속성과 행동으로 이루어진 존재, 즉 우리가 살면서 보는 모든 존재를 말한다.
예를 들어, 인스타그램 유저는 속성으로 "이메일 주소 비밀번호 친구목록" 등이 있다. 그리고 "좋아요 친구추가" 등의 행동을 할 수 있다. 따라서 속성과 행동이 존재하므로 객체라고 할 수 있다.
자동차처럼 현실에 존재하든, 가상에 존재하든 속성과 행동을 떠올릴 수 있다면 객체라고 할 수 있다.
02. 객체지향 프로그래밍이란?
프로그램을 여러개의 독립된 객체들과 객체들간의 상호작용으로 파악하는 프로그래밍 접근법이다.
즉, 프로그램을 객체 간 소통으로 이해하는 것이다.
객체지향 프로그래밍으로 프로그램 만드려면 세 가지 순서를 따라야 한다. 그 순서는 아래와 같다.
- 어떤 객체를 생성할지 결정
- 해당 객체의 속성과 행동을 결정
- 객체 간 어떻게 소통할 것인지 결정
코드를 보면 이해가 조금 더 쉬울 수 있다. 만약, '정수를 입력받고, 입력숫자가 출력될 때까지 입력숫자만큼 반복하여 난수를 출력하고 1개의 종료메시지를 띄워야 한다' 라면, 아래처럼 클래스나 인스턴스를 모두 object화 시켜 프로그래밍을 구성할 수 있다.
이는 난수에 한해 범용적으로 사용될 수 있으므로, 최소의 input으로 최대의 output을 산출할 수 있다. 또한 특정 object를 컴퓨터라는 도구에 인식시키는 데에 목적을 둔다.
즉, 사람의 사고를 컴퓨터로 효율적이게 옮기는 작업이라 볼 수 있겠다.
import random
input_num = int(input())
for i in range(input_num):
ran_num = random.randint(1,100)
print(ran_num, end = ' ')
if ran_num == input_num:
print("input random number print")
continue
else: print('exit')
이제 아래 포스팅에서 개념을 하나씩 천천히 알아보도록 하자.
03. 객체 틀, 클래스(Class)
우리가 인스타그램 어플을 만든다고 가정해보자.
이때 User객체를 생성한다고 했을 때, 이 User 객체의 속성과 행동을 정해야 한다. 이는 User 객체의 틀이라고 할 수 있다. 이 틀을 기반으로 User 들을 마치 붕어빵처럼 찍어 생성하면 된다. 이처럼, 객체의 틀을 의미하는 것이 Class라고 한다.
클래스를 생성하면, 객체(=인스턴스)를 비교적 수월히 여러 개 만들 수 있다.
기본적인 class 생성 방법
class User:
pass
user_1 = User()
user_2 = User()
User Class를 이용해 'user_1', 'user_2' 라는 객체를 만든 과정이다. (아직은 기초 작업이므로, 별도의 단계를 지정하지 않았다.)
마치 같은 붕어빵 틀로 찍었어도 슈크림 붕어빵과 팥 붕어빵은 다르듯, user_1과 user_2는 엄연히 다른 객체라는 점이 큰 특징이다.
오늘은 아주 기초적인 class 개념과 객체 개념에 대해 살펴보았다. 다음 포스팅에서는 다양한 예시 및 보다 깊은 개념을 설명할 예정이다.
'컴퓨터 사이언스 (CS) > 자료구조 및 알고리즘' 카테고리의 다른 글
06. 프로그래밍과 문제해결_내장 메소드 (0) | 2021.06.03 |
---|---|
05. map 에러 해결 방법 (0) | 2021.06.02 |
04. 인스턴스 변수와 메소드 (0) | 2021.06.02 |
02. 좋은 코드란 무엇인가 (0) | 2021.06.02 |
01. 프로그래밍 언어 이해하기 (0) | 2021.06.02 |