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

객체의 세계로 1 - 객체지향 프로그래밍 및 클래스와 인스턴스 본문

프로그래밍 언어/파이썬

객체의 세계로 1 - 객체지향 프로그래밍 및 클래스와 인스턴스

huenuri 2024. 8. 24. 21:40

오늘도 9시가 다 되어서야 저녁 공부를 시작해본다. 저녁 운동을 하고 집에 오면 거의 7시 반쯤 되기에 저녁은 대부분 8시 정도에 먹게 되는 것 같다. 오늘은 저녁을 먹으며 왠지 찬양을 듣고 싶었다. 오늘 하루를 생각하니 참 감사한 마음이 들었고, 남은 시간도 내가 해야 할일에 집중하며 하루를 잘 마감하려고 한다.

이제 새로운 단원에 들어가게 된다. 드디어 그 유명한 객체지향 프로그래밍의 세계에 진입한 것이다. 어떤 수업이 될지 기대가 된다. 2시간 반 정도 공부하다가 늦어도 11시 반에는 취침하려고 한다.
그럼 오늘의 저녁 공부를 시작해보자!


 

 

 

이론 1 - 객체지향 프로그래밍

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

츨력을 5번 하는 대신 for문을 사용하면 간단하게 줄일 수 있다.

 

 

 

 

 

 

 

 

 

긴 문장을 함수로 대신할 수도 있다. 결국 코드의 반복 사용을 막고 효율적인 코드를 만들 수 있게 된다.

 

 

 

 

 

 

 

 

 

 

객체지향 프로그램이 나오게 된 배경

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

우리는 지금까지 성질은 변수에, 할수 있는 행동은 함수로 사용해왔다. 이 둘을 하나로 합친 자료인 객체를 만들게 된 것이다.


 

 

 

 

 

 

퀴즈 1 - 객체지향 프로그래밍

 

 

 


 

 

 

 

이론 2 - 클래스와 인스턴스

클래스란 무엇인가?

앞서 설명했듯이 사람이라면 성질과 행동이 있어야 한다.

 

 

 

 

 

 

 

 

클래스를 만드는 법

클래스를 적고 그 옆에 클래스 이름을 적어주면 된다.

 

 

 

 

 

 

 

 

Human에 name과 age라는 변수를 추가한다. 클래스 안에 변수를 정의해줌으로 필드를 만들 수 있고 이는 클래스의 성질이 된다.

 

 

 

 

 

 

 

메서드는 짝꿍이 있는 함수이다. 이 짝꿍은 객체이다. 즉, 메서드는 객체 안에 들어있는 함수를 말한다.
Human 클래스에 def 키워드로 exercise 함수를 정의했다. 이제 Human 클래스 안에 exercise 메서드가 생겼다.

 

 

 

 

 

 

 

 

self는 파이썬에서 메서드를 정의할 때 쓰이는 하나의 귀약이다. 이렇게 함수(self)라고 쓰면 메서드임을 알 수 있다.

 

 

 

 

 

 

 

 

 

클래스에서 찍어낸 객체를 인스턴스라고 한다. 사람 클래스로 만든 인스턴스(객체)는 성윤이 된다.

 

 

 

 

 

 

 

 

 

붕어빵 틀 클래스의 특징을 찍어서 만들어낸 것이 인스턴스인 붕어빵이다. 신기한 것은 이러한 인스턴스에서 팥도 나올 수 있고 슈크림 등 다양한 객체를 만들어낼 수 있다. 그럼에도 붕어빵 틀이라는 클래스는 달라지지 않는다.

 

 

 

 

 

 

 

이렇게 써주면 Human 클래스에서 bobby 인스턴스를 찍어내겠다는 뜻이다. 인스턴스의 이름은 bobby이다.

 

 

 

 

 

 

 

 

 

인스턴스의 필드, 즉 변수는 인스턴스.변수라고 쓴다. 예시를 보면 bobby의 이름, 나이를 불러올 수 있다.

 

 

 

 

 

 

 

 

인스턴스 뿐 아니라 함수에도 사용할 수 있다. bobby의 메서드 excercise를 불러오는 방법은 이렇게 쓸 수 있다.


 

 

퀴즈 2 - 클래스와 인스턴스

  1. Human은 클래스이다.
  2. name은 필드 즉 변수이다.
  3. exercise는 매개변수가 아니라 메서드이다.

 

 

 


 

 

 

 

실습 1 - 클래스 만들기

 

 

 

 

혼자서 풀어보기

 

 

 

 

다시 풀어보기

클래스 다음에는 무조건 메서드를 정의하고 그 다음에 필드를 만드는 건줄 아닌데 꼭 그렇지만은 않았다. 먼저 필드를 정의한 후에 메서드를 쓰는 게 순서인 것 같았다.
함수의 매개변수가 없어서 비워두었지만 파이썬에서는 괄호 안에 self를 넣어주는 것이 관례임을 기억하자!

그리고 print로 찍는 것이 아니라 반환을 한다고 했다. 문제를 잘 읽어봤어야 하는데 대충 눈으로 쭉 훑고 문제를 풀기 바빴던 모양이다.

 

아무것도 나오지 않는 것이 정상이다.


 

 

 

 

 

실습 2 - 인스턴스 만들기

 

 

 

 

혼자서 풀어보기

 

무슨 문제인지 오류가 떠서 보니 nameError였다. Bob이라는 이름이 정의되어 있지 않다고 하는데, 문자열을 쓸 때는 따옴표를 써야 한다는 것을 깜박 잊었다.

 

 

 

 

 

다시 풀어보기

 

이제 답이 잘 맞았다. 강의 영상을 보지 않고도 혼자서 문제를 해결했다~


 

 

 

첫번째와 두번째 단원 학습을 마치고

이렇게 객체지향 프로그램에서 클래스와 인스턴스를 만드는 법에 대해서 배울 수 있었다. 그리고 함수와 반복문이 있는데 왜 굳이 클래스를 만들 필요가 있는지도 수업을 통해 알게 되었다.
그동안 자바 수업에서 클래스를 만들고 객체를 생성했지만, 왜 이런 식으로 만들어지는지 모른채 수업의 진도만 따라가기 바빴다. 선생님께서 기초 수업 때 설명을 했을테지만, 중간에 들어왔기에 잘 알지 못했다.

객체지향 프로그램이 정말 꼭 필요하며 클래스와 인스턴스를 생성하는 일이 정말 재미있어졌다. 필드라는 개념도 이번에 확실히 알게 되었다.
조금 졸리지만 다음 학습을 더 진행해보려고 한다.