프로그래밍의 방식 중에
객체 지향 프로그래밍(OOP)가 존재한다
객체 지향 프로그래밍이란 무엇인가
객체 지향 프로그래밍 - 사람이 생각하는 방식에 가까운 프로그래밍
과거 객체지향의 개념이 존재하기전의 프로그래밍 방식은
컴퓨터에게 명령을 넣어주는데 많은 시간이 허비되었지만
객체 지향의 단계로 넘어오고 나서는 사물 혹은 사람의 특성 그대로를 차용해
프로그램에 옮기는 방식을 선택했기에
우리는 우리와 비슷한 사고를 하도록 컴퓨터를 사용할수 있게 된것이다
물론 세상에는 수많은 프로그래밍 언어가 존재하고
모든 언어가 객체지향적 특성을 지니지는 않는다
대표적인 객체지향 프로그래밍 언어는 C++,JAVA,ASP,Python.. 등등
존재하는데 시대의 흐름을 탈수밖에 없는 코딩의 특성상
요즘 사용되는 언어는 대부분 객체지향을 제공한다고 봐야한다
OOP의 개념 - Class
Python의 기초적인 부분을 공부해봤다면 대부분 Class라는 기능에 대해서도 알 것이다.
프로그래밍 언어가 객체지향적 특성을 가지게 해주는데에는
클래스, 상속, 메소드, 추상화, 캡슐화, 오버라이딩
현존하는 여러 기능이 존재하지만
먼저 Class의 심화적인 내용을 알아보자.
-과거 데이터 중심 방식 코딩-
info_book1 = [
{'name':'Redhair'},
{'price':12900}
]
info_book2 = [
{'name':'Blackhouse'},
{'price':24000}
]
.
.
.
서점에서 판매할 서적들의 정보를 관리한다고 치자
책 두권의 정보를 각각 코드를 dictionary형으로 두번 작성했다
만약 이런 방식으로 책을 50권에서 몇만권을 저장해야 한다면
그때마다 까다롭게 작성을 해야할것이다 이렇게 되면
데이터의 관리나 유지보수에 어려움을 겪게 될것이다
그렇기에 우리는 이런 문제에 도달했을때
객체지향적 코딩 사고가 필요하다
객체 지향 프로그래밍이 추구하는 코딩 기법에는 코드의 재사용과 코드의 중복방지가
존재하기 때문이다
-객체지향적 코딩-
class Books():
def __init__(self, name, info):
self._name=name
self._info=info
def __str__(self): # 비공식적 문자열 , 사용자용
return "( str) Store : {}, {}".format(self._name,self._info)
def __repr__(self): # 공식적 문자열
return "(repr) Store : {}, {}".format(self._name,self._info)
book1 = Books('Yes24',{'book_name':'Demian','price':'9900'})
book2 = Books('Ridibooks',{'book_name':'Magazine','price':'13900'})
book3 = Books('Kyobomungo',{'book_name':'Redhair','price':'16900'})
print(book1)
print(book2)
print(book3)
>>>
( str) Store : Yes24, {'book_name': 'Demian', 'price': '9900'}
( str) Store : Ridibooks, {'book_name': 'Magazine', 'price': '13900'}
( str) Store : Kyobomungo, {'book_name': 'Redhair', 'price': '16900'}
Class를 통해 코드의 재사용성을 높였다
더 많은 데이터를 관리하기 편하다
앞으로 더 많은 책의 정보를 담아야 할 경우엔 이미 만들어진 class의 형식에
맞춰 정보를 기입하기만 하면 되기 때문이다
Class에 대해 다시 간략히 짚고 넘어가자면
__init__은 생성자, 초기화 메서드이다
그리고 __str__은 유저가 보기 쉽게 가공되어 데이터를 출력하고
__str__과 비슷한 기능을 하는 __repr__은 시스템이 인식할 수 있는
데이터로 바꿔준다
아무튼 book1 자체는 Books라는 class를 통해 생성된 객체이며
아무런 기능이 없더라도 __str__ 함수를 class내에 작성해두면
기본적으로 값 출력 기능을 내장하게 된다.
Class의 심화내용의 기초적인 내용은 여기까지고
다음에는 조금 더 들어가보도록 하자
'개발&코딩 > Python' 카테고리의 다른 글
[Python] - list 자료형에 대한 기초 (0) | 2020.09.08 |
---|---|
[Python] - 문자열을 더 편리하게 관리하는 함수들 split,join,replace,count,find (0) | 2020.09.08 |
[Python] - 문자열 그리고 입출력 기초 (0) | 2020.09.08 |
[Python] - Class에 대해 그리고 상속과 메서드 오버라이딩 (0) | 2020.09.08 |
Python 기초 예제(자료형 예제) 모음 - 1 (ver1.0) (0) | 2020.08.10 |
댓글