-
반응형
Object Oriented Programming의 약자로
객체의 관점에서 프로그래밍 하는 것
으로 프로그래밍 방식중에 하나입니다. 여기서의 객체는 우리 세상에서 실제로 볼 수 있는 존재하는 물체라고 정의 할 수 있습니다. 인간, 나무, 건물 등어떠한 특성과 행동을 정의
해 놓은 것이객체
입니다. 이 객체의 핵심은 이 "객체가 어느기능
을 제공하냐"입니다.ex)
사람 객체
- 특성: 이름, 나이, 키...
- 행동: 걷는다(), 잔다(), 먹는다()
볼륨 제어기
- 특성: 볼륨 크기
- 행동: 소리키우기(), 소리줄이기()
*절차지향 프로그래밍 는 완전히 다른 방식입니다. 절차지향은 전체적인 그림을 보기 힘듭니다. 또한 하나의 함수를 수정 했을 시에 발생하는 side effect를 감수하기가 힘듭니다. 이러한 단점들을 보완하기 위한 방법으로 객체지향이 탄생하였고 이를 더 선호하게 되었습니다. *절차지향 프로그래밍: 정의된 순서되로 절차적으로 함수가 하나씩 호출하는 방식
객체지향 프로그래밍은 이러한
객체들끼리 서로 상호작용, 소통하도록 디자인하고 코딩해나가는 방식
입니다.서로 관련있는 데이터와 함수
를객체로 정의
하게 됩니다.이는 어떠한 데이터를 수정해야되는 상황이 되었을 때 데이터와 관련된 객체만 수정해주면 해결 됩니다. 이는
유지보수
를 하는 것에 있어서 유리한 이점을 갖게 됩니다. 또한 이는 다른 사람과 프로젝트를 진행 할 시에도 이점을 갖게 됩니다. 내가 짠 코드를 다른 사람이 수정 하는 상황이 되었을 때에도 다른 사람들이 전체적인 코드를 모두 보지 않고 특정 객체만 수정해주면 됩니다. 이는 전체적인 프로젝트의생산성
이 올라가게 됩니다.결국 oop의 규칙을 잘 따른 프로젝트는
높은 생산성
,높은 유지보수성
,높은 퀄리티의 코드
를 갖게 됩니다.Class와 Instance
객체지향 프로그래밍을 이제 코드 관점에서 보겠습니다. 이 프로그래밍 방식은 객체들 끼리 상호작용하고 소통하는 방식이라고 했습니다. 프로그래밍을 할 때에 이러한 객체를 생성 할 수 있도록 그
틀을 정의
하는 방법이 있습니다. 바로 Class입니다.class는 객체를 생성하기 위한 틀
이라고 할 수 있습니다. 데이터가 들어 있지 않는 모양새만 정의하는 template이라고 생각하면 편합니다.객체는 기능을 제공한다고 했습니다. 이 기능은 객체 내부에서 메소드로 정의하면 됩니다.
// typescript class Person { name: string; age: number; constructor(name: string, age: number) { this.age = age; this.name = name; } eat() { ... } sleep() { ... } walk() { ... } }
위의
class를 이용하여 데이터를 넣게
되면 만들어지는 것이 바로instance
입니다.let choe = new Person("choe", 25); console.log(choe.age); choe.eat()
이제 실제로 데이터를 넣은 instance를 만들었습니다. 여기서 특정 객체에의 기능을 사용하는 방법입니다. 당연히 메소드를 호출하면 됩니다. eat() 이라는 기능을 사용하게 되는것입니다. 객체가 메소드를 호출하거나 객체와 객체간의 상호작용이 일어날 때에
메세지
를 주고 받았다라고 표현합니다.이외에도 객체지향의 특징인 4가지, 추상화, 상속, 캡슐화, 다형성등이 있습니다. 또한 이러한 프로그래밍 방식을 따르면서 지켜야 할 원칙도 존재합니다. 나머지 내용들도 정리해서 올리도록 하겠습니다.
반응형'코딩' 카테고리의 다른 글
OOP - 다형성 (0) 2021.09.28 OOP - 캡슐화 (0) 2021.09.27 자바스크립트 Prototype (0) 2021.09.20 자바스크립트의 기본적인 런타임 환경 (0) 2021.09.19 실행 컨텍스트 with Closure - 3 (0) 2021.09.16