(해당 포스팅은 개인적인 공부를 위해 정리한 내용입니다. 부족한 부분이 있다면 댓글로 알려주시면 보완하겠습니다!)
<목차>
1. 객체지향 프로그래밍이란? OOP 는 어떤 것일까?
2. 클래스란?
3. 객체(인스턴스) 란?
1. 객체지향 프로그래밍이란? OOP 는 어떤 것일까?
우리가 살고 있는 세상은 수많은 객체들로 이루어져 있습니다.
지금 바로 주변을 둘러봐도 컴퓨터/ 모니터/ 마우스 등의 객체가 있고, 심지어는 우리 자신도 하나의 객체가 될 수 있습니다.
각각의 객체는 속성과 행동을 가지고, 해당 속성과 행동이 가지는 내용과 특징에 따라서 독립적인 객체가 되지만,
또한 크게는 같은 범주에 속하기도 합니다.
우리도 역시 이름, 생김새, 체격, 성격등이 다른 서로 다른 독립적인 객체이지만, 결국은 모두 인간이라는 커다란 범주에 포함됩니다.
이런 논리가 프로그래밍에도 적용가능합니다.
예를들어 온라인 쇼핑 어플리케이션을 구축할 때,
주문에 대한 정보, 고객에 대한 정보, 장바구니 프로세스, 결제 프로세스 등 많은 데이터를 다룰 변수와 함수들이 필요합니다.
이처럼 프로젝트의 규모가 커지게 되면 프로그램을 작동시키기 위해 수많은 코드가 작성됩니다.
그런데 만약 이 코드들이 여기저기 흩어져 있다면 가독성이 떨어지고 유지보수가 힘든 '스파게티' 코드가 됩니다.
객체지향 프로그래밍은 이런 문제를 해결하기 위해서
연관된 변수와 함수들을 한 덩어리로 묶어서
구조화하여 표현하는 프로그래밍 스타일을 말합니다.
즉, 우리의 주변을 둘러싸고 있는 사물/객체의 개념을 프로그래밍에 대입시켜 덩어리로 묶어서 코드를 작성한다고 이해하면 됩니다.
그럼 위에서 말한 온라인 쇼핑 어플리케이션에서는 어떤 것들이 객체가 될 수 있을까요?
생각해보기 앞서 무엇을 하는 어플리케이션인지 먼저 고민해봅시다.
이 어플리케이션으로 우리가 기대할 수 있는 것은
'손님이 물건을 장바구니에 담아서 주문하고 결제한다.'
는 것입니다.
여기서 명사에 해당하는 부분은 빨간색 음영처리된 부분입니다.
이런 단어는 객체지향 프로그래밍에서 잠재적으로 객체가 될 수 있습니다.
즉 우리가 어플리케이션을 만들 때, 실제 세상에 존재하는 객체와 같은 단위로 쪼개고,
이런 객체(관련된 변수와 함수들의 집합)들이 서로 상호작용 함으로써 시스템이 동작하는 것을 객체지향 프로그래밍이라고 합니다.
2. 클래스란?
그렇다면 객체지향에서의 Class(클래스)는 무엇일까요?
객체와 클래스는 아주 밀접한 관련이 있습니다.
객체는 클래스를 통해 만들어질 수 있고,
클래스는 객체의 뼈대, 설계도, 생산틀에 해당하는 것이라고 이해하면 좋습니다.
아래 코드에서 직원에 대한 정보를 담은 변수와 직원에 대한 정보를 출력하는 함수를 포함하는 Employee 클래스를 확인할 수 있습니다.
클래스 안에서 정의된 함수들은 클래스 안에서 정의된 변수에 this 키워드를 사용해서 접근이 가능합니다.
따라서 클래스 안에서 정의되지 않은 함수들보다 적은 매개변수를 가지게 됩니다.
매개변수가 적을수록 조금더 쉽게 함수를 사용할 수 있고, 쉬운 유지보수가 가능하기 때문에 더욱 깔끔한 코드를 작성할 수 있습니다.
클래스 내에서 정의된 변수를 프로퍼티
클래스 내에서 정의된 함수를 메서드 라고 부릅니다.
3. 객체(인스턴스) 란?
OOP에서 클래스는
객체를 만들어 내기 위한 설계도, 생산 틀 이라고 표현됩니다.
위에서 만든 클래스를 기반으로 객체를 생성해 보겠습니다.
클래스를 통해 객체를 생성할때 클래스의 새로운 인스턴스를 만든다는 용어를 사용합니다.
위와 같은 방식으로 붕어빵틀에서 붕어빵을 찍어내듯이,
객체에서 추가적으로 필요한 프로퍼티와 메서드를 각각 추가해서 만들어낼 수도 있습니다.
간단하게 객체지향 프로그래밍이 무엇인지에 대해 알아보았습니다.
하지만 객체지향 프로그래밍이라는 단어는 추상적인 개념이라
추가적으로 찾아보시고 실제고 코드를 작성해보시면서 이해하시는 것을 추천드립니다!
부족한 글 읽어주셔서 감사합니다.
오늘도 즐코하세요!!! :)
참고자료
https://www.youtube.com/watch?v=dy9yQIx38u8
https://www.youtube.com/watch?v=bdXnsyelOGg
https://www.youtube.com/watch?v=cg1xvFy1JQQ&t=575s
https://poiemaweb.com/js-object-oriented-programming
https://ko.wikipedia.org/wiki/객체_지향_프로그래밍
'Web' 카테고리의 다른 글
HTTP 와 HTTPS 는 무엇일까? (0) | 2022.05.04 |
---|---|
[Library] Helmet - header에 사용함으로써 express 보안 강화 (2) | 2022.05.04 |
프로토타입 이란? (Prototype) 자바스크립트 핵심 개념 (0) | 2022.05.01 |
[ MySQL ] primary key / unique key 비교 (0) | 2022.04.29 |
VSCode 주석 색깔 변경하기 (0) | 2022.04.27 |