24.07.11

jiiiiiiiArchive.·2024년 7월 11일

🤯지식주머니🤯

목록 보기
15/98
post-thumbnail
* 파이썬 객체지향프로그래밍(OOP;Object Oriented Programming)
1. 객체
- 프로그램이 어떤 작업을 수행하기 위해서는 1)데이터 와 2)데이터를 조작하는 행위 두 가지 요소가 필요함.  
- 일반적으로 데이터는 변수에 넣어서 사용하고, 데이터를 조작하는 일은 함수로 구성해서 쉽게 실행할 수 있도록 만들어놓음.
- 객체(object, instance) : 서로 연관된 데이터와 그 데이터를 조작하기 위한 함수를 하나의 집합에 모아놓은 것.
- 멤버(member), 속성(attribute) : 집합의 원소가 되는 변수나 함수
- 메서드(method) : 객체의 속성인 함수
  ex) 사각형의 면적을 구하는 프로그램
        필요한 변수 : 가로 길이, 세로 길이 두 개의 데이터를 넣을 변수
        필요한 함수 : 두 길이를 곱해서 면적을 구하는 함수
        
          1) 객체지향을 사용하지 않고 파이썬으로 구현
                h = 10
                v = 20
                
                def area(h,v) : 
                  return h * v
                  
                a = area(h,v)
                print(a)
                # 결과 : 200
          2) 객체지향 방식
                class Rectangle(object) :
                  def __init__(self, h, v) :
                    self.h = h
                    self.v = v
                    
                  def area(self) :
                    return self.h * self.v
                
                r = Rectangle(10, 20)
                a = r.area()
                print(a)
                # 결과 : 200
                # 객체 r에 포함된 변수들과 함수, 즉 속성을 꺼내려면 객체 이름 뒤에 점(.)을 붙인 다음 속성 이름을 입력하면 된다.
                # r.h 10, r.v 20 r.area() 200
                
2. 클래스
- 객체지향프로그래밍에서 객체를 만드려면 객체를 바로 만들지 못하고 항상 클래스(class)라는 것을 만든 후 그 클래스를 이용해 객체를 만들어야한다.
- 위 예제에서 Rectangle은 클래스이고, r은 Rectangle의 클래스로 만들어진 객체이다.
객체와 클래스의 관계는 "붕어빵""붕어빵을 굽는 틀"에 비유할 수 있다., 정해진 속성, 여기에서는 가로길이 h와 세로길이 v라는 속성을 가지도록 사각형 클래스를 한 번 만들어 놓으면 이 속성을 가지는 실제 사각형은 얼마든지 많이 만들 수 있다.
- 예를 들어 위에서 만들어 놓은 Rectangle 클래스로 다음과 같이 5개의 사각형을 만들 수 있다.
    a = Rectangle(1, 1) # 가로1, 세로1인 사각형
    b = Rectangle(2, 1) # 가로2, 세로1인 사각형
    c = Rectangle(4, 2) # 가로4, 세로2인 사각형
    d = Rectangle(6, 3) # 가로6, 세로3인 사각형
    e = Rectangle(8, 5) # 가로8, 세로5인 사각형
- 이 사각형들의 면적은 다음과 같이 계산한다.
    print(a.area())
    print(b.area())
    print(c.area())
    print(d.area())
    print(e.area())

3.생성자
- 파이썬에서 클래스를 정의하는 문법은 다음과 같다.
    class 클래이름(object) :
      def __init__(self, 속성값1, 속성값2, 속성값3) :
        self.속성이름1 = 속성값1
        self.속성이름2 = 속성값2
        self.속성이름3 = 속성값3
- 이때 속성값 인수는 필요하지 않다면 없어도 된다. 여기에서 class 블럭 안에 정의된 __init__함수는 생성자(constructor)라고 하며, 클래스 정의에서 가장 중요한 함수이다.
- 객체를 생성할 때는 클래스 이름을 함수처럼 호출해야 하는데, 이때 실제로는 __ini__로 정의된 생성자 함수가 호출된다. 생성자 함수 내부에서는 생성자를 호출할 때 넣은 입력 변수, 즉 인자의 값을 속성값으로 저장한다.
profile
이것저것 다 적는 기록장📚

0개의 댓글