![[블로깅]객체 지향 프로그래밍](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2HjI7%2FbtsICiY140R%2FbKecIT0ysb2z8ms8X9fV01%2Fimg.jpg)
인트로
오늘 과제가 다 블로깅이라 계속 올라올 것 같네요 포스트 개수 늘리기 개꿀..?
이번에는 객체 지향 프로그래밍에 대해서 알아보겠습니다.
객체 지향 프로그래밍(OOP) 탄생
객체 지향 프로그래밍(Object Oriented Programming) 이전에 절차 지향 프로그래밍(Procedural Programming)이 있었다..?! (C, 포트란이 절차적 언어에 해당됩니다.)
절차적 언어는 순차적인 명령의 조합을 말합니다. 절차 지향 프로그래밍은 함수로 이동하는 게 전부였다면...
객체 지향 프로그래밍 등장 이후 데이터와 기능을 한 번에 묶어 처리할 수 있게 되었습니다.
(Java, C++ 등이 객체 지향 언어에 해당됩니다.) JS는 객체 지향으로 작성이 가능합니다.
OOP는 객체로 그룹화됩니다. 객체 내에는 데이터와 기능이 함께 있습니다.
OOP Basic Concepts
oop에는 네 가지 기본 개념이 있습니다.
Encapsulation (캡슐화)
데이터와 기능을 하나의 단위로 묶는 것을 말합니다.
데이터(속성)와 기능(메서드)들이 느슨하게 결합되는 것입니다.
여기서 느슨한 결합은 절차적 코드 작성이 아니라 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것을 말한다고 합니다. 언제든 구현을 수정할 수 있습니다.
캡슐화는 은닉이라는 특징도 포함하고 있습니다. 은닉은 구현을 숨시고 동작을 노출 시키는 것입니다.
장점 : 코드를 복잡X, 재사용성을 높입니다.
Inheritance (상속)
부모의 클래스 특징을 자식 클래스가 물려받는 것을 말합니다.
장점 : 재사용성을 높입니다.
Abstraction (추상화)
내부 구현은 복잡하지만 실제 노출 되는 부분은 단순하게 만드는 것을 말합니다.
추상화를 통해 인터페이스가 단순해집니다. 필요한 기능만 노출시켜 예기치 못한 사용상 변화를 일어나지 않게 막습니다.
메서드와 속성만 정의한 것을 인터페이스라고 부릅니다.
장점 : 코드 복잡X, 단순화된 사용으로 변화에 대한 영향을 최소화합니다.
Polymorphism (다형성)
다향한 형태를 가질 수 있음을 말합니다. 이부분을 읽을 때 바로 이해가 가지는 않았는데요.
예시를 보겠습니다. (from 위키)
어떤 값을 문자열 형식으로 변환해야한다고 합시다. 다형성이 없는 언어의 경우 다음과 같이 작성해야합니다.
//숫자를 문자열로 바꾸는 경우
string = StringFromNumber(number);
//날짜를 문자열로 바꾸는 경우
string = StringFromDate(date);
다형성 언어의 경우 StringValue와 같은 범용 메서드를 정의하여 값의 종류에 상관없이 변환할 수 있습니다.
//숫자를 문자열로 바꾸는 경우
string = number.StringValue();
//날짜를 문자열로 바꾸는 경우
string = date.StringValue();
다형성 성질을 가지자 추상도가 높은 변환 형식 구현이 가능해졌습니다.
장점 : 동일한 메서드에 대해 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능해집니다.
객체 지향 프로그래밍에 대해서는 나중에 더 자세하게 다뤄보긴 해야할 것 같습니다.
그럼 20000
코드스테이츠 & 위키 백과 내용을 참고하였습니다.
'BootCamp' 카테고리의 다른 글
[블로깅]REST-API (4) | 2023.03.29 |
---|---|
[React-twittler] 자식 컴포넌트에서 부모 컴포넌트로 데이터 보내기 (0) | 2023.03.24 |
[블로깅]클래스와 인스턴스 (0) | 2023.03.15 |
[기술면접]Section1 기술면접 준비 (0) | 2023.03.13 |
[BootCamp/TIL]아고라스테이츠만들기 (0) | 2023.03.10 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!