01. 클래스와 객체의 정의

 

객체란?

현실 세계에 있는 물건을 컴퓨터 프로그램 안에서 표현 한 것이라 이해하면 쉽다.

 

클래스란?

객체를 만들기 위한 설계도라고 이해하면 쉽다. 예를 들어 "자동차" 라는 설계도를 만들어 놓고, 그 설계도를 이용한다면

여러대의 자동차를 만들 수 있는 것 이며, 이 설계도 ( 클래스 ) 안에는 자동차의 특징(속성) 과 행동(메서드) 이 정의 되어 있는 것이다.

 

조금 더 쉽게 현실에 비유하자면 다음과 같다.

 

클래스 : 자동차 설계도

객체 : 그 설계도를 바탕으로 만든 실제 자동차

속성 : 객체의 특징, 예를들어 자동차의 색상이나 브랜드 등

메서드 : 객체의 행동, 예를 들어 자동차가 달리거나 멈추는 것을 뜻함

 

이렇기에 클래스만 있으면 언제든 필요할 때 마다 객체를 원하는 만큼 만들 수 있는 것이고 각각의 속성과 메서드를 어떻게 주느냐에 따라 다양하게 만들 수 있게 된다.

 

ex ) 계산기 프로그램의 경우 버튼을 만드는 클래스만 있으면 그 안에 들어가는 숫자의 값 (속성) 만 다르게 하여

여러 버튼을 손 쉽게 만들 수 있게 된다.

 

 

 

 


 

 

02. 클래스를 이용해 객체를 만들기 예제

 

원의 면적을 계산하는 Circle 클래스에 원의 둘레를 계산하는 circleC() 함수를 추가

class Circle:
    pi = 3.14  # 원주율(pi) 값을 클래스 속성으로 정의

    def circleA(self, radius):  # 원의 면적을 계산하는 메서드(행동)
        return self.pi * radius * radius  # 원의 면적 = pi * 반지름^2

    def circleC(self, radius):  # 원의 둘레를 계산하는 메서드(행동)
        return 2 * self.pi * radius  # 원의 둘레 = 2 * pi * 반지름

c1 = Circle()  # Circle 클래스의 인스턴스를 생성
# 인스턴스 : 설계도를 바탕으롤 만들어진 실제 객체
print('원의면적: ', c1.circleA(7))  # 반지름이 7인 원의 면적을 계산하고 출력
print('원의둘레: ', c1.circleC(7))  # 반지름이 7인 원의 둘레를 계산하고 출력

[ 참고사항 ]

객체와 인스턴스는 거의 동일한 개념으로 사용 되나 조금 더 구체적으로 설명하면 다음과 같다.

객체 : 프로그래밍에서 데이터와 그 데이터를 처리하는 방법을 캡슐화한 하나의 단위

인스턴스 : 특정 클래스에서 만들어진 객체를 가리키는 말

 

 

 

▸직사각형의 넓이와 둘레를 계산하는 클래스

class Rectangle:
    def __init__(self, width: float, height: float):
        self.width = width  # 직사각형의 가로 길이
        self.height = height  # 직사각형의 세로 길이

    def area(self) -> float:
        """직사각형의 넓이를 계산하는 메서드"""
        return self.width * self.height

    def perimeter(self) -> float:
        """직사각형의 둘레를 계산하는 메서드"""
        return 2 * (self.width + self.height)

# Rectangle 클래스의 인스턴스 생성
rect = Rectangle(5, 10)

# 직사각형의 넓이를 계산하고 출력
print('직사각형의 넓이:', rect.area())

# 직사각형의 둘레를 계산하고 출력
print('직사각형의 둘레:', rect.perimeter())

 

 


 

03. 모듈

모듈은 변수, 함수, 클래스들을 모아놓은 파일이다. 모듈을 사용하면 코드를 여러 파일로 나누어 관리하기 용이하고 코드의 재 사용성을 높일 수 있다. 파이썬에서 모듈은 파일 단위로 나뉘며, 하나의 파일이 곧 하나의 모듈인 셈이다.

모듈은 내장 모듈사용자 정의 모듈 두가지로 분류 된다.

 

내장 모듈 : 파이썬 설치 시 이미 설치된 모듈 ( randim.py , math.py 등 )

사용자 정의 모듈 : 필요 할 때마다 직접 만들어서 사용

 

 

▸ 모듈 사용방법 예제

# rectangle.py 파일

class Rectangle:
    """직사각형의 넓이와 둘레를 계산하는 클래스"""

    def __init__(self, width: float, height: float):
        self.width = width  # 직사각형의 가로 길이
        self.height = height  # 직사각형의 세로 길이

    def area(self) -> float:
        """직사각형의 넓이를 계산하는 메서드"""
        return self.width * self.height

    def perimeter(self) -> float:
        """직사각형의 둘레를 계산하는 메서드"""
        return 2 * (self.width + self.height)

1. 컴퓨터 내에 rectangle.py 라는 파일 을 생성한다.

2. rectangle.py 파일 안에 Rectangle 클래스를 넣어 놓는다. 이는 직사각형의 넓이와 둘레를 계산하는 클래스(설계도) 이다.
클래스를 넣어 두었다면 이는 곧 모듈이 된다.

3. 이 파일이 컴퓨터의 특정 폴더 안에 있으면 다른 python 파일에서 언제든지 모듈을 불러와 사용 할 수 있다.
다만 이 파일이 Python이 인식 할 수 있는 경로에 있어야 한다.

 

# main.py 파일

# rectangle 모듈을 import
import rectangle

# Rectangle 클래스의 인스턴스 생성
rect = rectangle.Rectangle(5, 10)

# 직사각형의 넓이를 계산하고 출력
print('직사각형의 넓이:', rect.area())

# 직사각형의 둘레를 계산하고 출력
print('직사각형의 둘레:', rect.perimeter())

 

4. 이 후 다른 파일에서 코드를 짤 때 직사각형의 넓이와 둘레를 계산하여야 하는 일이 생겼다면 이전에 생성 해 두었던 rectangle.py 모듈 불러와 손 쉽게 사용 하면 된다.

5. rectangle.py 를 불러오려면 import 를 사용하여 가져 올 수 있다.

6. 가져온 rectangle 모듈 안에 Rectangle 클래스 인스턴트를 생성 하고 넓이와 둘레를 계산하면 된다.

# 모듈안에 클래스를 불러오려면 . 을 사용하여 불러 오면 된다 rectangle.Rectangle