본문 바로가기
카테고리 없음

[파이썬] 객체 지향 프로그래밍

by 성 언 2023. 1. 12.

인공지능 AI 기초 다지기 강의와 객체 지향 프로그래밍 과목 학습 후 정리한 포스팅 입니다.

이번 포스팅에서는 파이썬 객체 지향 프로그래밍에 대해 학습힙니다.

 

I) 객체 지향 프로그래밍

- Object-Oriented Programming, OOP 

 

- 객체: 실생활에서 일종의 물건
   속성(Attribute)와 행동(Action)을 가짐 

 

- OOP는 이러한 객체 개념을 프로그램으로 표현   

   속성은 변수(variable), 행동은 함수(method)로 표현됨

 

- 파이썬 역시 객체 지향 프로그램 언어

 

- OOP는 설계도에 해당하는 클래스(class)와 실제 구현체인 인스턴스(instance) 로 나눔

 

ex)인공지능 축구 프로그램을 작성한다고 가정 

- 객체 종류: 팀, 선수, 심판, 공
- Action : 선수 – 공을 차다, 패스하다.
                   심판 – 휘슬을 불다, 경고를 주다.
- Attribute : 선수 – 선수 이름, 포지션, 소속팀
                         팀 – 팀 이름, 팀 연고지, 팀소속 선수

class는 설계도로 함수를 선언할 때와 동일하다. (붕어빵의 틀)

class명은 함수명과 달리 CamelCase로 작성한다.

class SoccerPlayer():

    def __init__(self, name, position, back_number):
        self.name = name
        self.position = position
        self.back_number = back_number
        
    def change_back_number(self, new_number):
    	print("선수의 등번호를 변경합니다 : from %d to %d" %(self.back_number, nnew_number))
        self.back_number = new_number
        
        
        
Eon = SoccerPlayer("EON", "FW", 11)
EON.change_back_number(9)

Attribute(속성)의 추가는 __init__, self와 함께 사용한다. (__init__는 객체 초기화 예약 함수)

self는 생성된 instance 자신을 의미한다.

II) OOP characteristic (상속, 다형성, 가시성)

i) 상속

- 부모 클래스로 부터 속성과 Method를 물려받은 자식 클래스를 생성 하는 것

class Employee(Person): # 부모 클래스 Person으로 부터 상속 
    def __init__(self, name, age, gender, salary, hire_date):
        super().__init__(name, age, gender) # 부모객체 사용 
        self.salary = salary
        self.hire_date = hire_date # 속성값 추가
        
    def do_work(self): # 새로운 메서드 추가 
        print("열심히 일을 합니다.")
        
    def about_me(self): # 부모 클래스 함수 재정의
        super().about_me() # 부모 클래스 함수 사용
        print("제 급여는 ", self.salary, "원 이구요, 제 입사일은 ", self.hire_date, " 입니다.")

 

ii) 다형성

- 같은 이름 메소드의 내부 로직을 다르게 작성
- Dynamic Typing 특성으로 인해 파이썬에서는 같은 부모클래스의 상속에서 주로 발생함
- 중요한 OOP의 개념 그러나 너무 깊이 알 필요X

 

iii) 가시성 (캡슐화)

-객체의정보를볼수있는레벨을 조절하는것 

- 누구나 객체 안에 모든 변수를 볼 필요가 없음
   1) 객체를 사용하는 사용자가 임의로 정보 수정 

   2) 필요 없는 정보에는 접근 할 필요가 없음
   3) 만약 제품으로 판매한다면? 소스의 보호

 

<Summary>

-  OOP는 설계도에 해당하는 클래스(class)와 실제 구현체인 인스턴스(instance) 로 나눔

 

*유의사항

- 파이썬을 공부 중인 인공지능공학과 학부생이 공부하여 남긴 정리입니다.

- 정확하지 않거나, 틀린 점이 있다면 댓글로 알려주시면 감사하겠습니다.

 

 

 

 

댓글