일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 자기지도학습
- 명령어
- 웹폰트
- 행렬
- 정수인코딩
- 벡터
- 인덱스
- 파이썬
- R
- 노트list
- DOM
- Ajax
- 프로토콜
- JS
- EC2
- 함수
- 신뢰구간
- Ajax프레임워크
- Filter
- 노마쌤과 즐거운 영어 습관
- 클러스터링기법
- Mac konlpy
- NLP
- 질의확장
- 유의수준
- CSS
- DOMAPI
- HTML
- 노마쌤
- 매일영어습관
- Today
- Total
채니의 개발일기
객체지향프로그램밍과 파이썬의 클래스와 인스턴스 본문
객체지향 프로그래밍(object-oriented programming)
: 프로그램을 작성할 대상이 되는 실제 세계의 사물(객체)를 그대로 표현하고, 그것들이 어떻게 움직이는지 지정해주고 나서야 비로소 그 객체들에게 일을 시킨다.
** 자동차(객체)를 예를들어 메소드(주행하기,정지하기등)의 설명
1. 프로그램을 작성할 대상이 되는 실제 세계의 (객체)를 그대로표현
- 객체 지향 프로그래밍에서는 실제 세계의 개체나 살물을 '객체'라는 프로그래밍 요소로 표현한다.
- 예를들어, 실제 세계의 '자동차'를 프로그램내에서 '자동차'객체로 표현하며 이 객체의 속성에는 '색상', '브랜드', '속도'와 같은 속성(데이터)와 '주행하기','정지하기'등 메서드를 가질 수 있다.
2. 그것들이 어떻게 움직이는지 지정해준다.
- 객체의 행동은 메서드로 표현한다.
- '자동차 객체'의 경우 '주행하기'라는 행동은 '속도를 증가시키는메서드', '정지하기'라는 메서드는 속도를 0으로 만드는 메서드로 표현된다.
- 이렇게 메서드를 통해 객체가 어떻게 동작하는지, 어떻게 행동을 할 수 있는지 정의 할 수 있다.
3. 비로소 그 객체들에게 일을 시킨다.
- 객체와 그행동(메서드)를 정의한 후, 실제로 프로그램에 해당 객체를 사용하여 원하는 작업을 수행하게 한다.
- 예를들어 '자동차 객체'를 생성한후, '주행하기' 메서드를 호출하여 자동차를 움직 수 있게 한다.
-> 이러한 방식은 프로그래밍을 더 직관적이고 이해하기 쉽게 만든다. 실제 세계의 사물을 기반으로 프로그램을 설계하므로,
1) 문제를 해결 하는데 필요로 로직을 더 자연스럽게 구성할 수 있으며,
2) 객체간 상호작용을 통해 복잡한 시스템을 구축가능할 수 있다. 또한,
3) 객체 간의 상호작용을 통해 복잡한 시스템을 구축하면서도
4)각 객체는 독립적으로 동작하므로 코드의 재사용성과 유지 보수성이 향상된다.
- 파이선에서 클래스의 필요성
예시 상황: 은행 계좌 관리
문제상황:
은행에서 계좌를 관리하려고 할때, 각 계좌는 계좌번호, 소유이름, 잔액 등의 정보를 가지며, 입금, 출금 등의 기능을 수행 할 수 있어야한다
만약 clss없이 구현할 결우
account_number = '12345678'
account_name = 'John Doe'
balance = 1000.0
def deposit(amount):
global balance
balance += amount
return balance
def withdraw(amount):
global balance
if amount <= balance:
balance -= amount
else:
print("Insufficient funds!")
return balance
class로 구현할 경우
class BankAccount:
def __init__(self, account_number, account_name, balance=0.0):
self.account_number = account_number
self.account_name = account_name
self.balance = balance
def deposit(self, amount):
self.balance += amount
return self.balance
def withdraw(self, amount):
if amount <= self.balance:
self.balance -= amount
else:
print("Insufficient funds!")
return self.balance
# 계좌 객체 생성
john_account = BankAccount('12345678', 'John Doe', 1000.0)
Class 내 BankAccount 클래스를 사용하면, 계좌번호, 소유자이름, 잔액 등의 데이터와 입금, 출금등의 행동을 하나의 '객체'로 묶을 수 있다. 이렇게 하면 데이터와 함수관계가 명확해지며 코드의 복잡성이 줄어들게 된다.
- 클래스란?
- 똑같은 무언가를 계속 만들어 낼 수 있는 설계도이다.
- 클래스는 데이터(속성)와 데이터를 처리하는 함수(메서드)를 하나로 묶어서 새로운 자료형으로 정희하는 것이다.
- 이렇게 생성된 객체를 인스턴스(Instance)라고한다
* 파이썬에서의 클래스 정의
class ClassName:
#속성들
attribute1 = value1
attribute2 = value2
#생성자
def __int__(self, param1, param2);
self.param1 = param1
self.param2 = param2
#메서드
def method_name(self, arguments):
#메서드 내용
- class : 클래스를 정의 할때 사용되는 키워드
- ClassName : 클래스의 이름
- attribute: 클래스의 속성(데이터)나타낸다
- __init__ : 클래스의 생성자 메서드로, 클래스의 인스턴스가 생성될 때 자동으로 호출된다
- self: 인스턴스 자신을 참조하는 변수로 모든 메서드의 첫번재 매개변수로 전달되어야한다
- method_name: 클래스의 메서드(함수)를 나타낸다
*클래스 사용
: 클래스를 정의 한 후에는 그 클래스를 사용하여 인스턴스를 생성하고, 인스턴스의 속성과 메서드에 접근할 수 있다.
#인스턴스 생성
instance = ClassName(param1_value, parma2_value)
#속성에 적근
print(instance.attribute)
#메서드 호출
instance.method_name(arguments)
* 필드란?
: 객체 지향 프로그래밍에서 사용 되는 용어로, 클래스나 객체 내부에서 데이터를 저장하는 변수를 의미 한다.
: 필드는 객체의 상태나 속성을 나타내며, 다른용어로는 "속성" "멤버변수", "인스턴스 변수"등으로 불린다
예를들어 person 클래스가 있다고 가정할때
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
-> 'name'과 'age'는 'Person'의 클래스 필드이다. 이 필드들은 'Person' 객체의 상태나 속성들을 나타낸다. 즉 각, 'Person'객체는 고유의 'name'과 'age'값을 가질 수 있다.
객체를 생성 할 때:
person1 = Person('Alice',30)
-> 'person1'객체는 'name'필드에 'Alice'라는 값을, 'age'필드에 30이라는 값을 가지게 된다
'프로그래밍언어 > 파이썬' 카테고리의 다른 글
파이썬- 시퀀스란? (0) | 2023.10.13 |
---|---|
클래스 - collection라이브러리 (0) | 2023.10.12 |
키워드 포함 데이터프레임 검색 (0) | 2023.10.03 |
For문 제너레이터식 형식 (0) | 2023.09.17 |
timeit모듈, datetime-timedelta모듈 (0) | 2023.06.18 |