1990년대 이전 언어는 대부분 절차지향 프로그래밍. (대표적인 언어: 파스칼, 코볼, 포트란, C언어 등)
ex)
냉장고에 코끼리2를 넣는다.
객체지향 프로그래밍
1. 코끼리라는 사물의 기능, 정보에 대한 설계도를 만든다. 2. 이 설계도를 기반으로 코끼리1 객체를 만듭니다. 3. 냉장고라는 사물의 기능, 정보에 대한 설계도를 만든다. 4. 이 설계도를 기반으로 냉장고1 객체를 만듭니다. 5. 코끼리1 의 객체의 기능을 호출해서, 냉장고1 의 객체의 문을 연다. 6. 코끼리1 의 객체의 기능을 호출해서, 냉장고1 의 객체안으로 들어간다. 7. 냉장고1 의 객체의 기능을 호출해서, 냉장고1 의 객체의 문을 닫는다.
즉,
1. 해당 사물을 나타낼 수 있는 설계도를 만든다. (class) 2. 해당 사물의 설계도를 기반으로 사물1 객체를 만든다. (object) 3. 사물1 객체의 기능을 호출한다.
* attribute: 사물1 객체의 변수 * method: 사물1 객체의 함수
사물1객체의이름.method이름(인자)
ex)
string = "Fun Coding" # 문자열 관련 설계도 있음 - 해당 설계도 기반 문자열1 객체가 만들어짐
분명히 이 문자열 ("Fun Coding") 을 다룰수 있는 설계도가 있을 것이다. 그리고 첫번째 줄 구문 (string = "Fun Coding") 을 실행하면 자동으로 해당 설계도 기반 문자열 객체가 만들어진다. 그리고 .split() 은 해당 문자열 객체가 가지고 있는 메서드 (method) 라는 것이다.
string.split() # 해당 문자열1 객체가 가지고 있는 메서드(method)
모든 변수 (string) 들이 다 객체이다.
이를 대표할 수 있는 설계도가 있는 것이고,
각각이 이러한 특별한 메서드 (.split ) 를 가질 수 있는 것이다.
class(설계도), object(객체), attribute(변수), method(함수)
class 란?
자동차 설계도.
속성(attribute) 과 동작(method)을 갖는 데이터 타입. - 속성(attribute) 은 변수와 유사 - 동작(method) 은 함수와 유사
object 란?
자동차.
선언된 클래스를 기반으로 만들어진 실체 (객체(object) 또는 인스턴스(instance) 라고 함) 하나의 클래스 설계도를 기반으로 수많은 객체 생성이 가능함
객체지향 프로그램 작성 방법
1 .클래스 설계 (attribute와 method 구성) 2. 설계한 클래스를 기반으로 클래스를 코드로 작성 3. 클래스를 기반으로 필요한 객체 생성 4. 해당 객체의 attribute와 method를 조작하여 프로그램 수행
클래스 만들기
class 클래스이름: attribute 선언 method 선언
1.1. class 클래스이름 선언
1.2. attribute 선언
파이썬에서 attribute 는 attribute 값과 함께 선언이 일반적임 - 예: attribute1 = 0
생성자 메서드 init 의 인자를 활용해서 선언하는 방식이 보다 일반적임 - 예: init 의 인자 중 하나가 width 일 경우 - init 메서드 안에서 self.attribute1 = width 로 attribute1 선언
1.3. method 선언
class 안에서 def 메서드(self, ...) 와 같은 방식으로 선언
예시)
<< 사각형 만들기 >>
1. 클래스 선언
class Quad: # class 클래스이름 선언 height = 0 # attribute 변수 width = 0 color = ''
def get_area(self): # method 함수 return self.height * self.width
이제 Quad 라는 이름의 클래스가 선언이 되었고, 이 클래스를 기반으로 객체를 만들 수 있다.