객체지향

Bin2·2022년 5월 25일
0

객체 지향 프로그래밍이란?

하나의 청사진(class)를 만들고,
그 청사진을 바탕으로 한 객체(instance)를 만드는 프로그래밍 패턴

객체 생성 방법

// ES5
function Person(name, age) {
	// property
  this.name = name;
	this.age = age;
}

// method
Person.prototype.sayHello = function() {
	console.log(`Hi, ${this.name} !`)
}

// ES6
class Person {
	constructor(name, age) {
		// property
		this.name = name;
		this.age = age;
	}
	
	// method
	sayHello() {
		console.log(`Hi, ${this.name} !);
	}
}

let sangbin = new Person('sangbin', 40);
let dahyun = new Person('dahyun', 50);

OOP의 4가지 특징

1. 캡슐화

  • 데이터와 기능을 하나의 단위로 묶는 것
  • 은닉 → 내부 데이터나 내부 구현이 외부로 노출되지 않도록 함
  • 느슨한 결합 → 코드를 절차 지향적으로 작성하는 것이 아닌, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합
  • 코드가 복잡하지 않게 만들고, 재사용성을 높임

2. 추상화

  • 내부 구현은 복잡하지만, 실제로 노출되는 부분은 단순하게 만든다는 개념 → 인터페이스 단순해짐
  • 캡슐화와의 차이
    • 캡슐화 → 데이터의 은닉에 포커스
    • 추상화 → 필요하지 않은 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것에 포커스
  • 불필요한 코드를 줄임
  • 단순화된 사용으로 변화에 대한 영향을 최소화

3. 상속

  • 기본 클래스(부모)의 특징을 파생 클래스(자식)에게 상속 가능
  • 불필요한 코드를 줄여 재사용성을 높임

4. 다형성

  • 다양한 형태를 가질 수 있음
  • 동일한 메서드에 대해 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능
profile
Developer

0개의 댓글