이번 포스팅에서는 Python Class 공부를 하면서 만났던 getter와 setter에 대해 정리해보려고 한다.getter와 setter는 객체지향 프로그래밍의 특징이라고 한다. 그래서 아래와 같은 순서로 공부를 해보았다. 하나의 포스팅에 다 넣으려고 했는데 쓰다보니 길어져서 목차별로 글을 쓸 거야.0. 객체지향 프로그래밍 개념 0-1. 프로그래밍 패러다임 분류 0-2. 객체지향 프로그래밍 1. getter & setter 사용목적 2. getter & setter 사용방법 3. 기타질문
0. 객체 지향 프로그래밍 개념 0-1.프로그래밍 패러다임 분류 파이썬이 ‘객체 지향 프로그래밍(Object Oriented Programming)’이라고 하는데 뭔지 잘 몰랐다. OOP 말고 다른 프로그래밍은 뭐가 있나? 각각의 특징은 무엇인가? 좀 더 찾아봤어.(참고: 위키백과, 나무위키 등) 먼저 프로그래밍 방식을 아래와 같이 나눌 수 있다. 구조적/비구조적으로 나누는 기준도 있지만..오늘은 통과한다.) 사실 명확하게 나눌 수 없는 부분도 있고, 하나의 언어라도 활용에 따라 함수형이 되거나 절차지향형이 되기도 한다.
이미지 자체제작 ㅎㅎ
⦁ 선언형 프로그래밍: 프로그램이 ‘무엇’을 나타내는지 목표를 명시하는 코딩 방법이다. 코드를 읽고 구현 원리를 알기는 어렵다. 명령형 프로그래밍에는 함수형(Functional), 논리형(Logic), 제한형(Constraint)이 있다. 이 세 가지 분류에 대해서는 여기서는 다루지 않는다. 예로 SQL, HTML 등이 있다.
SELECT * FROM Table WHERE Column1 = ‘XXX’
위의 예는 Table에 Column1이 ‘XXX’인 행을 모두 선택한다는 SQL구문이다. 우리는 이 명령이 ” 어떻게”구현될지는 모르지만”무엇”을 원하는지 알 수 있다.⦁ 명령형 프로그래밍:프로그램이 ” 어떻게”실행할 알고리즘을 명시하는 코딩 방법이다. 컴퓨터가 수행하는 “명령”을 쓰는 일이다. 선언형 프로그래밍에는 절차 지향형(Procedural)과 객체 지향형(Object Oriented)가 있다.예로는 파이썬, 자바, C, C++등이 있다. -절차 지향형:절차는 procedure(프로시저)라는 단어가 해석된 말이다. 루틴, 서브 루틴, 메서드, 함수를 아울러 프로시저는 연속적으로 실행되어야 하는 연산을 모은 것이다. 순서 지향형 프로그래밍에서는 프로시저를 재활용하고 코드의 가독성을 높일 수 있다. -객체 지향형:순서 지향형에서 발전한 형태이다. 프로시저와 이 프로시저가 적용되는 데이터까지 한데 모아 한개 반으로 관리한다. 이 클래스에 속하는 사례가 클래스 인스턴스(instance)인 객체(Object)이다. 순서 지향형이 코드의 “기능”에 초점이 있다면 객체 지향형은 “어느 데이터”를 다루느냐까지 걱정하다. 그래서 오류가 적다.※학급 내의 프로시저를 함수 또는 메서드라고도 부른다. ※결국 반을 통해서 객체의 속성(Attributes)과 행동(Behaviors)을 정의하는 것이다. “객체 지향”이라는 이름이 붙여진 이유가 보인다.class Human(): def __init__(self, name, age): self.name = name self.age = age def introduction(self): print(“안녕하세요 제 이름은” + self.name + ‘.”) A = Human(‘Alice’, 24) B = Human(‘Bob’, 17) A. introduction( ) > “안녕하세요 제 이름은 앨리스입니다.”class Human(): def __init__(self, name, age): self.name = name self.age = age def introduction(self): print(“안녕하세요 제 이름은” + self.name + ‘.”) A = Human(‘Alice’, 24) B = Human(‘Bob’, 17) A. introduction( ) > “안녕하세요 제 이름은 앨리스입니다.”getter와 setter에 대해서만 쓰려고 했지만 공부하다 보니 프로그래밍 패러다임까지 설명이 필요했다.그런데 아직 완벽하게 이해하지 못한 부분이라 글을 쓰는데 오래 걸렸다. 시간이 지나면 (=공부를 더하면) 수정할 부분도 보일 것 같아. 일단 여기까지 쓰고 다음 순서는 나중에 쓰자.. 아직 포스팅 실력도 부족해. (웃음)getter와 setter에 대해서만 쓰려고 했지만 공부하다 보니 프로그래밍 패러다임까지 설명이 필요했다.그런데 아직 완벽하게 이해하지 못한 부분이라 글을 쓰는데 오래 걸렸다. 시간이 지나면 (=공부를 더하면) 수정할 부분도 보일 것 같아. 일단 여기까지 쓰고 다음 순서는 나중에 쓰자.. 아직 포스팅 실력도 부족해. (웃음)