컴퓨터 사이언스 (CS)/자료구조 및 알고리즘

03. 객체지향 프로그래밍 개론

한소희DE 2021. 6. 2. 08:39

오늘은 객체지향 프로그래밍의 초초초 기초를 간단히 설명해볼 예정이다. 무엇이든 기본을 탄탄히 다지는 것이 중요한 법! 객체와 객체지향 프로그래밍의 개념에 대해 살펴보고, 객체와 class의 관계를 살펴보도록 하자. (보다 더 흥미로운 개념은 다음 포스팅에서..!)

 

 

 

 

목차

객체란?

객체지향 프로그래밍이란?

객체 틀, 클래스

 


 

 

01. 객체란?

속성과 행동으로 이루어진 존재, 즉 우리가 살면서 보는 모든 존재를 말한다.

예를 들어, 인스타그램 유저는 속성으로 "이메일 주소 비밀번호 친구목록" 등이 있다. 그리고 "좋아요 친구추가" 등의 행동을 할 수 있다. 따라서 속성과 행동이 존재하므로 객체라고 할 수 있다.

자동차처럼 현실에 존재하든, 가상에 존재하든 속성과 행동을 떠올릴 수 있다면 객체라고 할 수 있다.

 


 

02. 객체지향 프로그래밍이란?

프로그램을 여러개의 독립된 객체들과 객체들간의 상호작용으로 파악하는 프로그래밍 접근법이다.

즉, 프로그램을 객체 간 소통으로 이해하는 것이다.

객체지향 프로그래밍으로 프로그램 만드려면 세 가지 순서를 따라야 한다. 그 순서는 아래와 같다.

 

  1. 어떤 객체를 생성할지 결정
  2. 해당 객체의 속성과 행동을 결정
  3. 객체 간 어떻게 소통할 것인지 결정

 

코드를 보면 이해가 조금 더 쉬울 수 있다. 만약, '정수를 입력받고, 입력숫자가 출력될 때까지 입력숫자만큼 반복하여 난수를 출력하고 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 개념과 객체 개념에 대해 살펴보았다. 다음 포스팅에서는 다양한 예시 및 보다 깊은 개념을 설명할 예정이다.