클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

객체의 세계로 2 - 왜 객체지향 프로그래밍인가? 본문

프로그래밍 언어/파이썬

객체의 세계로 2 - 왜 객체지향 프로그래밍인가?

huenuri 2024. 8. 24. 21:44

이제 이 단원만 학습하면 이론 수업은 다 마치게 된다. 객체지향 프로그램은 분량이 많지 않아 금방 진도가 나가는 것 같다. 근데 사실은 수업 진도과 분량은 비슷한데 내가 프로그래밍을 받아들이는 속도가 빨라진 것 같기도 하다. 1주일 전에는 이런 수업 분량이면 1시간 반은 족히 걸렸는데 지금은 1시간도 되지 않아서 소화할 수 있게 된다.

이번 시간에는 객체 지향 프로그래밍의 특징에 대해서 살펴보게 될 것 같다. 바로 학습에 들어가보자!


 

 

 

 

이론 3 - 왜 객체지향 프로그래밍인가?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

강의에는 포O몬이라고 표현했지만, 그냥 포켓몬이라고 부르겠다. 포켓몬은 필드와 행동을 가지게 된다.

 

 

 

 

 

 

 

 

포켓몬 클래스 안에 필드를 먼저 만들고 메서드도 추가해준다. 조금 전 실습 문제에서 난 처음에 함수부터 만들어줘 답을 틀리고 말았었다. 이렇게 가장 먼저 필드를 선언한 후에 메서드를 만드는 거였다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

포켓몬 클래스 안에 인자로 피카츄를 넣어주면 상속이 된다.

 

 

 

 

 

 

 

점을 찍고 인스턴스를 써서 그 객체를 불러올 수 있다.

 

 

 

 

 

 

 


 

 

퀴즈 3 - 클래스 상속

 

 

파이썬에서는 상속을 받는 것이 C#이나 C언어 계열과는 다른 것 같다. :을 쓰지 않고 괄호로 상속 받는 것을 적어준다.


 

 

 

 

퀴즈 4 - 매개변수

 

 

이번 문제는 좀 어려웠다.

 

 

2번 아니면 3번일 것 같았다. 왜 이렇게 되는지는 잘 모르겠는데 다음에 좀더 생각해봐야겠다. 지금은 줄려서 생각이 잘 나지 않으니까.


 

 

 

 

실습 3 - 객체지향 프로그래밍의 특징 : 상속

 

 

 

 

 

혼자서 풀어보기

 

뭔가 오류가 잔뜩 뜨는데 강의 영상을 시청하며 문제 코드를 분석하기로 했다.

 

 

 

 

다시 풀어보기

Pet 클래스를 상속하는 것까지는 잘했는데 Dog 클래스로 인스턴스 maltese를 만드는 문제에서 틀렸다. 아직 인스턴스를 어떻게 생성하는지 잘 모르는 것 같다. 인스턴스는 클래스에서 만들어주었다는 뜻으로 왼쪽에 적어주는데 사실 별로 어려운 것은 아니다.
단지 익숙하지 않았을 뿐이지. 내가 쓴 코드는 Pet 클래스의 maltesse를 가져온다는 건데 아직 객체를 생성하지 않았기 때문에 불러올 수가 없다.

아마 어디서 보긴 봤는데 어떻게 적용되는지 몰라서 이것저것 다 써보다가 틀린 것 같다.

 

print로 찍어서 확인해보았다.


 

 

실습 4 - 객체지향 프로그래밍의 특징 : 다형성

 

다형성이란 같은 모양의 코드가 다른 역할을 하는 것이다. 왜 같은 코드를 써서 헤깔리게 할까? 다형성을 사용하면 코드의 양을 줄일 수 있기 때문이다.

 

 

 

 

혼자서 풀어보기

 

혼자서도 문제를 아주 잘 풀었다. 근데 어떻게 하면 출력이 나오게 하는지 궁금해서 영상을 참고해보았다.

 

 

 

 

 

출력문까지 나오게 하기

 

말티즈라는 개를 Dog() 클래스에, 길동이라는 사람을 Human() 클래스에 만들어주었으니 그 클래스의 필드와 메서드를 출력할 수 있다.

어젯 밤에 이 문제까지 풀고 너무 졸려서 한 문제를 남겨놓고 취침하고 말았다. 다음날 새벽에 이어서 문제를 풀어본다.


 

 

실습 5 - 파이썬에서의 객체

 

 

 

 

혼자서 풀어보기

 

set 객체를 사용했다고 하는데 처음에는 무슨 말인가 했다. 근데 이번에도 리스트를 중괄호에 담아서 이런 문제가 발생한 것 같다. 대괄호과 중괄호의 차이를 알지 못했는데 이젠 알 것 같다.
대괄호는 list 속성이고, 중괄호는 set 객체를 담을 때 사용한다. 문제에서는 리스트에 담았으니 대괄호를 사용해야 하고, 메서드일 때 소괄호를 쓸 수 있다.

 

 

원소 4도 잘 들어갔다. 문제를 잘 풀었으나 영상을 시청하며 추가로 학습을 진행해보자!

 

 

 

 

클래스인지 확인하는 방법

 

nums에 숫자를 넣었는데 클래스 타입임을 확인할 수 있다.

 

문자열을 넣어도 마찬가지였다. 이렇게 파이썬은 모든 것을 객체로 관리하고 있다.


 

 

 

 

세번째 단원 학습을 마치고

어젯밤에 11시까지 이 단원 학습을 진행하다, 도저히 눈이 감기고 끝까지 다 하지 못한채 한 문제를 남겨놓고 잠자리에 들었다. 눕자마다 바로 30초 안에 잠들었던 것 같다. 오늘 새벽에 맑은 정신으로 문제를 풀어보니 정말 좋다.
이제 클래스와 객체, 함수와의 관계를 아주 잘 알게 되었다. 인스턴스를 만드는 건 좀 어렵지만 이제는 이것도 잘할 수 있게 되었다. 어제 자바 수업에서 상속을 배웠는데 그 수업과도 연관이 되어서 파이썬과 자바를 비교하며 공부할 수 있어서 좋았다. 클래스와 OOP도 조금씩 재미있어지고 있다.

다음 포스트에서는 단원 요약을 하고 미션 문제를 풀어보기로 하자~