[하루 한시간] 객체와 객체지향 프로그래밍

신지웅·2023년 3월 26일
0

하루 한시간

목록 보기
6/7

객체와 객체지향 프로그래밍

컴퓨터공학을 배우면서 객체 지향에 대한 얘기는 많이 들었다. 하지만, 내가 객체지향 프로그래밍을 제대로 알고 프로그래밍을 하는 것인가?라고 생각해보면 전혀 확신이 들지 않았다.

자바스크립트에서 JSON을 활용하여 뭔가 데이터의 구조를 만들어두고 코딩을 하기는 했으나 이게 맞는지도 모르고 그냥 했던 것 같다.

오늘은 그래서 자바스크립트의 객체에 대한 내용을 좀 봤다.

객체 (Object)

일단 객체라는 것은 배열과 비슷하다.

어떤 Key를 가지고 그에 해당하는 Property를 넘겨주는 방식이다. 이것이 배열에서는 index와 element로 대치된다.

다만, 객체에서는 여러가지 자료형을 마구잡이로 섞어서 묶어둘 수 있다. 심지어 함수도 같이 묶어둘 수 있다. 즉, 객체를 통해 어떤 속성과 그 속성을 활용한 액션을 정의할 수 있는 것이다.

이러한 이유로, 객체는 우리가 사는 현실에서의 어떤 것을 데이터화 시키는 데에 쓰인다.

생성자 함수 (Constructor)

학교에서 객체에 대한 내용을 배울 때, 생성자는 붕어빵 틀이고~ 객체는 붕어빵이야~이런 비유를 거의 항상 들었다.

생성자는 동일한 구조의 객체를 찍어내는 일종의 공장 기계같은 것이라고 생각하면 된다. 그러니 동일한 생성자를 통해 만들어진 객체는 그 안의 내용물은 다를지언정, 구조는 똑같이 생긴 것이다. 이를 통해서, 반복적으로 같은 구조의 데이터를 더욱 더 효율적이고 간결한 방식으로 만들 수 있다.

생성자의 이름은 구분을 위해 대문자로 시작한다. 그리고, 이를 통해 객체를 만들기 위해서는 new를 사용한다.

function Constructor1 () {…}

let product1 = new Contructor1(prop1, prop2, …)

한가지 덧붙이자면, 위에서 객체에는 함수 또한 포함이 될 수 있다고 했는데, 만약 생성자를 통해 함수를 포함시킨 골격을 만들기 위해서는, 생성자 안에 프로토타입 (Prototype)이라는 공간안에 정의를 해준다.

Constructor1.prototype.method1 = function(){…}

예를 들면 이런식이다.


이런식의 구조를 통해서 필요한 객체의 데이터 골격을 정의하고 이를 활용하여 프로그래밍을 진행하는 것이 객체 지향 프로그래밍의 기본적인 방식이라고 할 수 있다.

사실 생각해보면, 이전에 대강 JSON으로 구조를 잡아서 객체 리스트를 통해 데이터를 모아두는 방식은 온전하게 객체지향 프로그래밍을 활용한 것은 아니라고 생각된다.

이제부터는 프로젝트를 진행하는 단계에서 이러한 부분을 신경써서 골격을 잡아봐야겠다.

profile
WORLDWIDEWEB

0개의 댓글