객체 지향 프로그래밍
- 객체를 우선으로 생각하는 프로그래밍 방법론
- 객체를 만들고 객체 간의 상호작용을 중심으로 개발하는 방법론
- 클래스 기반의 객체 지향 프로그래밍 언어는 클래스를 기반으로 객체를 만들고, 그러한 객체를 우선으로 생각하여 프로그래밍함
객체 (object)
- 여러 가지 속성을 가질 수 있는 모든 대상
사람
이라는 객체
- 이름, 나이, 성별, 키, 몸무게, 가슴 둘레, 허리 둘레 등의 다양한 속성을 가지며, 객체를 완벽하게 재현하기 위해서는 많은 속성을 알고 있어야 함
추상화
- 필요한 요소만 가지고 객체를 표현하는 것
- 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것
사람
이라는 객체를 프로그램에서는 필요한 정보(생년월일, 키, 몸무게 등)만 추려서 추상화
학생 성적 관리 프로그래밍
학생
이라는 객체
- 이름, 학번, 과목별 성적 등의 속성을 가짐
- 딕셔너리로 표현
students(학생들)
라는 객체
- 여러 학생을 속성으로 가짐
- 리스트로 표현
-> 복잡함
- 학생이라는 객체와 관련된 기능을 전반부에 구현하고, 객체를 사용하는 처리는 후반부에 구현
- 학생 객체와 관련된 기능을 별도의 모듈로도 구현
- 객체와 관련된 코드를 분리할 수 있게 하는 것이
객체 지향 프로그래밍
의 핵심
클래스
- 객체를 쉽고 편리하게 생성하기 위한 구문
- 객체와 관련된 코드를 쉽게 분리하여 구현할 수 있게 함
클래스 선언하기
- 관례적으로 파이썬에서 클래스 이름은 대문자로 시작하는
캐멀 케이스
로 작성
객체 생성하기
인스턴스
: 클래스를 기반으로 만들어진 객체
생성자
- 클래스 이름과 같은 함수
- 클래스 내부에
__init__()
이라는 함수를 만들어 객체를 생성할 때 처리할 내용을 작성
class 클래스이름: def __init__(self, 매개변수): 코드
- self
- 자기 자신(객체)를 나타내는 식별자
- self가 가진 속성(필드)이나 기능(함수)에 접근할 때는self.식별자
의 형태로 접근
- 클래스 내부의 함수는 첫 번째 매개변수로 반드시 self를 입력해야 함
메소드
- 클래스가 가지고 있는 함수
class 클래스 이름: def 메소드 이름(self, 추가적인 매개변수): 코드
객체 지향 프로그래밍 언어
- 객체를 기반으로 프로그램을 만드는 프로그래밍 언어 - Python, Java, JavaScript, C++, C#, Objective C, Scala, Swift, Ruby, etc. - 클래스를 기반으로 객체를 만들고, 그러한 객체를 우선으로 생각하여 프로그래밍