PLOD

파이썬[python] 클래스 , 상속 본문

개발 공부/Python

파이썬[python] 클래스 , 상속

훌룽이 2022. 7. 30. 16:30

1.클래스

프로그래밍에서 클래스를 사용하는 이유는 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성하여 코드의 재사용성을 늘리고 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경 할 수 있어 코드의 관리가 용이하다는 이유와 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다.

클래스는 변수와 메서드로 이루어져 있다. 변수는 클래스에 포함되는 숫자, 문자 , boolean 값이고 , 메서드는 프로그래밍에서 클래스를 사용할 때 원하는 동작을 하도록 해준다.

위의 코드에서 확인 할 수 있 듯, 클래스는 코드의 반복되는 부분을 쉽게 작성 할 수 있게 해주고 매개변수의 값을 쉽게 변경할 수 있게 해준다. 이러한 장점으로 프로그램의 개발과 유지보수에 드는 시간과 비용을 획기적으로 개선이 가능해졌다.

 

객체지향개념을 학습할 때 재사용성과 유지보수 그리고 중복된 코드의 제거, 이 세 가지 관점에서 보면 보다 쉽게 이해할 수 있을 것이다.

 

 

ex) 이름, 번지수, 지역에 대한 n명의 자료가 주어지면, 사전순으로 이름이 가장 느린 사람의 자료를 출력하는 프로그램을 작성해보세요. 단, c언어의 경우 구조체를, 다른 언어의 경우 class를 이용하여 각 사람의 정보를 담은 객체 n개 만들어 문제를 해결해주세요.

class live:
    def __init__(self,name,address,location) :
        self.name = name
        self.address = address
        self.location = location
    
    def printInfo(self) :
        print("name",self.name)
        print("addr",self.address)
        print("city",self.location)

n = int(input())
arr = [tuple(input().split()) for _ in range(n)]
people = [live(name,address,location) for name,address,location in arr]


target_idx = 0

for i,person in enumerate(people) :
    if person.name > people[target_idx].name :
        target_idx = i

people[target_idx].printInfo()

 

2. inheritance

클래스에서 상속(inheritance)이란, 물려주는 클래스(부모 클래스 : Parent Class, Super class)의 내용(속성과 메소드)을 물려받는 클래스(자식 클래스 :Child class, sub class)가 가지게 되는 이다.

위의 코드는 부모클래스인 Monster 클래스와 자식 클래스인 wolf, shark, dragon 클래스로 이루어져 있다. wolf, shark, dragon 클래스는 Monster 클래스를 상속받고 있다. 위의 메서드에서 move 메서드는 각각의 클래스에서 함수 명은 같지만 클래스 별로 다르게 동작하고 있다 이는 메서드 오버라이딩(method overriding)을 하였기 떄문이다. 메서드 오버라이딩을 통해 부모 클래스에서 선언되었던 메서드를 자식 클래스에서 재정의 해줄 수 있다.

Comments