Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

체대출신 코더의 개발자 성장기

OOP 의 필요성에 대한 깨달음 본문

CodeStates/TIL

OOP 의 필요성에 대한 깨달음

미토콘크리트 2019. 10. 8. 02:22

OOP란?

OOP(객체지향프로그래밍) 은 캡슐화, 추상화, 상속성, 다형성 의 네가지 성질을 띄는 개발 방식이다.

하지만 나는

그동안 왜 굳이 객체지향 프로그래밍을 해야하는지의 필요성을 몰랐다.
하지만 오늘 대충 감이와서 삘이 꽂힌김에 기록을 남겨보려한다.
OOP의 필요성은 어떤 물건을 설계하고 제작하는 과정에 빗대어 보면 이해가 쉽다고 생각한다.
컴퓨터를 예로 들어보자

컴퓨터는 많은 부품(CPU,GPU,RAM,SSD,Power)들이 조합되어야, 그 기능을 수행할 수 있다.
하지만 더 좋은 성능을 원한다면 우리에겐 두 가지의 선택지가 있다.
1. 새로운 컴퓨터를 산다.
2. 새로운 부품을 산다.

과연 두 방식 중 효율적인 방식은 무엇일까?

나는 개인적으로 2번 이 효율적이라고 생각한다.
이유는 새로 모든 것을 바꾸는 것은 금전적인 리소스의 낭비를 줄일 수 있기 때문이다.
만약, 새로 바꾼 컴퓨터에 이전에 쓰던 부품들이 너무나도 많이 들어있다면? 굉장히 돈이 아까울 것이다.
배보다 배꼽이 크다라는 표현을 이때 써야 하지 않을까?

객체지향에 빗대어 설명해보기

OOP가 필요한 이유는 OOP적인 프로그래밍을 보통 다음과 같이 이뤄지기 떄문이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Computer = new Computer()
 
Computer.CPU(){
    기능1()
}
 
 
Computer.RAM(){
    기능2()    
}
 
Computer.SSD(){
    기능3()    
}
cs

와 같은 식으로 개발이 이루어진다.
따라서 OOP적으로 코드를 작성한다면 새로 업데이트 하고 싶은 기능이 생길 때, 컴퓨터 인스턴스를 통째로 갈아버리기 보단
컴퓨터 인스턴스 안의 함수의 내용만 업데이트 해주면 되기 때문에, 현실적이고 다루기 쉽다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//하지 말아야할 방식
delete Computer
 
//OOP에서 가능한 방식1 - 기능1을 업데이트
Computer.CPU.기능1(){
    기능1 재정의
 
//OOP에서 가능한 방식2 - 기존기능 삭제 및 새기능 
delete Computer.CPU.기능1 
 
Computer.CPU.기능5(){
    기능5 정의
}
 
cs

따라서 현실성과 유지보수의 용이함 때문에 OOP적인 개발이 필요한 것 같다.

'CodeStates > TIL' 카테고리의 다른 글

HTTP의 특성  (0) 2019.09.05
도커  (0) 2019.07.29
node.js와 장고와 DB 연결  (0) 2019.07.28
구글어시스턴트와 노드서버를 잇기2  (0) 2019.07.26
구글 어시스턴트와 노드 서버를 잇기1  (0) 2019.07.26
Comments