프론트엔드 개발자가 되기위한 여정 -54

이정우·2022년 10월 26일
0

frontend-bootcamp

목록 보기
57/60

밸!하~

밸로그여러분 안녕하세요!

오늘은 OOP vs FP에 대해서 알아보겠습니다

코딩을 하거나 개발을 하시는분이라면 한번정도는 들어보셨을만한 주제죠!

바로 알아볼까요??

1. OOP

가장 유명한 개념이죠
네!
맞습니다 바로
Object Oriented Programming입니다!
객체 지향 프로그래밍이죠!
얼마나 중요한개념이냐면 대학교 과정중에 꼭 포함이 되어있는 과정이기도 한데요
그 이유를 바로 알아볼까요??

객체지향프로그래밍이 나오기전에는 절차적 언어인 C를 사용해서 주로 개발을 했었습니다
하지만 불편한 점이 있었는데요
바로 절차형이다 보니 다른 위치에 선언한 내용을 가져오기가 힘듭니다!
또한 한번만든 코드를 재사용에도 어려웠는데요

그럼 객체지향 프로그래밍은 이러한 부분을 어떻게 개선했고 어떤 특징을 가지고있는지 알아보겠습니다!

객체지향의 특징은 크게 4가지로 나눌수있는데요
캡슐화 추상화 다형성 상속성
이렇게 4가지 입니다
한개씩 봐볼까요??

먼저

캡슐화

입니다

정의를 보게되면
객체의 내부 로직을 감추고 외부에는 상대적으로 안정적인 부분만을 공개함으로써 데이터를 안전하게 보존하는 기법입니다!
네! 맞습니다
바로 보안성이 높아진다는것인데요 이 캡슐화를 통하여 외부에 보여줄 로직과 숨길로직을 나눌수있습니다
또한
캡슐화를 통해 한개한개씩 나누다 보니
코드의 길이가 줄어들어
가독성이 뛰어나지는 효과가 있습니다
또한 이를통해서 협업을 하는데있어서 훨씬 수월해지게 됩니다!

그다음은

추상화

입니다

추상화의 정의를 보면

공통점을 찾아서 Class로 묶고 복잡한 디테일을 숨기고 핵심만 추출해내게 됩니다!
구현 세부사항 대신 큰 범위의 공통도니 기능측면에서 클래스를 개발하는 것인데요!

추상화를 통해 알지못하는 내용이더라도 큰 카테고리를 보며 이것이 어떠한 기능을 하는지 알수있습니다

예를 들어볼까요 ??
포인트를 충전하는 기능있다고 했을때 카카오페이지에서 충전하는것과 레진코믹스에서 포인트를 충전하는것은 충전을한다는 공통 기능을 가지고 있습니다 이때 충전기능으로 묶는건데요

이 추상화의 장점은 비슷한 기능을 가진것들이 근처에있기 떄문에 유지보수가 쉽고 어떤기능을 하는지 알기쉬워 가독성이 증가한다는 것입니다!

그다음은

상속

입니다!

상속의 개념을 알아볼까요??
부모의 클래스에서 하위의 클래스로 상속을 받는것입니다
쉽게 생각해서 유산을 상속받는다는 생각을 해보시면 좋을것같습니다

이 장점은
함수 내부에 기능을 선언하지 않은 기능도 부모의 클래스에서 만들어준다면
이를 통해서 자식의 클래스에서도 기능을 사용할수가 있다는 것입니다!

이를통해서 코드의 재사용성이 증가하게 됩니다!

마지막으로

다형성입니다!

정의를 먼저 봐볼까요??
같은이름을 가진 메소드라도 각 하위클래스의 상황에 맞게 다르게 구현될수있게 하는것을 말합니다!
즉 하나의 변수명 함수명이라도 상황에 따라 다르게 해석될수도있다는것인데요!

글로만봐서는 조금 어렵죠??

한번 코드를 통해서 봐볼까요 ??
잠깐 JAVA를 가져오겠습니다

public class Main
{
    public static void main(String[] args)
    {
        System.out.println("문자열 데이터");
        System.out.println(123456);
        System.out.println(true);
    }
}

위의 예제를 보게되면
한 함수내부에 System.out.println이 여러개 들어있는것을 볼수있습니다
이러한 것과같이 같은 이름을 사용할수가있습니다

자 이렇게 객체지향의 특징들을 알아보았습니다

이다음에는

Functional Programming
에 대해서 알아볼까요?

Functional Programming

먼저 함수형 프로그래밍의 정의에 대해서 보겠습니다

함수형 프로그래밍은 하나의 프로그래밍 패러다임으로 정의되는 일련의 코딩 접근 방식이며, 자료처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임을 의미합니다!

잘 이해가 안된다고요?
그럼 한번 글을 읽다보면 아시게될겁니다!

함수형 프로그래밍의 장점을 소개할수있도록 하겠습니다!

먼저
높은 수준의 추상화를 제공합니다
또한 함수단위의 코드 재사용이 증가함으로 인해서 같은것을 여러번 개발할 필요가 없어지게 됩니다!
또한 함수단위이기 때문에 어떤 함수에서 오류가 발생하였는지를 알수가 있어서 디버깅이 쉽습니다!

마지막으로 불변성을 지향하기 때문에 프로그램의 동작을 예측하기가 쉽다는겁니다!

개발하면서 가장 많이 부딪히는 것중에 하나가 바로 프로그램이 의도했던것과는 다르게 작동하는것인데요
함수형 프로그래밍을 적용시키면 이런부분이 어떻게 동작할지를 쉽게 알수있습니다!!

그러면 함수형프로그래밍은 어떤특징을 가지고있을까요??

먼저
1급객체라고 부르는 특징을 가지고있는데요

변수나 데이터 구조안에 담을 수 있습니다
또한 이것들을 파라미터로 전달 할 수 있으며
반환값(return value)으로 사용할 수 있습니다
그리고
할당에 사용된 이름과 관계없이 고유한 구별이 가능합니다
마지막으로 동적으로 프로퍼티 할당이 가능합니다

그다음은
고차함수입니다
HOC라고 부르는것인데요 이부분은

https://velog.io/@azerose/%ED%94%84%EB%A1%A0%ED%8A%B8-%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EB%90%98%EA%B8%B0%EC%9C%84%ED%95%9C-%EC%97%AC%EC%A0%95-25
이 글을 참고해주시면 좋을것같습니다

자 이렇게 오늘은 객체지향 프로그래밍과 함수형 프로그래밍에 대해서 알아보았는데요!

오늘도 부족한 지식 한개 축적해가는 시간이었습니다!

그럼 오늘도 이만
밸~바!

profile
주니어 프론트엔드 개발자

0개의 댓글