Information Security

Class 본문

Python

Class

leeeeye321 2017. 3. 24. 13:00

객체 지향 프로그래밍

(objective-oriented programming)

-실 세계의 사물을 객체(Object)로 추상화하여 객체 간의 상호 작용을 기반으로 프로그래밍 하는 방법이다. 

 

객체(Object)

1. 객체는 명사로 정의되는 자신의 특성(변수)과 동사로 정의되는 자신의 기능(메서드)을 가지고 있다.  

2. 객체는 상속을 통해 기능을 확장할 수 있다. 위 세대의 기능을 물려받고 나만의 기능을 추가할 수 있다.

3. 외부에서 의도하지 않은 내부 데이터 변경을 막기 위하여 캡슐화를 할 수 있다.

4. 객체의 기능은 재 정의(Override) 할 수 있다.

 

클래스(Class): 똑같은 무엇인가를 계속해서 만들어 낼 수 있는 ''

클래스의 선언

class 클래스명:

<클래스 내용>

<클래스 내용>

<클래스 내용>

 

클래스의 인스턴스(instance): 클래스에 의해서 생성된 객체. 1개의 클래스는 무수히 많은 인스턴스를 생성할 수 있다.

-클래스를 선언했다. 하지만 실체가 없는 상태이다.

-클래스를 선언한 후 실제로 사용하려면 인스턴스화(실체화)를 해야 한다.

위와 같이 BusinessCard 클래스의 인스턴스를 생성하면 card는 새로운 클래스 자료형으로 정의된다.

 

클래스의 구성 요소 두 가지

1. 클래스의 변수

-Class 변수: 클래스 정의에 포함된 변수이다.

 클래스의 인스턴스가 해당 변수를 공유한다. 클래스 내부에서 "클래스명.변수명"으로 접근한다. 

-Instance 변수: 클래스의 인스턴스에 포함된 변수이다.

 인스턴스 별로 내용을 따로 저장한다.  클래스 내부에서 "self.변수명"으로 접근한다.

 

2. 클래스의 메서드(Method): 클래스 내에 정의된 함수

 

 

클래스 생성자(Constructor): __init__메서드 사용

-인스턴스를 생성하는 동시에 초깃값을 줄 수 있다.(자동적으로 동작)

-내부 변수 등의 기본값을 지정하기 위하여 사용한다.

 

생성자 사용 예제

 

 

생성자에 인자 추가하기

 

 

클래스 소멸자(Destructor)

-class의 사용이 끝난 후 인스턴스가 삭제될 경우 자동적으로 호출한다.

-내부에서 사용한 변수 등의 메모리 정리를 위해 사용한다.

 

 

클래스 상속(Inheritance): '물려받다'

class 클래스 이름(상속할 클래스 이름)

-자식 클래스(child, sub)가 부모 클래스(parent, super) 기능 및 특징을 전부 물려받는다.

-물려받은 후 자신만의 기능을 더 추가할 수 있다.(부모의 기능 확장)

-부모 클래스의 메서드를 받아서 나만의  메서드로 수정할 수 있다.

-부모 클래스를 수정하면 그 클래스의 상속을 받은 여러 자식 클래스들이 모두 같이 수정된다.

 

클래스 상속 예제

-고양이 클래스와 강아지 클래스를 만들었다. 그런데 두 클래스가 겹치는 내용이 많다. 이런 식으로 다른 동물들도 클래스를 만들고 싶은데 코드가 너무 길어질 것 같다.  

-이와 같은 상황에 상속을 이용하면 편리하다. 공통부분을 추출한 후 큰 범위인 "Animal"로 클래스를 만든다. 그리고 다른 동물 클래스를 만들 때마다 Animal 클래스를 상속받아 더 추가할 내용을 작성하면 Animal 클래스의 기능은 그대로 사용하고 그에 더 기능을 확장하여 사용할 수 있다. 

 

 

메서드 재 정의(Method Overriding): 메서드 이름을 동일하게 하여 다시 구현하는 것

-부모 클래스의 메서드를 동작을 수정할 수 있다.

'Python' 카테고리의 다른 글

File  (0) 2017.03.29
Module  (0) 2017.03.28
입/출력  (0) 2017.03.22
함수(Function)  (0) 2017.03.21
while 문 & for 문  (0) 2017.03.18