Professional Documents
Culture Documents
(공창프) w4 객체지향프로그래밍1
(공창프) w4 객체지향프로그래밍1
(공창프) w4 객체지향프로그래밍1
창의적프로그래밍
[week4]
객체 지향 프로그래밍1
-클래스와 객체-
Contents
객체 지향 프로그래밍
객체 지향과 실제 세계
클래스(Class)와 객체(Object)
클래스 정의
객체 생성
사용자 클래스 구현
클래스 정의와 객체 생성 실습
객체 지향 프로그래밍
OOP(Object-Oriented Programming)
객체(Object) 지향(Oriented)
객체 생성 객체 조립 프로그램 형성
4
객체 지향 프로그래밍
OOP의 목적
• 부품만 쉽게 교체하고 나머지 부품들을 건드리지 않아도 되는 것처럼,
프로그램을 보다 유연하고 변경이 용이 하도록 만들기
• 불필요한 반복 작업을 줄이고 효율성을 높일 수 있도록,
이미 만들어진 코드를 재사용하여 프로그램의 생산성을 향상시키기
• 대규모 프로그램을 분업하여 효율적으로 코딩 가능
5
객체 지향 프로그래밍 vs 실제 세계
6
객체 지향 프로그래밍 vs 실제 세계
젤리(Jelly)
1살 0살
갈색 갈색
빈(Bean)
0살
검은색 1살
검은색/흰색
타이거(Tiger)
2살
회색 1살
흰색
7
객체 지향 프로그래밍 vs 실제 세계
8
객체 지향 프로그래밍 vs 실제 세계
젤리(Jelly)
객체 예1) 고양이 1살
갈색
• 속성:이름, 나이, 색상, 크기, …
• 행동: 걷는다, 잔다,먹는다, … 빈(Bean)
타이거(Tiger) 0살
2살 검은색
회색
객체 예2) 좌표
• 속성: x좌표,y좌표, …
• 행동: 좌표간의 거리, 회전거리 …
9
객체 지향 프로그래밍 vs 실제 세계
파이썬 프로그래밍에서 객체
객체 예:
정수 실수 문자열 리스트 딕셔너리
• 1234 , 3.14159, “Hello”, [1, 5, 7, 11], {“CA”: “California”, “IA”: “IOWA”}
1234는 정수 데이터형의 객체
“hello”는 문자 데이터형의 객체
11
객체(object)
객체가 갖고 있는 것
• 유형(type) 클래스(class)
• 내부 데이터 표현(primitive or composite) 속성
• 객체와의 상호작용을 위한 일련의 절차 메서드
객체 지향 프로그래밍을 하려면
• 공통된 속성과 행동을 하나의 패키지로 묶는 작업인 클래스(class)로 정의하고
• 정의한 클래스를 객체화해서 사용하는 과정이 필요
13
클래스(Class)와 객체(Object)
클래스(Class)
• 객체를 만들기 위한 공통된 특징의 템플릿, 설계도
• 특징을 추상화하여 속성(attribute)과 행위/기능(behavior)를 정의
객체(Objects instance)
• 수많은 사물을 프로그래밍 관점에서는 객체라고 부름
• 프로그램 내부에서 객체화된 대상을 인스턴스(instance)라고 부름
객체 생성
객체(자동차)
클래스(자동차 설계도)
14
클래스 정의
• 함수(def) 정의와 유사
• 클래스 정의에 포함된 코드는 들여쓰기 해야 함
• object는 Coordinate가 파이썬 객체이고
모든 속성을 상속(inheritance)한다는 것을 의미함
Coordinate 는 object의 하위클래스(subclass)
object는 Coordinate 의 슈퍼클래스(superclass)
15
클래스 정의
속성과 행동을 구현
• 클래스 내부에는 데이터 속성과 프로시저 속성(행동)을 정의
행동을 메서드로 정의함
메서드는 해당 클래스에서만 동작하는 함수
toy
• 예) toy 클래스를 정의하고 공통적으로 필요
한 속성과 행동을 내부에 정의
속성: 모양, X위치, Y 위치 를 정의
변수로 구현됨
행동(기능): 이동하기( ) 를 정의
함수로 구현됨
구현된 함수를 메서드라고도 부름
16
클래스 정의
생성자
class Coordinate ( object ) :
def __init__ ( self, x, y ): 첫번째매개변수는self를사용
17
클래스 정의와 객체 생성
class Coordinate(object):
클래스 정의
def __init__ (self, x,y):
self.x = x
self.y = y
18
메서드(Method)
메서드
• 해당 클래스에서만 동작하는 함수와 같음 절차적 속성(procedural attribute)
__init__ 라는 특수 메서드=생성자
• 생성자는 클래스 안에서 __init__()라는 이름으로 지정되어 있음
• init 앞뒤로 언더바(_)가 2개씩 있음
파이썬은 항상 객체를 첫번째 인수(argument)로 전달함
• 모든 메서드의 첫번째 매개변수는 self를 사용하는 것이 관례임
“.” 연산자는 모든 속성에 접근할 때 사용함
• 객체의 데이터 속성
• 객체의 메서드
19
메서드(Method) 사용 방법
메서드 정의
def distance (self, other):
# code here
• 객체 인스턴스의 유형을 요청
>>> c = Coordinate(3,4)
>>> print (c)
<3,4> __str__ 메서드의반환(return)
>>> print(type(c))
<class __main__.Coordinate> 객체 c의유형(type) Coordinate 클래스
• 그 이후
>>> print (Coordinate)
<class __main__.Coordinate> Coordinate 클래스
>>> print (type(Coordinate))
<type 'type'> Coordinate 클래스객체의유형(type)
23
클래스와 재정의(override) 함수
SPECIAL OPERATORS
• +, -, ==, <, >, len(), print, and many others
https://docs.python.org/3/reference/datamodel.html#basic-customization
객체 지향 프로그래밍이란?
▶ 객체
▶ 클래스
▶ 속성
▶ 메서드
클래스 정의(구현)
클래스 사용
25
수고하셨습니다.