codestates / codestates/ds-blog

[김지연]파이썬의 객체지향프로그래밍

Open
#76 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
2
Forks
4
PR merge metrics
No merged PRs in 30d

Description

## 파이썬의 객체 지향프로그래밍(Object Oriented Programming)

#### 객체지향프로그래밍으로서 클래스를 사용하는 방법에 대해 알아보자

객체지향프로그래밍(Object Oriented Programming)은 말그대로 객체를 우선시 하는 프로그래밍으로. 구체적이고 실제로 있는 것들의 관계 등을 표현할 수 있게끔 도와준다. 방대한 양의 코드를 수정하거나 유지보수 할 때 객체지향프로그래밍을 유용하게 이용할 수 있다.

파이썬의 객체지향프로그래밍에서는 클래스, 인스턴스, 객체, 메서드와 같은 표현들이 등장한다.

### 용어
- 클래스(class) : 같은 모양을 찍어내는 틀과 같은 것으로 같은 속성의 데이터를 가진 객체들을 만들어 낼 수 있다. (클래스는 캐멀케이스(camel case)로 표현한다.)
- 객체(object) : 프로그래밍에서 여러 가지 속성을 갖고 있는 대상을 나타낸다.
- 인스턴스(instance) : 클래스에서 만들어진 객체를 뜻한다.
- 메소드(method) : 클래스 내부에서 사용하는 함수로 주로 첫 번째 매개변수에는 self를 사용한다.

### 추상화(abstract)
세상에 존재하는 것들은 많은 속성을 가지고 있다. 개를 예로 들자면 견종, 나이 , 털 색깔 등이 있을 것이다. 하지만 속성 중엔 견종, 털 색깔 같은 개를 나타내는데 중요한 데이터도 있지만 털의 갯수와 같은 그닥 중요하지 않은 정보도 있다. 이처럼 필요한 속성들을 이용하여 객체를 표현하는 것을 추상화라고 한다.

### 클래스의 정의
> 클래스 이름(여기서는 Writer)을 정의한다.
```
class Writer():
pass
```

### 인스턴스 속성 부여(생성자)
> 생성자는 __init__ 함수를 사용하여 클래스에서 사용할 속성을 설정 해준다.
```
def __init__(self, name, title):
self.name = name
self.title = title
```

### 메소드(인스턴스 함수)
> 클래스 내부에서 사용하는 함수이다.
```
def writer_title(self):
print("{}의 대표작은 {}이다.".format(self._name, self._title))
```

### 객체 생성
인스턴스명 = 클래스명()을 사용하여 객체를 생성할 수 있다.
```
hemingway = Writer(‘Ernest Hemingway’, “노인과 바다”)
fitzgerald = Writer(‘F. Scott Fitzgerald, “위대한 개츠비”)
plath= Writer(‘Sylvia Plath’, “벨 자”)
```

### 완성 코드
```
class Writer:
def __init__(self, name, title):
self._name = name
self._title = title

def writer_title(self):
print("{}의 대표작은 {}이다.".format(self._name, self._title))

hemingway = Writer('Ernest Hemingway', '노인과 바다')
fitzgerald = Writer('F. Scott Fitzgerald', '위대한 개츠비')
plath = Writer('Sylvia Plath', '벨 자')

hemingway.writer_title()
```
#### 실행결과
Ernest Hemingway의 대표작은 노인과 바다이다.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.