코딩 공부 일지/JavaScript

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

헬로코딩 2022. 2. 23. 16:07
728x90

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

 

객체(Object)

 

객체는 키(Key)와 값(Value)으로 이루어진 정보들의 집합이다. 값에는 데이터가 들어올 수도 있고, 함수가 들어올 수도 있는데, 일반적으로 데이터는 프로퍼티, 함수는 메소드라고 부른다.

자바스크립트에서는 숫자, 문자열, 불리언과 같은 원시 데이터 타입(Primitive Data Type)을 제외하고는 모두 객체라고 볼 수 있다. 함수도 객체다.

 

객체의 형태

const dog = {
	name: '흰둥이',
	family: '말티즈',
	age: 1,
	eat: function() {
		alert('Feed Me!')
	},
	love: function() {
		alert('Hug Me!')
	}
}

 

위의 객체에서 객체의 값을 꺼내 쓸 때는 아래와 같이 표현할 수 있다.

 

dog.name // 흰둥이
dog.family // 말티즈
dog.age // 1
dog.eat() // alert('Feed Me!') 함수 실행
dog.love() // alert('Hug Me!') 함수 실행

 

위의 예제에서 보면 eat 메소드와 love 메소드를 사용한 것을 볼 수 있는데, 사실 자바스크립트에서 사용할 수 있는 내장된 메소드는 자바스크립트를 만든 개발자에 의해서 만들어진 내장 메소드를 가져다 쓰는 것이라고 볼 수 있다.

 

Class와 인스턴스

 

흔히 Class와 인스턴스를 설명하는 예로 자동차 설계도면과 자동차를 예로 든다. 자바스크립트에서 Class는 HTML의 class 와는 다르다. Class 는 그 자체로 객체이기도 하지만, 새로운 객체 ⇒ 인스턴스를 생성하는 설계도면이라고 볼 수 있다.

 

Class의 형태

class Dog {
	constructor(name, family, age) {
		this.name = name,
		this.family = family,
		this.age = age
	}
	eat() {
		alert('Feed Me!')
	}
	love() {
		alert('Hug Me!')
	}
}

 

constructor는 Class가 가지는 메소드로 ‘생성자’라고도 부른다. constructor는 Class 당 하나만 가질 수 있다. constructor 안에서 this가 가리키는 것은 Dog Class 그 자체다.

위의 Class를 이용해서 새로운 Dog를 생성하면 아래와 같다.

 

const dog1 = new Dog('흰둥이', '말티즈', 1);
const dog2 = new Dog('검둥이', '도베르만', 8);

 

객체 지향 프로그래밍

 

객체 지향 프로그래밍은 프로그래밍 방법론 중 한 가지다. 어떻게 프로그래밍을 할 것인가에 대한 패러다임을 논하는 것이라고 볼 수 있다.

프로그래밍 방법론에는 아래와 같은 것들이 있다.

 

절차적 프로그래밍 순차적 명령 수행을 기본으로 하는, 단순한 스타일의 코딩 방식
ex) C언어
객체 지향 프로그래밍 모든 것을 객체로 표현하고 객체를 조립해가며 프로그램을 완성하는 방법
ex) Java, Ruby, C++
선언형 프로그래밍 주어진 문제에 정형화된 범용 문제 해결 알고리즘을 적용하는 방식
ex) SQL
함수형 프로그래밍 함수들의 집합/조합으로써 프로그램을 구성, 큰 틀에서 선언형 프로그래밍 기법에 속함
ex) LISP, Scheme, Haskell
논리형 프로그래밍 기호 논리학에 기반을 두고, 데이터 간의 관계와 논리로써, 프로그래밍을 함

 

이 중 객체 지향 프로그래밍은 대상(객체, Object)을 만들어서 대상을 부품을 조립하듯이 구축해서 하나의 프로그램을 만드는 방식의 프로그래밍 방식이다. 프로그래밍은 현실의 문제들을 해결하기 위해 존재하기 때문에 현실의 문제들과 연결지어 생각하면 이해하기 쉽다.

예를 들어, 영화 예매를 관리하는 프로그램이 있다고 가정하면, 영화라는 객체, 좌석 객체, 상영시간표 객체 등이 있을 것이다. Class는 그 각각의 객체의 틀을 만들고 실제 데이터를 담아 인스턴스를 생성시킨다. 그 것들을 조합해 영화 예매 프로그램을 만드는 방식이 바로 객체 지향 프로그래밍이라고 할 수 있다.

728x90