프로그래밍 이론/기본 이론

객체 지향프로그래밍 과 함수형프로그래밍

minquu 2021. 9. 2. 18:25
반응형

객체 지향 프로그래밍(OOP)

객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임중 하나

프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고

그 객체들 간의 유기적인 상호적을 통해 로직을 구성하는 프로그래밍 방법 중 하나이다. 

특징으로는 프로그램을 유연하게 변경이 가능해서 대규모 소프트웨어 개발에 많이 사용

자료 추상화, 상속, 다형개념, 동적 바인딩, 다중 상속 등의 특징이 존재한다. 

 

객체 지향 프로그래밍의

장점

1. 코드 재사용이 용이

남이 만든 클래스를 가져와서 이용할 수 있고, 상속을 통해서 확장가능

2. 유지보수가 쉬움

절차 지향 프로그래밍에서는 코드를 수정해야할 때 일일이 찾아서 수정해야하는 반면

객체지향 프로그래밍에서는 수정해야할 부분의 클래스 내부에서 변수 혹은 메서드로 있기 떄문에

그 부분만 수정해주면 됌

3. 대형 프로젝트에 적합

클래스 단위로 모듈화시켜서 개발 할 수 있으므로 대형 프로젝트처럼 여러명, 여러회사에서 개발 할 때

분담 업무하기 쉬움

 

단점 

처리속도가 상대적으로 느림

객체가 많으면 용량이 커질 수 있음

설계시 많은 시간과 노력이 필요함

 

 

객체 지향 프로그래밍의 키워드 5가지

1.클래스 + 인스턴스(객체)

2.추상화

3.캡슐화

4.상속

5.다형성

 

 

즉, 객체지향 프로그래밍은 실제로 우리가 사물을 바라보는 관점, 그리고 그 사물들의

연계성을 생각하는 관점을 프로그래밍에 적용하여 모델링하는 패러다임을 말한다.

 

 

 

 

 

------

 

함수형 프로그래밍의 정의

함수는 코드 체계의 기초이다. 함수는 고차 프로그래밍 언어에 존재한다.

일반적으로 함수형 프로그래밍은 깔끔하고 유지보수가 용이한 스포트웨어를 만들기 위해서 최대한 효과적으로

함수를 사용하는 것을 의미한다. 더 구체적인 의미로는 하나의

프로그래밍 패러다임으로 정의되는 일련의 코딩 접근 방식이다. 

 

함수형프로그래밍은 거의 모든 것을 순수 함수로 나누어 문제를 해결하는 기법

작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 해준다.

 

 

 

 

함수형 프로그래밍의 특징

순수성

함수형 프로그래밍의 이상은 순수 함수이다.

순수 함수는 결과가 오로지 입력 매개변수에 의해서만 좌우되면 연산이 아무런 부작용을 일키지 않는,

즉 반환 값 이외의 외부 영향이 없는 함수이다. 

 

변수 z 가 선언이 되었지만,

add 라는 함수에는 전혀 관여하지 않는 것을 볼 수 있다.

 

 

justTen 가 순수 함수라면 상수만 반환 할 수 있다.

파라미터 값을 주지 않았기 때문에, 입력된 파라미터 외에는 어떠한 것도 접근 할 수 없다.

그러므로 이 함수가 반환할 수 있는 것은 상수 밖에 없다.

 

이는 객체 메소드가 객체의 상태와 상호작용 하도록 설계되는 OOP와 대비되면,

외부 상태가 함수 내에서 조작되는 경우가 많은 절차적 스타일 코드와도 대비된다.

 

불변성

함수형 프로그래밍 철학의 또 다른 특징은 함수 외부에서 데이터를 수정하지 않는 다는 것이다.

실무에서 이는 함수에 대한 입력 인수를 수정하지 않는 것을 의미,

대신 함수의 반환값은 수행된 작업을 반영해야 부작용을 피할 수 있다. 

 

함수형 프로그래밍 변수가 없기 때문에 위와같은 식은 말이 안된다.

 

 

일급함수

순수 함수 이상 외에, 실제 함수형 프로그래밍 코딩을 좌우하는 요소는 일급 함수다.

일급 함수는 독립적으로 취급이 가능한 '물자체(thing in itself)' 함수

 

 

 

 

 

------

 

객체지향만 사용한 나로서는 꽤나 생소한 함수형 프로그래밍.

생각보다 흥미로운 프로그래밍 패러다임이라고 생각한다.

개발 크기가 커짐에 따라서, 스파게티 처럼 엉켜있는 코드를 유지보수 하기 어렵다는 말이 재미있다.

함수형은 순수 함수로 나누어 문제를 해결 한다는 것.

객체 지향의 클래스와 변수에 익숙한 나로서는 신기한 방법론이다.

 

  

반응형