Last Updated on 10월 31, 2023 by Jade(정현호)
객체지향 파이썬
파이게임과 GUI로 객체지향 프로그래밍 정복하기
서적 정보
원제 : Object-Oriented Python
한글 번역 제목 : 객체지향 파이썬
출판사 : 제이펍(Jpub)
저자명 : 어브 갤브
역자명 : 박찬성
출간일 : 2023년 10월 13일
ISBN13 : 9791192987347
안녕하세요
이번에 리뷰해볼 책은 "객체지향 파이썬" 제목의 파이썬 개발 기술 서적입니다.
올해 들어서 업무를 하면서 자동화 프로그램이나 배치 프로그램을 작성할 때 쉘 스크립트보다 더욱더 적극적으로 파이썬을 사용하여 프로그램을 작성하고 있습니다.
파이썬을 최근에 많이 사용하고 간단한 API는 작성을 하고 있지만 여전히 IF/ELSE, While For , Function(함수) 등을 사용한 절차형으로 코드를 주로 작성하고 있습니다.
유지보수가 쉽고 조금 효율적인 잘 작성된 파이썬 프로그램을 위해서 이번 파이썬 객체지향에 대해서 좋은 책이 번역되어 먼저 빠르게 읽어보았고, 다시 내용을 천천히 정리하면서 다시 읽어보려고 합니다.
이 책의 구성은 크게 4개의 파트로 나눠져 있으며 총 17 챕터로 구성되어 있습니다.
- PART 1 : 객체지향 프로그래밍(CHAPTER 1 ~ 4)
- PART 2 : 파이게임과 GUI(CHAPTER 5 ~ 7)
- PART 3 : 캡슐화, 다형성, 상속(CHAPTER 8 ~ 11)
- PART 4 : 게임 개발에 객체지향 프로그래밍 사용하기(CHAPTER 12~ 17)
파트 별로 조금씩 간략하게 내용을 정리 또는 리뷰를 해보려고 합니다.
PART 1 : 객체지향 프로그래밍
PART 1 에서는 기본 문법과 제어문, 함수 등을 사용한 절차적 프로그래밍에 대해서 먼저 복습을 하며, 테스트 기반의 카드 게임을 구현하며 하나 이상의 계정으로 은행업무를 수행하는 뱅킹 시뮬레이션 프로그램을 구현해봅니다. 그 과정에서 절차적 프로그래밍이 가지고 있는 단점과 일반적인 문제점 등을 다루고 있습니다.
그 다음으로 본격적으로 클래스와 객체를 소개하며 클래스로 전등 스위치나 TV리모콘과 같은 생활의 실체 물건을 컴퓨터 클래스 객체로 표현하는 내용을 다루고 있습니다. 그래서 여기서 부터 절차적 프로그래밍에 대한 문제점을 객체지향적 프로그래밍으로 해결해가는 부분으로 점차적으로 내용을 다루게 됩니다.
파이선에서 객체를 사용할 때 내부적으로 일어나는 중요한 개념과 내용을 확인해보면서 실제 객체가 생성되는 과정을 알아봅니다.
PART 1 에서는 이처럼 절차적 프로그래밍적인 작성 습관이나 기존 지식에 대해서 OOP로 생각의 전환 또는 지식의 전환을 위해서 Step by Step 형식으로 천천히 객체지향 프로그램에 대해서 설명하고 있습니다.
몇 번 다시 설명을 할 내용이지만 이책은 전반적으로 아주 맘에 드는 것이 친절함 또는 꼼꼼하다라고 생각 드는 부분으로 최종적으로 무언가를 설명하고 이해시키기 위해 그전에 여러 단계를 통해서 점증적으로 예제와 설명을 하면서 진행을 한다는 점입니다.
요즘 표현으로 최종 무언가를 위해 사전 빌드업을 열심히 하는 것처럼요
그래서 중간 과정에 매우 친절하고 세분화다는 생각이 많이 들고 그 만큼 객체지향적 프로그래밍에 익숙해지기 위한 기반지식을 쌓는데 아주 좋은 흐름으로 책은 기술되어 있다고 생각 합니다.
PART 1 은 그런 맥락에서 절차형 -> 객체지향으로는 생각의 전환 단계 초입 부분이고 생각됩니다.
PART 2 : 파이게임과 GUI
파트 2에서는 파이게임 패키지를 통해서 GUI(Graphical User Interface, 그래픽 유저 인터페이스) 프로그램 작성에 대해서 다루고 있습니다.
파이게임 패키지를 통해서 이벤트 기반 프로그래밍에 대해서 다루고 있으며, 윈도우에서 그래픽 요소를 배치시키고 키보드와 마우스를 입력 처리하는 내용에 대해서 다루고 있습니다.
파이게임 프로그래밍에서도 주요 목적인 객체지향을 사용하는 방법에 대해서 단계적으로 다루고 있므며 공 튕기기 프로그램을 객체지향 프로그래밍으로 다시 작성하고 하는 내용을 다룹니다.
파이게임은 텍스트 기반으로 GUI를 위해서 직접 GUI용 코드를 구현하였다면 GUI 위젯 기능을 제공하는 pywidgets 패키지를 사용하여 조금 더 다른 방법의 GUI 프로그램 작성을 할 수 있습니다.
PART 3 : 캡슐화, 다형성, 상속
파트3에서는 객체지향의 핵심 요소이자 중요한 내용인 캡슐화, 다형성, 상속에 대한 내용을 다루고 있습니다.
구현의 세부 사항을 외부 코드에 숨기고 관련된 모든 메서드를 클래스에 하나의 자리에 배치하는 캡슐화를 설명하고 있습니다.
다형성은 여러 클래스가 동일한 이름의 메서드를 가지는 방법을 의미하며 이를 통해 각 객체의 유형에 상관없이 여러 객체의 메서드를 호출해서 사용하는 내용을 다루고 있습니다.
객체지향에서 세 번째로 중요한 개념은 이미 존재하는 클래스에 기초해서 신규 클래스를 파생하는 상속이라는 매커니즘으로 기존에 존재하는 클래스를 확장하거나 더 차별화된 클래스로 쉽게 고도화할 수 있습니다.
객체지향의 상속에 대한 기본 지식과 정의를 다루며 상속을 구현하는 내용을 설명하고 있습니다.
메모리 관리와 관련된 몇 가지 중요한 객체지향을 주제로한 내용이 있으며 객체의 생명 주기가 무엇인지에 대한 내용을 다루며 간단한 풍성 터뜨리기 게임을 만드는 실습을 진행합니다.
PART 4 : 게임 개발에 객체지향 프로그래밍 사용하기
파트4에서는 게임 개발시에 객체지향을 사용하는 내용을 전반적으로 다루고 있습니다.
파트1,2,3에서 익히고 배운 내용을 전반적으로 모두 다룬다고 생각하며 1장에서 만든 카드 게임(텍스트) 게임을 파이게임 기반의 GUI 프로그램으로 다시 만드는 과정을 수행합니다.
타이머에 대해서도 다루며 타이머는 숫자를 세거나 작업을 하기전에 특정 시간 동안 대기할 수 있도록 해주는 기능으로 텍스트 기반 파이썬 프로그램에서는 초 단위로 time.sleep() 함수를 사용하였습니다.
이런 기능을 하는 타이머에 대해서 파이게임에서 구현해서 사용하는 내용에 대해서 설명하고 있습니다.
그리고 시작, 플레이, 종료처럼 많은 장면이 포함된 프로그램을 만들어보며 여러 유형의 다이얼로그를 만들고 사용자와 상호작용하는 내용을 배웁니다.
마지막에서는 모델-뷰-컨트롤러 패턴을 중심으로 디자인 패턴의 개념에 대해서 내용을 설명합니다.
"객체지향 파이썬" 책은 절차형 프로그래밍에서 객체지향 프로그래밍으로 코드를 작성할 수 있도록 여러가지 예시와 시나리오 그리고 샘플 프로그램을 통해서 단계적으로 가르침을 주고 있습니다.
특히 많이 다루는 내용은 아닌 GUI 프로그램에 대해서 게임 만들기와 같은 주제로 GUI 프로그래밍에 대한 부분을 학습할 수 있던 점도 좋았으며 GUI 프로그래밍에서도 객체지향 코드 작성에 대한 부분을 다루고 있어서 좋았던 점입니다.
다양한 내용을 쉽게 이해할 수 있도록 예제 프로그램과 코드가 적절하게 구성되어 있어서 이론을 기반으로 한 실제 코드를 통해 프로그램을 구현하면서 더 빠르게 객체지향 프로그래밍에 적응할 수 있게 되는 것 같습니다.
이 책은 특히 각 파트나 챕터 처음에는 해당 부분에서 배울 내용에 먼저 간략하게 소개하면서 내용이 시작합니다.
그리고 특히 더 좋았던 부분은 모든 챕터 끝에는 "정리" 라는 섹션이 배치되어 있어서 해당 챕터에서 배운 다룬 내용에 대해서 요약 및 정리하여 설명되어 있습니다. 이런 요약 과 정리가 별도로 있다는 부분은 이 책의 구성에서 특히 맘에 드는 부분이라고 생각 합니다.
객체지향 프로그램(OOP)에 아직은 많이 낯선 상태이기 때문에 "객체지향 파이썬" 책은 단계별로 내용을 다루고 정확하면서 다양한 부분에 대해서 내용을 다루고 있어서 아주 만족했던 파이썬 기술 서적이었습니다.
기본 문법 및 절차적 프로그래밍에서 그 다음 단계로 도약하기 위해서 꼭 한 번 읽어봐야 할 것 같은 좋은 파이썬 책이라고 생각 합니다.
해당 리뷰는 제이펍(Jpub)신간 도서 서평단 이벤트를 통해서 제공받은 책으로 읽고 난 소감을 주관적으로 작성하였습니다.
Principal DBA(MySQL, AWS Aurora, Oracle)
핀테크 서비스인 핀다에서 데이터베이스를 운영하고 있어요(at finda.co.kr)
Previous - 당근마켓, 위메프, Oracle Korea ACS / Fedora Kor UserGroup 운영중
Database 외에도 NoSQL , Linux , Python, Cloud, Http/PHP CGI 등에도 관심이 있습니다
purityboy83@gmail.com / admin@hoing.io