[TIL][OOP(Object-Oriented Programming] OOP의 4가지 특징

김태수·2020년 10월 30일
0
post-thumbnail

객체지향의 네가지속성

새롭게 알게 된 객체지향의 네가지 속성에 대하여 머리속에 1분이라도 더 묶어놓기 위해서
정리를 해 보자!

캡슐화 Encapsulation

인스터스들을 생성하기 위해 클래스안에 인스턴스들의 유전자 정보를 담아둔다고 생각하면 된다. 여기서 유전자 정보는 property 및 method 들이 된다. 해당 정보들을 캡슐화 하여 저장해 두기 때문에 코드의 재사용성에 있어 유리해진다!

또한 객체 외부에서 내부 데이터의 접근을 제한해주는 기능도 있다고 한다.
이 부분에대해서는 아직 잘 이해할수 없지만 추후 업데이트 하도록 하겠다!

추상화 Abstraction

추상화의 경우는 객체지향 뿐만 아니고, 기본적인 프로그래밍 에서도 중요하다는 생각이 들었다.
예를 들어, 함수와 변수명을 잘 짓는것 부터가 중요하다.
복잡한 코드를 줄줄이 다 읽고나서 이해하는것 보다는 변수의 이름 또는 함수,메소드의 이름 만으로 기능이 무엇인이 유추 가능하게 해야한다.. 앞으로는 단순히 혼자서 콘솔창에 쳐보는것도
const a = 'somting..'; let arr = [];
이런식의 행동은 자제해야겠다...

상속 Inheritance

캡슐속에 소중히 모아둔 부모의 속성 (위에서의 유전자 정보) 를 자식이 물려받는다!
그러나 현실에서도 그렇듯 부모가 물려준 소중한 속성을 소중히하지 않고 변형시키거나 새로 자신만의 속성을 추가해 사용할 수 있다. 身體髮膚 受之父母

다형성 Polymorphism

오버로딩과 오버라이딩으로 크게 볼 수 있으며, 자바스크립트 상에서는 오버라이딩에 대해서만 생각하면 된다.
오버라이딩(method overriding)은 위 상속에서 잠깐 말했듯이 자손 클래스가 부모가 물려준 클래스에 대해서 재정의를 하거나 변형을 가하는 것을 뜻한다.
메소드 오버라이딩을 하였다면 그 아래 자손들은 오버라이딩 이후의 메소드 기능만 불러와질뿐, 순수했던 오버라이딩 이전의 메소드는 더이상 그들에게 남아있지 않다.

물론 최초 해당메소드를 생성했던 부모와 오버라이딩 이전의 자손들은 기존 기능을 계속해서 사용할 수 있다.

변형이 일어난 메소드는, Object.create에 의한 복사본일 뿐,
프로토타입 체인에 따라 사용하면 된다.

객체지향에 대해 공부하며..

절대 100% 이해 했다고는 말하지 못하지만, 직접 코드를 작성 해 보고 ES6 방식과 ES5의 Pseudoclassical 방법에 대해서는 어느정도 알게된것 같다..
추가적으로 더 알게되는 내용이 있다면, 계속해서 추가해 나가겠다!

profile
개발학습 일기

0개의 댓글