객체지향 프로그래밍은 프로그램을 구현하는 방식 중 하나이다.
과거에는 프로그램을 기능 단위로 구현했다.
먼저 도메인을 분석하고 설계 -> 구현 -> 테스트 -> 배포의 순서로 프로그램이 만들어졌다.
만들고자하는 프로그램을 기능 단위로 더 이상 나눌 수 없을 때까지 세분화하고
가장 작은 단위별로 기능을 구현하고 그것들을 모아서 하나의 프로그램으로 만드는 방식이다.
이를 구조적 프로그래밍, 절차적 프로그래밍이라고한다.
이 방법의 장점은 분석과 설계가 쉽고 프로그램의 개발속도가 빨라 비용이 절감된다는 점이다.
하지만 코드의 결합도가 증가하여 프로그램의 유지보수가 어렵다는 단점이 있고,
대표적인 언어로는 C언어가 있다.
1990년대이후 인터넷이 보급되면서 사회가 급변하기 시작했다. 정보량이 급증했고 사용자의 요구가 늘어남에 따라 프로그램의 유지보수 요구가 급격히 증가했다.
하지만 이전에 절차적 프로그래밍으로 만들어진 프로그램들은 유지보수가 어렵다.
초기 개발비보다 유지보수에 더 많은 자원을 투자해야하는 상황이 된 것이다.
여기서 객체지향프로그래밍이다.
프로그램을 기능단위가 아닌 현실세계를 반영하여 현실세계의 모든 것을 객체로 보고
객체별로 프로그램을 구현하는 것이다.
대표적인 객체지향언어로 java가 있다.
이전의 단점을 보완하기위해서 만든 방법론이다보니 당연히 유지보수성이 좋다는 장점이 있다.
정확히 반대로 분석과 설계가 어려워 프로그램을 만들기가 어려워졌고 잘 된 설계, 잘 되지 않은 설계가 생겨났다.
객체지향이 무조건 좋은 프로그래밍 방법론은 아니다.
유지보수가 거의 필요없고 빠르게 만드는 것이 필요한 경우에는 절차적 프로그래밍이 더 적합하다.
경우에 맞는 프로그래밍 방법론을 선택하는 것이 중요하다.
객체지향설계는 현실세계를 그대로 반영한다.
현실세계의 개체(객체)를 프로그램으로 표현하는 것을 객체 모델링이라고 한다
class를 수단으로 객체모델링이 이루어진다.
아직 객체지향설계의 용어와 개념에 대해서 더 공부해야할 점이 많다.
파이썬에서 클래스를 만드는 방법은 다음과 같다.
class Student:
def __init__(self, name, dept, number, grade) : ##self에는 만들어진 객체의 주소가 들어감
self.stu_name = name
self.stu_dept = dept
self.stu_number = number
self.stu_grade = grade
stu1 = Student('아이유', '철학과', '201101', 3.5)
stu2 = Student('김연아', '컴퓨터', '20001123', 4.5)
stu3 = Student('신사임당', '영어영문', '20001124', 1.5)
함수이름 앞뒤에 _(언더바) 두 개씩 붙는 것을 magic method라고 한다.
이들은 함수이름으로 직접 호출하지 않는다.
__init__은 클래스로 객체를 만들때 자동으로 호출되어 초기화하는 함수이다.
self 키워드는 만들어진 객체, 정확히 말하면 인스턴스의 주소가 들어간다.
추후 참고
파이썬 객체지향(OOP) 정리
Chapter 1: 객체 지향 프로그래밍 시작하기Chapter 2: 객체를 만드는 법Chapter 3: 미리 알고가야 할 것들Chapter 4: 객체 만들기 연습Chapter 5: 객체 지향 프로그래밍 직접 해보기'속성'과 '행동'으로 이루어
velog.io
'Programming' 카테고리의 다른 글
20220425 코딩테스트&AI 공부일기 (0) | 2022.04.26 |
---|---|
conda install error : Retrying with flexible solve. (0) | 2022.03.18 |
remote: Internal Server Error (0) | 2022.03.18 |
깃허브 Readme 꾸미기에 사용한 링크 (0) | 2021.12.15 |
[Android Studio] setText로 숫자 출력하기 (계산기 앱 실습) (0) | 2021.10.15 |