OOP(Object oriented programming: 객체지향프로그래밍)이란
정의 찾아보기 위해서 많은 구글링을 시도 했지만, 'OOP는 ~ 이다'라는 정의는 없었다.(한마디로 정의하기는 어려운거 같다. 컴퓨터는 무엇인가처럼)
서로 연관되어 있는 프로그램을 모아두는 프로그램의 방식, 또는 방법론(어떤식으로 프로그램을 짤 건지)
왜 만들어졌을까?
프로그래밍을 더 쉽고 더 잘하기위해서 만들어 진 개념인거 같다.
간단히 설명하자면 프로그래밍을 간결하고 쉽게하고 공통적인 기능이 있다면
하나로 묶어서 사용하는프로그랭의 방법
OOP에서 특징에 대해서 알아보자.
캡슐화란 이름 그대로 뭔가 보호한다는 의미다. 객체를 생성할 때, 외부에서 프로퍼티에 접근할 수 있도록 설정하면서 동시에 특정 프로퍼티에는 접근할 수 없도록 하고 싶다면 캡슐화를 이용하면 된다.(뭔가 한국말이지만 어렵다;;)
만약 자식클래스 부모클래스가 있다고 가정을 한다면
자식 클래스는 부모 클래스의 모든 메서드를 상속받고,
상속받은 메서드중 일부를 수정하고 싶은 경우에만 해당 메서드를 정의하는 것을 우리는 캡슐화(encapsulation)이라고 부른다. 이 정의는 MDN공식문서에 있는 내용이다.
코드는 다음에 첨부해서 리뷰를 해보야겠다.(캡슐화라는 개념을 잡기 어렵다ㅠ)
- 상속(inheritance)
이해하기 쉬운용어가 나왔다.(딱 용어만 봐도 알거 같다 드라마중에 상속자도 있다)
자바스크립트에서는 부모 클래스의 인스턴스를 자식 클래스에 할당함으로써 상속이 이루어진다.
예를들어 A ,B 라는 Class를 만들었다고 가정을 해보자.
B의 기능은 A의 기능을 포함하고 있다고 한다면 코드를 복사해서 붙여넣어도 되지만, 상속기능을 쓴다면 좀 더 가독성 및 편리 할것이다. 여기서 본다면 A class는 부모클래스이고 B class는 자식클래스라고 볼 수 있다.
MDN에 있는 상속예시 코드이다.
function Person() {}
Person.prototype.walk = function(){
alert ('I am walking!');
}; // Person은 걷는 기능을 가지고 있다.
Person.prototype.sayHello = function(){
alert ('hello'); Person은 sayHello라는 기능을 가지고 있다
};
// define the Student class
function Student() {
// Call the parent constructor
Person.call(this); //
}
Stdudent.prototype = new Person();
// Student도 인사기능 및 걷기기능을 가져야 한다면 위에 코드를 그대로 치면 되겠지만
// 상속기능을 쓴다면 코드를 길이 및 가독성이 좋아진다.
상속에 대해서는 좀 더 적고 싶지만 따로 분리를 해서 좀 더 세밀하게 다룰계획이다.
레슨을 듣고 추후에 내용을 더 적어야겠다.